Skip to content

Commit 3143304

Browse files
committed
Add test for event loop suspense
1 parent fe35cf4 commit 3143304

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/__tests__/suspense.test.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,40 @@ import React, {
1212
import renderPrepass from '..'
1313

1414
describe('renderPrepass', () => {
15+
describe('event loop yielding', () => {
16+
it('yields to the event loop when work is taking too long', () => {
17+
const Inner = jest.fn(() => null)
18+
19+
const Outer = () => {
20+
const start = Date.now()
21+
while (Date.now() - start < 11) {}
22+
return <Inner />
23+
}
24+
25+
const render$ = renderPrepass(<Outer />)
26+
27+
expect(Inner).toHaveBeenCalledTimes(0)
28+
29+
setImmediate(() => {
30+
setImmediate(() => {
31+
expect(Inner).toHaveBeenCalledTimes(1)
32+
})
33+
})
34+
35+
return render$.then(() => {
36+
expect(Inner).toHaveBeenCalledTimes(1)
37+
})
38+
})
39+
40+
it('does not yields when work is below the threshold', () => {
41+
const Inner = jest.fn(() => null)
42+
const Outer = () => <Inner />
43+
const render$ = renderPrepass(<Outer />)
44+
45+
expect(Inner).toHaveBeenCalledTimes(1)
46+
})
47+
})
48+
1549
describe('function components', () => {
1650
it('supports suspending subtrees', () => {
1751
const value = {}

0 commit comments

Comments
 (0)