Skip to content

Commit abf0967

Browse files
committed
add test for hook
1 parent c00a48d commit abf0967

File tree

8 files changed

+159
-93
lines changed

8 files changed

+159
-93
lines changed

tests/Builder/builder_controller.test.tsx

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -62,35 +62,43 @@ const DisplayRendered = ({ source, buildWhen, stateComp, callback }: DisplayRend
6262
)
6363
}
6464

65-
it('buildWhen respected', (done) => {
65+
it('buildWhen respected', async () => {
6666
const buildWhenFn = jest.fn((prev, curr) => prev === curr)
6767
const instance = new TestController()
6868
const { container } = render(
6969
<ControllerProvider ctor={TestController} source={instance}>
7070
<DisplayRendered source={instance} buildWhen={buildWhenFn} />
7171
</ControllerProvider>,
7272
)
73-
instance.inc()
74-
instance.inc()
75-
instance.inc()
76-
instance.inc()
77-
instance.inc()
78-
expect(buildWhenFn).toHaveBeenCalledTimes(5)
79-
expect(buildWhenFn.mock.calls[0][0]).toBe(0)
80-
expect(buildWhenFn.mock.calls[0][1]).toBe(1)
81-
expect(buildWhenFn.mock.calls[1][0]).toBe(1)
82-
expect(buildWhenFn.mock.calls[1][1]).toBe(2)
83-
expect(buildWhenFn.mock.calls[2][0]).toBe(2)
84-
expect(buildWhenFn.mock.calls[2][1]).toBe(3)
85-
expect(buildWhenFn.mock.calls[3][0]).toBe(3)
86-
expect(buildWhenFn.mock.calls[3][1]).toBe(4)
87-
expect(buildWhenFn.mock.calls[4][0]).toBe(4)
88-
expect(buildWhenFn.mock.calls[4][1]).toBe(5)
89-
const rendered = getByTestId(container, 'text')
90-
const renderedText = rendered.textContent
91-
const expectedText = '0'
92-
expect(renderedText).toBe(expectedText)
93-
done()
73+
await act(async () => {
74+
asyncDelay(500)
75+
instance.inc()
76+
asyncDelay(500)
77+
instance.inc()
78+
asyncDelay(500)
79+
instance.inc()
80+
asyncDelay(500)
81+
instance.inc()
82+
asyncDelay(500)
83+
instance.inc()
84+
})
85+
await waitFor(() => {
86+
expect(buildWhenFn).toHaveBeenCalledTimes(5)
87+
expect(buildWhenFn.mock.calls[0][0]).toBe(0)
88+
expect(buildWhenFn.mock.calls[0][1]).toBe(1)
89+
expect(buildWhenFn.mock.calls[1][0]).toBe(1)
90+
expect(buildWhenFn.mock.calls[1][1]).toBe(2)
91+
expect(buildWhenFn.mock.calls[2][0]).toBe(2)
92+
expect(buildWhenFn.mock.calls[2][1]).toBe(3)
93+
expect(buildWhenFn.mock.calls[3][0]).toBe(3)
94+
expect(buildWhenFn.mock.calls[3][1]).toBe(4)
95+
expect(buildWhenFn.mock.calls[4][0]).toBe(4)
96+
expect(buildWhenFn.mock.calls[4][1]).toBe(5)
97+
const rendered = getByTestId(container, 'text')
98+
const renderedText = rendered.textContent
99+
const expectedText = '0'
100+
expect(renderedText).toBe(expectedText)
101+
})
94102
})
95103

96104
it('rerender on state changed', async () => {
@@ -145,10 +153,14 @@ it('specified state compare respected', async () => {
145153
const expectedText = '0'
146154
expect(renderedText).toBe(expectedText)
147155

148-
act(() => {
156+
await act(async () => {
157+
await asyncDelay(500)
149158
instance.inc()
159+
await asyncDelay(500)
150160
instance.inc()
161+
await asyncDelay(500)
151162
instance.inc()
163+
await asyncDelay(500)
152164
instance.inc()
153165
})
154166
await waitFor(() => {

tests/Builder/builder_ctor.test.tsx

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -61,35 +61,43 @@ const DisplayRendered = ({ buildWhen, stateComp, callback }: DisplayRenderedProp
6161
)
6262
}
6363

64-
it('buildWhen respected', (done) => {
64+
it('buildWhen respected', async () => {
6565
const buildWhenFn = jest.fn((prev, curr) => prev === curr)
6666
const instance = new TestController()
6767
const { container } = render(
6868
<ControllerProvider ctor={TestController} source={instance}>
6969
<DisplayRendered buildWhen={buildWhenFn} />
7070
</ControllerProvider>,
7171
)
72-
instance.inc()
73-
instance.inc()
74-
instance.inc()
75-
instance.inc()
76-
instance.inc()
77-
expect(buildWhenFn).toHaveBeenCalledTimes(5)
78-
expect(buildWhenFn.mock.calls[0][0]).toBe(0)
79-
expect(buildWhenFn.mock.calls[0][1]).toBe(1)
80-
expect(buildWhenFn.mock.calls[1][0]).toBe(1)
81-
expect(buildWhenFn.mock.calls[1][1]).toBe(2)
82-
expect(buildWhenFn.mock.calls[2][0]).toBe(2)
83-
expect(buildWhenFn.mock.calls[2][1]).toBe(3)
84-
expect(buildWhenFn.mock.calls[3][0]).toBe(3)
85-
expect(buildWhenFn.mock.calls[3][1]).toBe(4)
86-
expect(buildWhenFn.mock.calls[4][0]).toBe(4)
87-
expect(buildWhenFn.mock.calls[4][1]).toBe(5)
88-
const rendered = getByTestId(container, 'text')
89-
const renderedText = rendered.textContent
90-
const expectedText = '0'
91-
expect(renderedText).toBe(expectedText)
92-
done()
72+
await act(async () => {
73+
await asyncDelay(500)
74+
instance.inc()
75+
await asyncDelay(500)
76+
instance.inc()
77+
await asyncDelay(500)
78+
instance.inc()
79+
await asyncDelay(500)
80+
instance.inc()
81+
await asyncDelay(500)
82+
instance.inc()
83+
})
84+
await waitFor(() => {
85+
expect(buildWhenFn).toHaveBeenCalledTimes(5)
86+
expect(buildWhenFn.mock.calls[0][0]).toBe(0)
87+
expect(buildWhenFn.mock.calls[0][1]).toBe(1)
88+
expect(buildWhenFn.mock.calls[1][0]).toBe(1)
89+
expect(buildWhenFn.mock.calls[1][1]).toBe(2)
90+
expect(buildWhenFn.mock.calls[2][0]).toBe(2)
91+
expect(buildWhenFn.mock.calls[2][1]).toBe(3)
92+
expect(buildWhenFn.mock.calls[3][0]).toBe(3)
93+
expect(buildWhenFn.mock.calls[3][1]).toBe(4)
94+
expect(buildWhenFn.mock.calls[4][0]).toBe(4)
95+
expect(buildWhenFn.mock.calls[4][1]).toBe(5)
96+
const rendered = getByTestId(container, 'text')
97+
const renderedText = rendered.textContent
98+
const expectedText = '0'
99+
expect(renderedText).toBe(expectedText)
100+
})
93101
})
94102

95103
it('rerender on state changed', async () => {
@@ -144,10 +152,14 @@ it('specified state compare respected', async () => {
144152
const expectedText = '0'
145153
expect(renderedText).toBe(expectedText)
146154

147-
act(() => {
155+
await act(async () => {
156+
asyncDelay(500)
148157
instance.inc()
158+
asyncDelay(500)
149159
instance.inc()
160+
asyncDelay(500)
150161
instance.inc()
162+
asyncDelay(500)
151163
instance.inc()
152164
})
153165
await waitFor(() => {

tests/Selector/selector_controller.test.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,14 @@ it('specified state compare respected', async () => {
110110
const expectedText = '0'
111111
expect(renderedText).toBe(expectedText)
112112

113-
act(() => {
113+
await act(async () => {
114+
await asyncDelay(500)
114115
instance.inc()
116+
await asyncDelay(500)
115117
instance.inc()
118+
await asyncDelay(500)
116119
instance.inc()
120+
await asyncDelay(500)
117121
instance.inc()
118122
})
119123
await waitFor(() => {

tests/Selector/selector_ctor.test.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,14 @@ it('specified state compare respected', async () => {
117117
const expectedText = '0'
118118
expect(renderedText).toBe(expectedText)
119119

120-
act(() => {
120+
await act(async () => {
121+
await asyncDelay(500)
121122
instance.inc()
123+
await asyncDelay(500)
122124
instance.inc()
125+
await asyncDelay(500)
123126
instance.inc()
127+
await asyncDelay(500)
124128
instance.inc()
125129
})
126130
await waitFor(() => {

tests/hooks/use_builder/use_builder_controller.test.ts

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,28 +40,37 @@ it('emit object values every reEmit', () => {
4040
})
4141
})
4242

43-
it('buildWhen respected', (done) => {
43+
it('buildWhen respected', async () => {
4444
const buildWhenFn = jest.fn((prev, curr) => prev === curr)
4545
const instance = new TestController()
4646
const { result } = renderHook(() => useBuilder(instance, buildWhenFn))
47-
instance.inc()
48-
instance.inc()
49-
instance.inc()
50-
instance.inc()
51-
instance.inc()
52-
expect(buildWhenFn).toHaveBeenCalledTimes(5)
53-
expect(buildWhenFn.mock.calls[0][0]).toBe(0)
54-
expect(buildWhenFn.mock.calls[0][1]).toBe(1)
55-
expect(buildWhenFn.mock.calls[1][0]).toBe(1)
56-
expect(buildWhenFn.mock.calls[1][1]).toBe(2)
57-
expect(buildWhenFn.mock.calls[2][0]).toBe(2)
58-
expect(buildWhenFn.mock.calls[2][1]).toBe(3)
59-
expect(buildWhenFn.mock.calls[3][0]).toBe(3)
60-
expect(buildWhenFn.mock.calls[3][1]).toBe(4)
61-
expect(buildWhenFn.mock.calls[4][0]).toBe(4)
62-
expect(buildWhenFn.mock.calls[4][1]).toBe(5)
63-
expect(result.current).toBe(0)
64-
done()
47+
await act(async () => {
48+
await asyncDelay(500)
49+
instance.inc()
50+
await asyncDelay(500)
51+
instance.inc()
52+
await asyncDelay(500)
53+
instance.inc()
54+
await asyncDelay(500)
55+
instance.inc()
56+
await asyncDelay(500)
57+
instance.inc()
58+
})
59+
60+
await waitFor(() => {
61+
expect(buildWhenFn).toHaveBeenCalledTimes(5)
62+
expect(buildWhenFn.mock.calls[0][0]).toBe(0)
63+
expect(buildWhenFn.mock.calls[0][1]).toBe(1)
64+
expect(buildWhenFn.mock.calls[1][0]).toBe(1)
65+
expect(buildWhenFn.mock.calls[1][1]).toBe(2)
66+
expect(buildWhenFn.mock.calls[2][0]).toBe(2)
67+
expect(buildWhenFn.mock.calls[2][1]).toBe(3)
68+
expect(buildWhenFn.mock.calls[3][0]).toBe(3)
69+
expect(buildWhenFn.mock.calls[3][1]).toBe(4)
70+
expect(buildWhenFn.mock.calls[4][0]).toBe(4)
71+
expect(buildWhenFn.mock.calls[4][1]).toBe(5)
72+
expect(result.current).toBe(0)
73+
})
6574
})
6675

6776
it('rerender on state changed', async () => {
@@ -108,10 +117,14 @@ it('specified state compare respected', async () => {
108117
)
109118
})
110119
expect(result.current).toBe(0)
111-
act(() => {
120+
await act(async () => {
121+
await asyncDelay(500)
112122
instance.inc()
123+
await asyncDelay(500)
113124
instance.inc()
125+
await asyncDelay(500)
114126
instance.inc()
127+
await asyncDelay(500)
115128
instance.inc()
116129
})
117130
await waitFor(() => {

tests/hooks/use_builder/use_builder_ctor.test.tsx

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -57,35 +57,44 @@ const DisplayRendered = ({ buildWhen, stateComp, callback }: DisplayRenderedProp
5757
)
5858
}
5959

60-
it('buildWhen respected', (done) => {
60+
it('buildWhen respected', async () => {
6161
const buildWhenFn = jest.fn((prev, curr) => prev === curr)
6262
const instance = new TestController()
6363
const { container } = render(
6464
<ControllerProvider ctor={TestController} source={instance}>
6565
<DisplayRendered buildWhen={buildWhenFn} />
6666
</ControllerProvider>,
6767
)
68-
instance.inc()
69-
instance.inc()
70-
instance.inc()
71-
instance.inc()
72-
instance.inc()
73-
expect(buildWhenFn).toHaveBeenCalledTimes(5)
74-
expect(buildWhenFn.mock.calls[0][0]).toBe(0)
75-
expect(buildWhenFn.mock.calls[0][1]).toBe(1)
76-
expect(buildWhenFn.mock.calls[1][0]).toBe(1)
77-
expect(buildWhenFn.mock.calls[1][1]).toBe(2)
78-
expect(buildWhenFn.mock.calls[2][0]).toBe(2)
79-
expect(buildWhenFn.mock.calls[2][1]).toBe(3)
80-
expect(buildWhenFn.mock.calls[3][0]).toBe(3)
81-
expect(buildWhenFn.mock.calls[3][1]).toBe(4)
82-
expect(buildWhenFn.mock.calls[4][0]).toBe(4)
83-
expect(buildWhenFn.mock.calls[4][1]).toBe(5)
84-
const rendered = getByTestId(container, 'text')
85-
const renderedText = rendered.textContent
86-
const expectedText = '0'
87-
expect(renderedText).toBe(expectedText)
88-
done()
68+
await act(async () => {
69+
await asyncDelay(500)
70+
instance.inc()
71+
await asyncDelay(500)
72+
instance.inc()
73+
await asyncDelay(500)
74+
instance.inc()
75+
await asyncDelay(500)
76+
instance.inc()
77+
await asyncDelay(500)
78+
instance.inc()
79+
})
80+
81+
await waitFor(() => {
82+
expect(buildWhenFn).toHaveBeenCalledTimes(5)
83+
expect(buildWhenFn.mock.calls[0][0]).toBe(0)
84+
expect(buildWhenFn.mock.calls[0][1]).toBe(1)
85+
expect(buildWhenFn.mock.calls[1][0]).toBe(1)
86+
expect(buildWhenFn.mock.calls[1][1]).toBe(2)
87+
expect(buildWhenFn.mock.calls[2][0]).toBe(2)
88+
expect(buildWhenFn.mock.calls[2][1]).toBe(3)
89+
expect(buildWhenFn.mock.calls[3][0]).toBe(3)
90+
expect(buildWhenFn.mock.calls[3][1]).toBe(4)
91+
expect(buildWhenFn.mock.calls[4][0]).toBe(4)
92+
expect(buildWhenFn.mock.calls[4][1]).toBe(5)
93+
const rendered = getByTestId(container, 'text')
94+
const renderedText = rendered.textContent
95+
const expectedText = '0'
96+
expect(renderedText).toBe(expectedText)
97+
})
8998
})
9099

91100
it('rerender on state changed', async () => {
@@ -140,10 +149,14 @@ it('specified state compare respected', async () => {
140149
const expectedText = '0'
141150
expect(renderedText).toBe(expectedText)
142151

143-
act(() => {
152+
await act(async () => {
153+
asyncDelay(500)
144154
instance.inc()
155+
asyncDelay(500)
145156
instance.inc()
157+
asyncDelay(500)
146158
instance.inc()
159+
asyncDelay(500)
147160
instance.inc()
148161
})
149162
await waitFor(() => {

tests/hooks/use_selector/use_selector_controller.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,14 @@ it('specified state compare respected', async () => {
9090
)
9191
})
9292
expect(result.current).toBe(0)
93-
act(() => {
93+
await act(async () => {
94+
await asyncDelay(500)
9495
instance.inc()
96+
await asyncDelay(500)
9597
instance.inc()
98+
await asyncDelay(500)
9699
instance.inc()
100+
await asyncDelay(500)
97101
instance.inc()
98102
})
99103
await waitFor(() => {

tests/hooks/use_selector/use_selector_ctor.test.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,14 @@ it('specified state compare respected', async () => {
112112
const expectedText = '0'
113113
expect(renderedText).toBe(expectedText)
114114

115-
act(() => {
115+
await act(async () => {
116+
await asyncDelay(500)
116117
instance.inc()
118+
await asyncDelay(500)
117119
instance.inc()
120+
await asyncDelay(500)
118121
instance.inc()
122+
await asyncDelay(500)
119123
instance.inc()
120124
})
121125
await waitFor(() => {

0 commit comments

Comments
 (0)