Skip to content

Commit df89165

Browse files
committed
chore: update tests
1 parent 0ac9afa commit df89165

6 files changed

Lines changed: 187 additions & 161 deletions

File tree

jest.config.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
module.exports = {
2-
testMatch: ['<rootDir>/test/index.js']
3-
}
2+
};
Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -73,35 +73,3 @@ exports[`Gateway should update Gateway child 3`] = `
7373
<div />
7474
</div>
7575
`;
76-
77-
exports[`GatewayDest prop unmountOnEmpty should not render (or render) when no (or some) Gateways are registered and "unmountOnEmpty" is set 1`] = `<div />`;
78-
79-
exports[`GatewayDest prop unmountOnEmpty should not render (or render) when no (or some) Gateways are registered and "unmountOnEmpty" is set 2`] = `
80-
<div>
81-
<div>
82-
Hello world
83-
</div>
84-
</div>
85-
`;
86-
87-
exports[`GatewayDest prop unmountOnEmpty should not render (or render) when no (or some) Gateways are registered and "unmountOnEmpty" is set 3`] = `<div />`;
88-
89-
exports[`GatewayDest prop unmountOnEmpty should render when there are Gateways registered and "unmountOnEmpty" is set 1`] = `
90-
<div>
91-
<div>
92-
hello
93-
</div>
94-
</div>
95-
`;
96-
97-
exports[`GatewayDest should not render on null Gateway 1`] = `<div />`;
98-
99-
exports[`GatewayDest should render div w/ className and component 1`] = `
100-
<div>
101-
<span
102-
className="something"
103-
/>
104-
</div>
105-
`;
106-
107-
exports[`GatewayDest should render div w/ className and component 2`] = `<div />`;
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`GatewayDest prop unmountOnEmpty should not render (or render) when no (or some) Gateways are registered and "unmountOnEmpty" is set 1`] = `<div />`;
4+
5+
exports[`GatewayDest prop unmountOnEmpty should not render (or render) when no (or some) Gateways are registered and "unmountOnEmpty" is set 2`] = `
6+
<div>
7+
<div>
8+
Hello world
9+
</div>
10+
</div>
11+
`;
12+
13+
exports[`GatewayDest prop unmountOnEmpty should not render (or render) when no (or some) Gateways are registered and "unmountOnEmpty" is set 3`] = `<div />`;
14+
15+
exports[`GatewayDest prop unmountOnEmpty should render when there are Gateways registered and "unmountOnEmpty" is set 1`] = `
16+
<div>
17+
<div>
18+
hello
19+
</div>
20+
</div>
21+
`;
22+
23+
exports[`GatewayDest should not render on null Gateway 1`] = `<div />`;
24+
25+
exports[`GatewayDest should render div w/ className and component 1`] = `
26+
<div>
27+
<span
28+
className="something"
29+
/>
30+
</div>
31+
`;
32+
33+
exports[`GatewayDest should render div w/ className and component 2`] = `<div />`;

test/index.js renamed to test/gateway.spec.js

Lines changed: 3 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import React, { useContext, useState } from 'react';
22
import { create, act } from 'react-test-renderer';
3-
import ReactDOMServer from 'react-dom/server';
3+
44
import {
55
Gateway,
66
GatewayDest,
77
GatewayProvider,
88
} from '../src/index.js';
9-
import GatewayContext from '../src/GatewayContext';
9+
1010

1111
const withExposedSetState = (Component) => {
1212
let setState;
@@ -21,6 +21,7 @@ const withExposedSetState = (Component) => {
2121
};
2222
};
2323

