Skip to content

Commit 8da3ac0

Browse files
committed
fix: chat.test.ts
1 parent 8207356 commit 8da3ac0

File tree

1 file changed

+57
-59
lines changed

1 file changed

+57
-59
lines changed

package/src/components/Chat/__tests__/Chat.test.js

Lines changed: 57 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -222,79 +222,77 @@ describe('TranslationContext', () => {
222222
expect(context.tDateTimeParser).not.toBe(i18nInstance.tDateTimeParser);
223223
expect(context.tDateTimeParser).toBe(newI18nInstance.tDateTimeParser);
224224
});
225+
});
226+
227+
it('makes sure DBSyncManager listeners are cleaned up after Chat remount', async () => {
228+
const chatClientWithUser = await getTestClientWithUser({ id: 'testID' });
229+
jest.spyOn(DBSyncManager, 'init');
230+
231+
// initial mount and render
232+
const { rerender } = render(<Chat client={chatClientWithUser} enableOfflineSupport key={1} />);
233+
234+
// the unsubscribe fn changes during init(), so we keep a reference to the spy
235+
const unsubscribeSpy = jest.spyOn(DBSyncManager.connectionChangedListener, 'unsubscribe');
236+
const listenersAfterInitialMount = chatClientWithUser.listeners['connection.changed'];
225237

226-
it('makes sure DBSyncManager listeners are cleaned up after Chat remount', async () => {
227-
const chatClientWithUser = await getTestClientWithUser({ id: 'testID' });
228-
jest.spyOn(DBSyncManager, 'init');
238+
// remount
239+
rerender(<Chat client={chatClientWithUser} enableOfflineSupport key={2} />);
229240

230-
// initial mount and render
231-
const { rerender } = render(
232-
<Chat client={chatClientWithUser} enableOfflineSupport key={1} />,
241+
await waitFor(() => {
242+
expect(DBSyncManager.init).toHaveBeenCalledTimes(2);
243+
expect(unsubscribeSpy).toHaveBeenCalledTimes(2);
244+
expect(chatClientWithUser.listeners['connection.changed'].length).toBe(
245+
listenersAfterInitialMount.length,
233246
);
247+
});
248+
});
234249

235-
// the unsubscribe fn changes during init(), so we keep a reference to the spy
236-
const unsubscribeSpy = jest.spyOn(DBSyncManager.connectionChangedListener, 'unsubscribe');
237-
const listenersAfterInitialMount = chatClientWithUser.listeners['connection.changed'];
250+
it('makes sure DBSyncManager listeners are cleaned up if the user changes', async () => {
251+
const chatClientWithUser = await getTestClientWithUser({ id: 'testID1' });
252+
jest.spyOn(DBSyncManager, 'init');
238253

239-
// remount
240-
rerender(<Chat client={chatClientWithUser} enableOfflineSupport key={2} />);
254+
// initial render
255+
const { rerender } = render(<Chat client={chatClientWithUser} enableOfflineSupport />);
241256

242-
await waitFor(() => {
243-
expect(DBSyncManager.init).toHaveBeenCalledTimes(2);
244-
expect(unsubscribeSpy).toHaveBeenCalledTimes(2);
245-
expect(chatClientWithUser.listeners['connection.changed'].length).toBe(
246-
listenersAfterInitialMount.length,
247-
);
248-
});
257+
// the unsubscribe fn changes during init(), so we keep a reference to the spy
258+
const unsubscribeSpy = jest.spyOn(DBSyncManager.connectionChangedListener, 'unsubscribe');
259+
await act(async () => {
260+
await setUser(chatClientWithUser, { id: 'testID2' });
249261
});
262+
const listenersAfterInitialMount = chatClientWithUser.listeners['connection.changed'];
250263

251-
it('makes sure DBSyncManager listeners are cleaned up if the user changes', async () => {
252-
const chatClientWithUser = await getTestClientWithUser({ id: 'testID1' });
253-
jest.spyOn(DBSyncManager, 'init');
254-
255-
// initial render
256-
const { rerender } = render(<Chat client={chatClientWithUser} enableOfflineSupport />);
257-
258-
// the unsubscribe fn changes during init(), so we keep a reference to the spy
259-
const unsubscribeSpy = jest.spyOn(DBSyncManager.connectionChangedListener, 'unsubscribe');
260-
await act(async () => {
261-
await setUser(chatClientWithUser, { id: 'testID2' });
262-
});
263-
const listenersAfterInitialMount = chatClientWithUser.listeners['connection.changed'];
264-
265-
// rerender with different user ID
266-
rerender(<Chat client={chatClientWithUser} enableOfflineSupport />);
267-
268-
await waitFor(() => {
269-
expect(DBSyncManager.init).toHaveBeenCalledTimes(2);
270-
expect(unsubscribeSpy).toHaveBeenCalledTimes(1);
271-
expect(chatClientWithUser.listeners['connection.changed'].length).toBe(
272-
listenersAfterInitialMount.length,
273-
);
274-
});
264+
// rerender with different user ID
265+
rerender(<Chat client={chatClientWithUser} enableOfflineSupport />);
266+
267+
await waitFor(() => {
268+
expect(DBSyncManager.init).toHaveBeenCalledTimes(2);
269+
expect(unsubscribeSpy).toHaveBeenCalledTimes(1);
270+
expect(chatClientWithUser.listeners['connection.changed'].length).toBe(
271+
listenersAfterInitialMount.length,
272+
);
275273
});
274+
});
276275

277-
it('makes sure DBSyncManager state stays intact during normal rerenders', async () => {
278-
const chatClientWithUser = await getTestClientWithUser({ id: 'testID' });
279-
jest.spyOn(DBSyncManager, 'init');
276+
it('makes sure DBSyncManager state stays intact during normal rerenders', async () => {
277+
const chatClientWithUser = await getTestClientWithUser({ id: 'testID' });
278+
jest.spyOn(DBSyncManager, 'init');
280279

281-
// initial render
282-
const { rerender } = render(<Chat client={chatClientWithUser} enableOfflineSupport />);
280+
// initial render
281+
const { rerender } = render(<Chat client={chatClientWithUser} enableOfflineSupport />);
283282

284-
// the unsubscribe fn changes during init(), so we keep a reference to the spy
285-
const unsubscribeSpy = jest.spyOn(DBSyncManager.connectionChangedListener, 'unsubscribe');
286-
const listenersAfterInitialMount = chatClientWithUser.listeners['connection.changed'];
283+
// the unsubscribe fn changes during init(), so we keep a reference to the spy
284+
const unsubscribeSpy = jest.spyOn(DBSyncManager.connectionChangedListener, 'unsubscribe');
285+
const listenersAfterInitialMount = chatClientWithUser.listeners['connection.changed'];
287286

288-
// rerender
289-
rerender(<Chat client={chatClientWithUser} enableOfflineSupport />);
287+
// rerender
288+
rerender(<Chat client={chatClientWithUser} enableOfflineSupport />);
290289

291-
await waitFor(() => {
292-
expect(DBSyncManager.init).toHaveBeenCalledTimes(1);
293-
expect(unsubscribeSpy).toHaveBeenCalledTimes(0);
294-
expect(chatClientWithUser.listeners['connection.changed'].length).toBe(
295-
listenersAfterInitialMount.length,
296-
);
297-
});
290+
await waitFor(() => {
291+
expect(DBSyncManager.init).toHaveBeenCalledTimes(1);
292+
expect(unsubscribeSpy).toHaveBeenCalledTimes(0);
293+
expect(chatClientWithUser.listeners['connection.changed'].length).toBe(
294+
listenersAfterInitialMount.length,
295+
);
298296
});
299297
});
300298
});

0 commit comments

Comments
 (0)