@samitouri / QOS-React-2 / commits / 34f6fa4fab

Added a sanity test for Bridge shutdown

Brian Vaughn committed May 23, 2019 at 11:22 UTC 34f6fa4fab502497b6ffd5d04cf0547bb9569fc2
1 file changed +42
src/__tests__/bridge-test.js new
+42
@@ -0,0 +1,42 @@
1 +// @flow
2 +
3 +describe('Bridge', () => {
4 + let Bridge;
5 +
6 + beforeEach(() => {
7 + Bridge = require('src/bridge').default;
8 + });
9 +
10 + it('should shutdown properly', () => {
11 + const wall = {
12 + listen: jest.fn(() => () => {}),
13 + send: jest.fn(),
14 + };
15 + const bridge = new Bridge(wall);
16 +
17 + // Check that we're wired up correctly.
18 + bridge.send('init');
19 + jest.runAllTimers();
20 + expect(wall.send).toHaveBeenCalledWith('init', undefined, undefined);
21 +
22 + // Should flush pending messages and then shut down.
23 + wall.send.mockClear();
24 + bridge.send('update', '1');
25 + bridge.send('update', '2');
26 + bridge.shutdown();
27 + jest.runAllTimers();
28 + expect(wall.send).toHaveBeenCalledWith('update', '1', undefined);
29 + expect(wall.send).toHaveBeenCalledWith('update', '2', undefined);
30 + expect(wall.send).toHaveBeenCalledWith('shutdown', undefined, undefined);
31 +
32 + // Verify that the Bridge doesn't send messages after shutdown.
33 + spyOn(console, 'warn');
34 + wall.send.mockClear();
35 + bridge.send('should not send');
36 + jest.runAllTimers();
37 + expect(wall.send).not.toHaveBeenCalled();
38 + expect(console.warn).toHaveBeenCalledWith(
39 + 'Cannot send message "should not send" through a Bridge that has been shutdown.'
40 + );
41 + });
42 +});