Skip to content

Commit e1bad0a

Browse files
Added test to validate useTrack does not re-render
1 parent 6bfb15b commit e1bad0a

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

src/__tests__/useTrack.test.tsx

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ describe('useTrack', () => {
3737
})}
3838
</SplitFactoryProvider>,
3939
);
40-
const track = outerFactory.client().track as jest.Mock;
40+
const track = outerFactory.client().track;
4141
expect(track).toBe(clientTrack);
4242
expect(track).toBeCalledWith(tt, eventType, value, properties);
4343
expect(track).toHaveReturnedWith(trackResult);
@@ -59,7 +59,7 @@ describe('useTrack', () => {
5959
</SplitClient>
6060
</SplitFactoryProvider>
6161
);
62-
const track = outerFactory.client('user2').track as jest.Mock;
62+
const track = outerFactory.client('user2').track;
6363
expect(track).toBeCalledWith(tt, eventType, value, properties);
6464
expect(track).toHaveReturnedWith(trackResult);
6565
});
@@ -77,7 +77,7 @@ describe('useTrack', () => {
7777
})}
7878
</SplitFactoryProvider>,
7979
);
80-
const track = outerFactory.client('user2').track as jest.Mock;
80+
const track = outerFactory.client('user2').track;
8181
expect(track).toBeCalledWith(tt, eventType, value, properties);
8282
expect(track).toHaveReturnedWith(trackResult);
8383
});
@@ -119,13 +119,33 @@ describe('useTrack', () => {
119119
splitKey = 'user2'; // `clientTrack` dependency changed
120120
act(() => getLastInstance(SplitFactory).client().__emitter__.emit(Event.SDK_UPDATE));
121121

122-
let track = getLastInstance(SplitFactory).client().track as jest.Mock;
122+
let track = getLastInstance(SplitFactory).client().track;
123123
expect(track).toBeCalledWith(tt, eventType, value, properties);
124124
expect(track).toBeCalledTimes(4); // 3 from render + 1 from useEffect
125125

126-
track = getLastInstance(SplitFactory).client('user2').track as jest.Mock;
126+
track = getLastInstance(SplitFactory).client('user2').track;
127127
expect(track).toBeCalledWith(tt, eventType, value, properties);
128128
expect(track).toBeCalledTimes(2); // 1 from render + 1 from useEffect (`clientTrack` dependency changed)
129129
});
130130

131+
test('does not re-render on SDK events', () => {
132+
render(
133+
<SplitFactoryProvider config={sdkBrowser} updateOnSdkReady={false} updateOnSdkReadyFromCache={false} >
134+
{React.createElement(() => {
135+
const clientTrack = useTrack();
136+
clientTrack(tt, eventType, value, properties);
137+
138+
return null;
139+
})}
140+
</SplitFactoryProvider>,
141+
);
142+
143+
act(() => getLastInstance(SplitFactory).client().__emitter__.emit(Event.SDK_READY_TIMED_OUT));
144+
act(() => getLastInstance(SplitFactory).client().__emitter__.emit(Event.SDK_READY_FROM_CACHE));
145+
act(() => getLastInstance(SplitFactory).client().__emitter__.emit(Event.SDK_READY));
146+
act(() => getLastInstance(SplitFactory).client().__emitter__.emit(Event.SDK_UPDATE));
147+
148+
expect(getLastInstance(SplitFactory).client().track).toBeCalledTimes(1);
149+
});
150+
131151
});

0 commit comments

Comments
 (0)