Skip to content

Commit 0517bb3

Browse files
committed
Merge branch 'dev' into sierra
2 parents 1a124c8 + ff5cddf commit 0517bb3

File tree

3 files changed

+181
-1
lines changed

3 files changed

+181
-1
lines changed

package-lock.json

Lines changed: 98 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"react-html-parser": "^2.0.2",
6363
"react-json-tree": "^0.11.2",
6464
"react-router-dom": "^5.0.1",
65-
"react-select": "^3.0.4"
65+
"react-select": "^3.0.4",
66+
"sinon-chrome": "^3.0.1"
6667
}
6768
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/* eslint-disable react/jsx-filename-extension */
2+
3+
import { mount, configure } from 'enzyme';
4+
import React from 'react';
5+
import { act } from 'react-dom/test-utils';
6+
import Adapter from 'enzyme-adapter-react-16';
7+
import MainContainer from '../containers/MainContainer';
8+
import { useStoreContext } from '../store';
9+
10+
import HeadContainer from '../containers/HeadContainer';
11+
import ActionContainer from '../containers/ActionContainer';
12+
import StateContainer from '../containers/StateContainer';
13+
import TravelContainer from '../containers/TravelContainer';
14+
import ButtonsContainer from '../containers/ButtonsContainer';
15+
16+
const chrome = require('sinon-chrome');
17+
18+
configure({ adapter: new Adapter() });
19+
20+
const state = {
21+
tabs: {
22+
87: {
23+
snapshots: [{}, {}, {}, {}],
24+
sliderIndex: 0,
25+
viewIndex: -1,
26+
mode: {},
27+
},
28+
},
29+
currentTab: 87,
30+
};
31+
32+
const dispatch = jest.fn();
33+
jest.mock('../store');
34+
useStoreContext.mockImplementation(() => [state, dispatch]);
35+
36+
let wrapper;
37+
global.chrome = chrome;
38+
let eventListener;
39+
const port = {
40+
onMessage: {
41+
addListener: ((fn) => {
42+
eventListener = fn;
43+
}),
44+
},
45+
onDisconnect: {
46+
addListener: () => { },
47+
},
48+
};
49+
chrome.runtime.connect.returns(port);
50+
51+
beforeEach(() => {
52+
wrapper = mount(<MainContainer />);
53+
useStoreContext.mockClear();
54+
dispatch.mockClear();
55+
});
56+
57+
describe('MainContainer rendering', () => {
58+
test('With no connection, should not render any containers', () => {
59+
expect(wrapper.text()).toEqual('please install our npm package in your app');
60+
expect(wrapper.find(HeadContainer).length).toBe(0);
61+
expect(wrapper.find(ActionContainer).length).toBe(0);
62+
expect(wrapper.find(StateContainer).length).toBe(0);
63+
expect(wrapper.find(TravelContainer).length).toBe(0);
64+
expect(wrapper.find(ButtonsContainer).length).toBe(0);
65+
});
66+
test('With connection established, should render all containers', () => {
67+
// fake connect
68+
act(() => {
69+
eventListener({
70+
action: 'initialConnectSnapshots',
71+
payload: 'test',
72+
});
73+
});
74+
wrapper.update();
75+
expect(wrapper.find(HeadContainer).length).toBe(1);
76+
expect(wrapper.find(ActionContainer).length).toBe(1);
77+
expect(wrapper.find(StateContainer).length).toBe(1);
78+
expect(wrapper.find(TravelContainer).length).toBe(1);
79+
expect(wrapper.find(ButtonsContainer).length).toBe(1);
80+
});
81+
});

0 commit comments

Comments
 (0)