From d8302b867b8c1983840d392cec068e01bfc93d87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Sun, 10 Feb 2019 13:20:57 +0100 Subject: [PATCH 1/4] chore: followup to jest-mock TS migration --- packages/jest-mock/src/index.ts | 58 ++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/packages/jest-mock/src/index.ts b/packages/jest-mock/src/index.ts index 9e6450e093ba..5a51feeca34c 100644 --- a/packages/jest-mock/src/index.ts +++ b/packages/jest-mock/src/index.ts @@ -53,6 +53,16 @@ type MockFunctionConfig = { specificMockImpls: Array; }; +// see https://github.com/Microsoft/TypeScript/issues/25215 +type NonFunctionPropertyNames = { + [K in keyof T]: T[K] extends (...args: any[]) => any ? never : K +}[keyof T] & + string; +type FunctionPropertyNames = { + [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never +}[keyof T] & + string; + interface Mock extends Function, MockInstance { @@ -328,12 +338,12 @@ function isReadonlyProp(object: any, prop: string): boolean { } class ModuleMockerClass { - _environmentGlobal: Global; - _mockState: WeakMap, MockFunctionState>; - _mockConfigRegistry: WeakMap; - _spyState: Set<() => void>; + private _environmentGlobal: Global; + private _mockState: WeakMap, MockFunctionState>; + private _mockConfigRegistry: WeakMap; + private _spyState: Set<() => void>; + private _invocationCallCounter: number; ModuleMocker: typeof ModuleMockerClass; - _invocationCallCounter: number; /** * @see README.md @@ -349,7 +359,7 @@ class ModuleMockerClass { this._invocationCallCounter = 1; } - _getSlots(object?: Object): Array { + private _getSlots(object?: Object): Array { if (!object) { return []; } @@ -396,7 +406,9 @@ class ModuleMockerClass { return Array.from(slots); } - _ensureMockConfig(f: Mock): MockFunctionConfig { + private _ensureMockConfig( + f: Mock, + ): MockFunctionConfig { let config = this._mockConfigRegistry.get(f); if (!config) { config = this._defaultMockConfig(); @@ -405,7 +417,7 @@ class ModuleMockerClass { return config; } - _ensureMockState( + private _ensureMockState( f: Mock, ): MockFunctionState { let state = this._mockState.get(f); @@ -416,7 +428,7 @@ class ModuleMockerClass { return state; } - _defaultMockConfig(): MockFunctionConfig { + private _defaultMockConfig(): MockFunctionConfig { return { defaultReturnValue: undefined, isReturnValueLastSet: false, @@ -427,7 +439,7 @@ class ModuleMockerClass { }; } - _defaultMockState(): MockFunctionState { + private _defaultMockState(): MockFunctionState { return { calls: [], instances: [], @@ -436,19 +448,19 @@ class ModuleMockerClass { }; } - _makeComponent( + private _makeComponent( metadata: Mocks.MockFunctionMetadata, restore?: () => void, ): Object; - _makeComponent( + private _makeComponent( metadata: Mocks.MockFunctionMetadata, restore?: () => void, ): Array; - _makeComponent( + private _makeComponent( metadata: Mocks.MockFunctionMetadata, restore?: () => void, ): RegExp; - _makeComponent( + private _makeComponent( metadata: Mocks.MockFunctionMetadata< T, Y, @@ -456,11 +468,11 @@ class ModuleMockerClass { >, restore?: () => void, ): T; - _makeComponent( + private _makeComponent( metadata: Mocks.MockFunctionMetadata, restore?: () => void, ): Mock; - _makeComponent( + private _makeComponent( metadata: Mocks.MockFunctionMetadata, restore?: () => void, ): Object | Array | RegExp | T | undefined | Mock { @@ -706,7 +718,7 @@ class ModuleMockerClass { } } - _createMockFunction( + private _createMockFunction( metadata: Mocks.MockFunctionMetadata, mockConstructor: Function, ): Function { @@ -766,7 +778,7 @@ class ModuleMockerClass { return createConstructor(mockConstructor); } - _generateMock( + private _generateMock( metadata: Mocks.MockFunctionMetadata, callbacks: Array, refs: { @@ -912,19 +924,19 @@ class ModuleMockerClass { return fn; } - spyOn( + spyOn>( object: T, methodName: M, accessType: 'get', ): SpyInstance; - spyOn( + spyOn>( object: T, methodName: M, accessType: 'set', ): SpyInstance; - spyOn( + spyOn>( object: T, methodName: M, ): T[M] extends (...args: any[]) => any @@ -973,7 +985,7 @@ class ModuleMockerClass { return object[methodName]; } - _spyOnProperty( + private _spyOnProperty( obj: T, propertyName: M, accessType: 'get' | 'set' = 'get', @@ -1060,7 +1072,7 @@ class ModuleMockerClass { this._spyState = new Set(); } - _typeOf(value: any): string { + private _typeOf(value: any): string { return value == null ? '' + value : typeof value; } } From 47f5522f551f122389dba9fc2f1b4ca72573a91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Sun, 10 Feb 2019 13:23:28 +0100 Subject: [PATCH 2/4] update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 566573f13318..a19a6ca80c55 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ - `[@jest/types]`: New package to handle shared types ([#7834](https://github.com/facebook/jest/pull/7834)) - `[jest-util]`: Migrate to TypeScript ([#7844](https://github.com/facebook/jest/pull/7844)) - `[jest-watcher]`: Migrate to TypeScript ([#7843](https://github.com/facebook/jest/pull/7843)) -- `[jest-mock]`: Migrate to TypeScript ([#7847](https://github.com/facebook/jest/pull/7847)) +- `[jest-mock]`: Migrate to TypeScript ([#7847](https://github.com/facebook/jest/pull/7847), [#7850](https://github.com/facebook/jest/pull/7850)) ### Performance From c12feb3bc2c8cbd24455c97df4c6d48c9e262643 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Sun, 10 Feb 2019 14:09:09 +0100 Subject: [PATCH 3/4] moar --- packages/jest-mock/src/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/jest-mock/src/index.ts b/packages/jest-mock/src/index.ts index 5a51feeca34c..5283a54d8af1 100644 --- a/packages/jest-mock/src/index.ts +++ b/packages/jest-mock/src/index.ts @@ -911,7 +911,7 @@ class ModuleMockerClass { return metadata; } - isMockFunction(fn: any): boolean { + isMockFunction(fn: any): fn is Mock { return !!fn && fn._isMockFunction === true; } @@ -943,7 +943,7 @@ class ModuleMockerClass { ? SpyInstance, ArgsType> : never; - spyOn( + spyOn>( object: T, methodName: M, accessType?: 'get' | 'set', @@ -985,7 +985,7 @@ class ModuleMockerClass { return object[methodName]; } - private _spyOnProperty( + private _spyOnProperty>( obj: T, propertyName: M, accessType: 'get' | 'set' = 'get', From caa02574f65d5d86dadf4097d986e7c18966caa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Sun, 10 Feb 2019 14:15:46 +0100 Subject: [PATCH 4/4] simplify --- packages/jest-mock/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jest-mock/src/index.ts b/packages/jest-mock/src/index.ts index 5283a54d8af1..4d7d3a567664 100644 --- a/packages/jest-mock/src/index.ts +++ b/packages/jest-mock/src/index.ts @@ -911,7 +911,7 @@ class ModuleMockerClass { return metadata; } - isMockFunction(fn: any): fn is Mock { + isMockFunction(fn: any): fn is Mock { return !!fn && fn._isMockFunction === true; }