Skip to content

Commit b1d072b

Browse files
authored
feat(testing): expose all types for util mocked (#2096)
Closes #2086
1 parent f47c016 commit b1d072b

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/utils/testing.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
type MockableFunction = (...args: any[]) => any
2-
type MethodKeysOf<T> = { [K in keyof T]: T[K] extends MockableFunction ? K : never }[keyof T]
3-
type PropertyKeysOf<T> = { [K in keyof T]: T[K] extends MockableFunction ? never : K }[keyof T]
4-
type ArgumentsOf<T> = T extends (...args: infer A) => any ? A : never
5-
type ConstructorArgumentsOf<T> = T extends new (...args: infer A) => any ? A : never
1+
export type MockableFunction = (...args: any[]) => any
2+
export type MethodKeysOf<T> = { [K in keyof T]: T[K] extends MockableFunction ? K : never }[keyof T]
3+
export type PropertyKeysOf<T> = { [K in keyof T]: T[K] extends MockableFunction ? never : K }[keyof T]
4+
export type ArgumentsOf<T> = T extends (...args: infer A) => any ? A : never
5+
export type ConstructorArgumentsOf<T> = T extends new (...args: infer A) => any ? A : never
66

7-
interface MockWithArgs<T extends MockableFunction> extends jest.MockInstance<ReturnType<T>, ArgumentsOf<T>> {
7+
export interface MockWithArgs<T extends MockableFunction> extends jest.MockInstance<ReturnType<T>, ArgumentsOf<T>> {
88
new (...args: ConstructorArgumentsOf<T>): T
99
(...args: ArgumentsOf<T>): ReturnType<T>
1010
}
1111

12-
type MaybeMockedConstructor<T> = T extends new (...args: any[]) => infer R
12+
export type MaybeMockedConstructor<T> = T extends new (...args: any[]) => infer R
1313
? jest.MockInstance<R, ConstructorArgumentsOf<T>>
1414
: T
15-
type MockedFunction<T extends MockableFunction> = MockWithArgs<T> & { [K in keyof T]: T[K] }
16-
type MockedFunctionDeep<T extends MockableFunction> = MockWithArgs<T> & MockedObjectDeep<T>
17-
type MockedObject<T> = MaybeMockedConstructor<T> &
15+
export type MockedFunction<T extends MockableFunction> = MockWithArgs<T> & { [K in keyof T]: T[K] }
16+
export type MockedFunctionDeep<T extends MockableFunction> = MockWithArgs<T> & MockedObjectDeep<T>
17+
export type MockedObject<T> = MaybeMockedConstructor<T> &
1818
{ [K in MethodKeysOf<T>]: T[K] extends MockableFunction ? MockedFunction<T[K]> : T[K] } &
1919
{ [K in PropertyKeysOf<T>]: T[K] }
20-
type MockedObjectDeep<T> = MaybeMockedConstructor<T> &
20+
export type MockedObjectDeep<T> = MaybeMockedConstructor<T> &
2121
{ [K in MethodKeysOf<T>]: T[K] extends MockableFunction ? MockedFunctionDeep<T[K]> : T[K] } &
2222
{ [K in PropertyKeysOf<T>]: MaybeMockedDeep<T[K]> }
2323

0 commit comments

Comments
 (0)