Skip to content

Commit 50299e7

Browse files
Add test to validate that the useSplitManager hook updates when the context change (e.g., SDK is ready)
1 parent f8c13c3 commit 50299e7

1 file changed

Lines changed: 20 additions & 3 deletions

File tree

src/__tests__/useSplitManager.test.tsx

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
import React from 'react';
2-
import { render } from '@testing-library/react';
2+
import { act, render } from '@testing-library/react';
33

44
/** Mocks */
5-
import { mockSdk } from './testUtils/mockSplitSdk';
5+
import { Event, mockSdk } from './testUtils/mockSplitSdk';
66
jest.mock('@splitsoftware/splitio/client', () => {
77
return { SplitFactory: mockSdk() };
88
});
99
import { SplitFactory as SplitSdk } from '@splitsoftware/splitio/client';
1010
import { sdkBrowser } from './testUtils/sdkConfigs';
11+
import { getStatus } from '../utils';
1112

1213
/** Test target */
1314
import { SplitFactory } from '../SplitFactory';
1415
import { useSplitManager } from '../useSplitManager';
1516

1617
describe('useSplitManager', () => {
1718

18-
test('returns the factory manager from the Split context.', () => {
19+
test('returns the factory manager from the Split context, and updates when the context changes.', () => {
1920
const outerFactory = SplitSdk(sdkBrowser);
2021
let hookResult;
2122
render(
@@ -26,6 +27,7 @@ describe('useSplitManager', () => {
2627
})}
2728
</SplitFactory>
2829
);
30+
2931
expect(hookResult).toStrictEqual({
3032
manager: outerFactory.manager(),
3133
client: outerFactory.client(),
@@ -37,6 +39,20 @@ describe('useSplitManager', () => {
3739
isTimedout: false,
3840
lastUpdate: 0,
3941
});
42+
43+
act(() => (outerFactory.client() as any).__emitter__.emit(Event.SDK_READY));
44+
45+
expect(hookResult).toStrictEqual({
46+
manager: outerFactory.manager(),
47+
client: outerFactory.client(),
48+
factory: outerFactory,
49+
hasTimedout: false,
50+
isDestroyed: false,
51+
isReady: true,
52+
isReadyFromCache: false,
53+
isTimedout: false,
54+
lastUpdate: getStatus(outerFactory.client()).lastUpdate,
55+
});
4056
});
4157

4258
test('returns null if invoked outside Split context.', () => {
@@ -47,6 +63,7 @@ describe('useSplitManager', () => {
4763
return null;
4864
})
4965
);
66+
5067
expect(hookResult).toStrictEqual({
5168
manager: null,
5269
client: null,

0 commit comments

Comments
 (0)