@@ -6,7 +6,7 @@ import { EventEmitter } from '../../utils/MinEvents';
6
6
7
7
/** Mocks */
8
8
9
- const clientInstance = 'client' ;
9
+ const clientInstance = { destroy : jest . fn ( ) } ;
10
10
const managerInstance = 'manager' ;
11
11
const mockStorage = {
12
12
splits : jest . fn ( ) ,
@@ -30,7 +30,7 @@ jest.mock('../../trackers/telemetryTracker', () => {
30
30
const paramsForAsyncSDK = {
31
31
settings : fullSettings ,
32
32
storageFactory : jest . fn ( ( ) => mockStorage ) ,
33
- sdkClientMethodFactory : jest . fn ( ( ) => clientInstance ) ,
33
+ sdkClientMethodFactory : jest . fn ( ( { clients } ) => ( key ?: string ) => { clients [ key || '' ] = clientInstance ; return clientInstance ; } ) ,
34
34
sdkManagerFactory : jest . fn ( ( ) => managerInstance ) ,
35
35
impressionsObserverFactory : jest . fn ( ) ,
36
36
platform : {
@@ -64,6 +64,7 @@ function assertSdkApi(sdk: SplitIO.IAsyncSDK | SplitIO.ISDK | SplitIO.ICsSDK, pa
64
64
expect ( sdk . settings ) . toBe ( params . settings ) ;
65
65
expect ( sdk . client ) . toBe ( params . sdkClientMethodFactory . mock . results [ 0 ] . value ) ;
66
66
expect ( sdk . manager ( ) ) . toBe ( params . sdkManagerFactory . mock . results [ 0 ] . value ) ;
67
+ expect ( sdk . destroy ( ) ) . toBeDefined ( ) ;
67
68
}
68
69
69
70
function assertModulesCalled ( params : any ) {
@@ -92,22 +93,18 @@ describe('sdkFactory', () => {
92
93
93
94
afterEach ( jest . clearAllMocks ) ;
94
95
95
- test ( 'creates IAsyncSDK instance' , ( ) => {
96
+ test . each ( [ paramsForAsyncSDK , fullParamsForSyncSDK ] ) ( 'creates SDK instance' , async ( params ) => {
96
97
97
- const sdk = sdkFactory ( paramsForAsyncSDK as unknown as ISdkFactoryParams ) ;
98
+ const sdk = sdkFactory ( params as unknown as ISdkFactoryParams ) ;
98
99
99
100
// should return an object that conforms to SDK interface
100
- assertSdkApi ( sdk , paramsForAsyncSDK ) ;
101
+ assertSdkApi ( sdk , params ) ;
101
102
102
- assertModulesCalled ( paramsForAsyncSDK ) ;
103
- } ) ;
104
-
105
- test ( 'creates ISDK instance' , ( ) => {
106
- const sdk = sdkFactory ( fullParamsForSyncSDK as unknown as ISdkFactoryParams ) ;
107
-
108
- // should return an object that conforms to SDK interface
109
- assertSdkApi ( sdk , fullParamsForSyncSDK ) ;
103
+ assertModulesCalled ( params ) ;
110
104
111
- assertModulesCalled ( fullParamsForSyncSDK ) ;
105
+ // Factory destroy should call client destroy
106
+ expect ( sdk . client ( ) ) . toBe ( clientInstance ) ;
107
+ expect ( await sdk . destroy ( ) ) . toBeUndefined ( ) ;
108
+ expect ( sdk . client ( ) . destroy ) . toBeCalledTimes ( 1 ) ;
112
109
} ) ;
113
110
} ) ;
0 commit comments