24+
2425
describe('Gateway', function () {
2526
it('throws on invalid dest name', function () {
2627
const throwingRender = () => {
@@ -160,128 +161,3 @@ describe('Gateway', function () {
160161
expect(rendered).toMatchSnapshot();
161162
});
162163
});
163-
164-
describe('GatewayDest', function () {
165-
it('should render div w/ className and component', function () {
166-
const { Component, setState } = withExposedSetState(({ setSetState }) => {
167-
const [shouldShow, setState] = useState(true);
168-
setSetState(setState);
169-
return (
170-
<GatewayProvider>
171-
<div>
172-
{shouldShow && <GatewayDest name="dest" className="something" component="span" />}
173-
</div>
174-
</GatewayProvider>
175-
);
176-
});
177-
let rendered;
178-
act(() => {
179-
rendered = create(<Component />);
180-
});
181-
expect(rendered).toMatchSnapshot();
182-
183-
act(() => {
184-
setState(false);
185-
});
186-
expect(rendered).toMatchSnapshot();
187-
});
188-
189-
it('throws on invalid dest name', function () {
190-
const throwingRender = () => {
191-
act(() => {
192-
create(
193-
<GatewayProvider>
194-
<GatewayDest name="invalid##" />
195-
</GatewayProvider>
196-
);
197-
});
198-
};
199-
expect(throwingRender).toThrow('dest names should not have ##');
200-
});
201-
202-
describe('prop unmountOnEmpty', function () {
203-
204-
let rendered;
205-
const { Component, setState } = withExposedSetState(({ setSetState }) => {
206-
const [showOneChild, setShowOne] = useState(false);
207-
setSetState(setShowOne);
208-
209-
return (
210-
<GatewayProvider>
211-
<div>
212-
<GatewayDest name="dest" unmountOnEmpty />
213-
{showOneChild && <Gateway into="dest">Hello world</Gateway>}
214-
</div>
215-
</GatewayProvider>
216-
);
217-
});
218-
219-
beforeAll(function () {
220-
act(() => {
221-
rendered = create(
222-
<Component />
223-
);
224-
});
225-
});
226-
227-
it('should not render (or render) when no (or some) Gateways are registered and "unmountOnEmpty" is set ', function () {
228-
expect(rendered).toMatchSnapshot();
229-
230-
act(() => {
231-
setState(true);
232-
});
233-
expect(rendered).toMatchSnapshot();
234-
235-
act(() => {
236-
setState(false);
237-
});
238-
expect(rendered).toMatchSnapshot();
239-
});
240-
241-
it('should render when there are Gateways registered and "unmountOnEmpty" is set ', function () {
242-
class Application extends React.Component {
243-
render() {
244-
return (
245-
<GatewayProvider>
246-
<div>
247-
<Gateway into="dest">hello</Gateway>
248-
<GatewayDest name="dest" unmountOnEmpty />
249-
</div>
250-
</GatewayProvider>
251-
);
252-
}
253-
}
254-
let rendered;
255-
act(() => {
256-
rendered = create(
257-
<Application />
258-
);
259-
});
260-
expect(rendered).toMatchSnapshot();
261-
});
262-
});
263-
264-
it('should not render on null Gateway', function () {
265-
266-
let rendered;
267-
const { Component, setState } = withExposedSetState(({ setSetState }) => {
268-
return (
269-
<GatewayProvider>
270-
<div>
271-
<GatewayDest name="dest" unmountOnEmpty />
272-
<Gateway into="dest">{null}</Gateway>
273-
</div>
274-
</GatewayProvider>
275-
);
276-
});
277-
278-
act(() => {
279-
rendered = create(
280-
<Component />
281-
);
282-
});
283-
expect(rendered).toMatchSnapshot();
284-
});
285-
286-
287-
});

test/gatewaydest.spec.js

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
import React, { useContext, useState } from 'react';
2+
import { create, act } from 'react-test-renderer';
3+
4+
import {
5+
Gateway,
6+
GatewayDest,
7+
GatewayProvider,
8+
} from '../src/index.js';
9+
10+
import { withExposedSetState } from './utils.js';
11+
12+
describe('GatewayDest', function () {
13+
it('should render div w/ className and component', function () {
14+
const { Component, setState } = withExposedSetState(({ setSetState }) => {
15+
const [shouldShow, setState] = useState(true);
16+
setSetState(setState);
17+
return (
18+
<GatewayProvider>
19+
<div>
20+
{shouldShow && <GatewayDest name="dest" className="something" component="span" />}
21+
</div>
22+
</GatewayProvider>
23+
);
24+
});
25+
let rendered;
26+
act(() => {
27+
rendered = create(<Component />);
28+
});
29+
expect(rendered).toMatchSnapshot();
30+
31+
act(() => {
32+
setState(false);
33+
});
34+
expect(rendered).toMatchSnapshot();
35+
});
36+
37+
it('throws on invalid dest name', function () {
38+
const throwingRender = () => {
39+
act(() => {
40+
create(
41+
<GatewayProvider>
42+
<GatewayDest name="invalid##" />
43+
</GatewayProvider>
44+
);
45+
});
46+
};
47+
expect(throwingRender).toThrow('dest names should not have ##');
48+
});
49+
50+
describe('prop unmountOnEmpty', function () {
51+
52+
let rendered;
53+
const { Component, setState } = withExposedSetState(({ setSetState }) => {
54+
const [showOneChild, setShowOne] = useState(false);
55+
setSetState(setShowOne);
56+
57+
return (
58+
<GatewayProvider>
59+
<div>
60+
<GatewayDest name="dest" unmountOnEmpty />
61+
{showOneChild && <Gateway into="dest">Hello world</Gateway>}
62+
</div>
63+
</GatewayProvider>
64+
);
65+
});
66+
67+
beforeAll(function () {
68+
act(() => {
69+
rendered = create(
70+
<Component />
71+
);
72+
});
73+
});
74+
75+
it('should not render (or render) when no (or some) Gateways are registered and "unmountOnEmpty" is set ', function () {
76+
expect(rendered).toMatchSnapshot();
77+
78+
act(() => {
79+
setState(true);
80+
});
81+
expect(rendered).toMatchSnapshot();
82+
83+
act(() => {
84+
setState(false);
85+
});
86+
expect(rendered).toMatchSnapshot();
87+
});
88+
89+
it('should render when there are Gateways registered and "unmountOnEmpty" is set ', function () {
90+
class Application extends React.Component {
91+
render() {
92+
return (
93+
<GatewayProvider>
94+
<div>
95+
<Gateway into="dest">hello</Gateway>
96+
<GatewayDest name="dest" unmountOnEmpty />
97+
</div>
98+
</GatewayProvider>
99+
);
100+
}
101+
}
102+
let rendered;
103+
act(() => {
104+
rendered = create(
105+
<Application />
106+
);
107+
});
108+
expect(rendered).toMatchSnapshot();
109+
});
110+
});
111+
112+
it('should not render on null Gateway', function () {
113+
114+
let rendered;
115+
const { Component, setState } = withExposedSetState(({ setSetState }) => {
116+
return (
117+
<GatewayProvider>
118+
<div>
119+
<GatewayDest name="dest" unmountOnEmpty />
120+
<Gateway into="dest">{null}</Gateway>
121+
</div>
122+
</GatewayProvider>
123+
);
124+
});
125+
126+
act(() => {
127+
rendered = create(
128+
<Component />
129+
);
130+
});
131+
expect(rendered).toMatchSnapshot();
132+
});
133+
134+
135+
});

test/utils.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import React from 'react';
2+
3+
export const withExposedSetState = (Component) => {
4+
let setState;
5+
let setSetState = (setStateParam) => {
6+
setState = setStateParam;
7+
};
8+
return {
9+
setState: (state) => {
10+
setState(state);
11+
},
12+
Component: (props) => <Component setSetState={setSetState} {...props} />
13+
};
14+
};
15+

0 commit comments

Comments
 (0)