Skip to content

Commit aab3e9b

Browse files
committed
flush promises after handle changes
1 parent 0f4d146 commit aab3e9b

File tree

2 files changed

+27
-49
lines changed

2 files changed

+27
-49
lines changed

test/create-document-projection.test.tsx

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -285,41 +285,32 @@ describe("createDocumentProjection", () => {
285285
)
286286
})
287287

288-
h2.change(doc => (doc.key = "document-2"))
289-
expect(result.getByTestId("key-stable").textContent).toBe("value")
290-
expect(result.getByTestId("key-changing").textContent).toBe("value")
288+
return testEffect(async done => {
289+
h2.change(doc => (doc.key = "document-2"))
290+
expect(result.getByTestId("key-stable").textContent).toBe("value")
291+
expect(result.getByTestId("key-changing").textContent).toBe("value")
291292

292-
await testEffect(done => {
293293
h1.change(doc => (doc.key = "hello"))
294-
done()
295-
})
296-
expect(result.getByTestId("key-stable").textContent).toBe("hello")
297-
expect(result.getByTestId("key-changing").textContent).toBe("hello")
294+
await new Promise<void>(setImmediate)
295+
296+
expect(result.getByTestId("key-stable").textContent).toBe("hello")
297+
expect(result.getByTestId("key-changing").textContent).toBe("hello")
298298

299-
await testEffect(done => {
300299
setChangingHandle(() => h2)
301-
done()
302-
})
303-
expect(result.getByTestId("key-stable").textContent).toBe("hello")
304-
expect(result.getByTestId("key-changing").textContent).toBe("document-2")
305300

306-
await testEffect(done => {
301+
expect(result.getByTestId("key-stable").textContent).toBe("hello")
302+
expect(result.getByTestId("key-changing").textContent).toBe("document-2")
303+
307304
setChangingHandle(() => h1)
305+
306+
expect(result.getByTestId("key-stable").textContent).toBe("hello")
307+
expect(result.getByTestId("key-changing").textContent).toBe("hello")
308308
done()
309-
})
310-
expect(result.getByTestId("key-stable").textContent).toBe("hello")
311-
expect(result.getByTestId("key-changing").textContent).toBe("hello")
312309

313-
await testEffect(async done => {
314310
setChangingHandle(h2)
315311
h2.change(doc => (doc.key = "world"))
316-
done()
317-
})
318-
319-
// todo why do i need to do this? `world` is `document-2` if i don't
320-
await testEffect(done => done())
312+
await new Promise<void>(setImmediate)
321313

322-
await testEffect(done => {
323314
expect(result.getByTestId("key-stable").textContent).toBe("hello")
324315
expect(result.getByTestId("key-changing").textContent).toBe("world")
325316
done()

test/use-document.test.tsx

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -242,42 +242,29 @@ describe("useDocument", () => {
242242
)
243243
})
244244

245-
h2.change(doc => (doc.key = "document-2"))
246-
expect(result.getByTestId("key-stable").textContent).toBe("value")
247-
expect(result.getByTestId("key-changing").textContent).toBe("value")
245+
return testEffect(async done => {
246+
h2.change(doc => (doc.key = "document-2"))
247+
expect(result.getByTestId("key-stable").textContent).toBe("value")
248+
expect(result.getByTestId("key-changing").textContent).toBe("value")
248249

249-
await testEffect(done => {
250250
h1.change(doc => (doc.key = "hello"))
251-
done()
252-
})
251+
await new Promise(yay => setImmediate(yay))
253252

254-
expect(result.getByTestId("key-stable").textContent).toBe("hello")
255-
expect(result.getByTestId("key-changing").textContent).toBe("hello")
253+
expect(result.getByTestId("key-stable").textContent).toBe("hello")
254+
expect(result.getByTestId("key-changing").textContent).toBe("hello")
256255

257-
await testEffect(done => {
258256
setChangingURL(u2)
259-
done()
260-
})
261-
expect(result.getByTestId("key-stable").textContent).toBe("hello")
262-
expect(result.getByTestId("key-changing").textContent).toBe("document-2")
257+
expect(result.getByTestId("key-stable").textContent).toBe("hello")
258+
expect(result.getByTestId("key-changing").textContent).toBe("document-2")
263259

264-
await testEffect(done => {
265260
setChangingURL(u1)
266-
done()
267-
})
268-
expect(result.getByTestId("key-stable").textContent).toBe("hello")
269-
expect(result.getByTestId("key-changing").textContent).toBe("hello")
261+
expect(result.getByTestId("key-stable").textContent).toBe("hello")
262+
expect(result.getByTestId("key-changing").textContent).toBe("hello")
270263

271-
await testEffect(done => {
272264
h2.change(doc => (doc.key = "world"))
265+
await new Promise(yay => setImmediate(yay))
273266
setChangingURL(u2)
274-
done()
275-
})
276-
277-
// todo why do i need to do this? `world` is `document-2` if i don't
278-
await testEffect(done => done())
279267

280-
await testEffect(done => {
281268
expect(result.getByTestId("key-stable").textContent).toBe("hello")
282269
expect(result.getByTestId("key-changing").textContent).toBe("world")
283270
done()

0 commit comments

Comments
 (0)