Skip to content

Commit 75dd135

Browse files
committed
Add failing test (#88)
1 parent b27abf2 commit 75dd135

File tree

2 files changed

+66
-1
lines changed

2 files changed

+66
-1
lines changed

tests/getStore.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,5 +134,5 @@ describe('getStore', () => {
134134
expect(screen.getByTestId('items').textContent).toContain('firstElement');
135135
act(() => push(items, 'secondElement'));
136136
expect(screen.getByTestId('items').textContent).toContain('firstElement,secondElement');
137-
})
137+
});
138138
});

tests/issue88.test.js

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import {render} from '@testing-library/react';
2+
import {useEffect, useState} from 'react';
3+
4+
import '@babel/polyfill';
5+
6+
import createStore from '../package/index';
7+
8+
describe('Issue 88', () => {
9+
it('should subscribe even if initially not rendered', () => {
10+
const track = jest.fn();
11+
12+
const initialStore = {
13+
number: 0,
14+
};
15+
const {useStore} = createStore(initialStore);
16+
17+
const AA = () => {
18+
const [number] = useStore.number();
19+
track(`AA number: ${number}`);
20+
21+
return number;
22+
};
23+
24+
const CC = () => {
25+
const [number, setNumber] = useStore.number();
26+
track(`CC number: ${number}`);
27+
if (!number) {
28+
setNumber((prev) => prev + 1);
29+
}
30+
31+
return 'c';
32+
};
33+
34+
function App() {
35+
const [show, setShow] = useState(false);
36+
track(`App show: ${show}`);
37+
useEffect(() => {
38+
setShow(true);
39+
}, []);
40+
41+
return (
42+
<div>
43+
{show && (
44+
<>
45+
<AA />
46+
<CC />
47+
</>
48+
)}
49+
</div>
50+
);
51+
}
52+
53+
render(<App />);
54+
55+
console.log(track.mock.calls);
56+
expect(track.mock.calls).toContain([
57+
[ 'App show: false' ],
58+
[ 'App show: true' ],
59+
[ 'AA number: 0' ],
60+
[ 'CC number: 0' ],
61+
[ 'AA number: 1' ],
62+
[ 'CC number: 1' ],
63+
]);
64+
});
65+
});

0 commit comments

Comments
 (0)