Skip to content

Commit dabcb8b

Browse files
committed
Update tests.
1 parent 9fa5e48 commit dabcb8b

File tree

2 files changed

+67
-11
lines changed

2 files changed

+67
-11
lines changed

src/spec.js

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ import React from "react"
33
import { render, fireEvent, cleanup, waitForElement } from "react-testing-library"
44
import Async, { createInstance } from "./"
55

6+
const abortController = { abort: () => {} }
7+
window.AbortController = jest.fn().mockImplementation(() => abortController)
8+
69
afterEach(cleanup)
710

811
const resolveIn = ms => value => new Promise(resolve => setTimeout(resolve, ms, value))
@@ -20,7 +23,7 @@ describe("Async", () => {
2023
test("calls promiseFn with props", () => {
2124
const promiseFn = jest.fn().mockReturnValue(Promise.resolve())
2225
render(<Async promiseFn={promiseFn} anotherProp="123" />)
23-
expect(promiseFn).toHaveBeenCalledWith({ promiseFn, anotherProp: "123" })
26+
expect(promiseFn).toHaveBeenCalledWith({ promiseFn, anotherProp: "123" }, abortController)
2427
})
2528

2629
test("passes resolved data to children as render prop", async () => {
@@ -134,9 +137,19 @@ describe("Async", () => {
134137
)
135138
expect(deferFn).not.toHaveBeenCalled()
136139
fireEvent.click(getByText("run"))
137-
expect(deferFn).toHaveBeenCalledWith("go", 1, expect.objectContaining({ deferFn, foo: "bar" }))
140+
expect(deferFn).toHaveBeenCalledWith(
141+
"go",
142+
1,
143+
expect.objectContaining({ deferFn, foo: "bar" }),
144+
abortController
145+
)
138146
fireEvent.click(getByText("run"))
139-
expect(deferFn).toHaveBeenCalledWith("go", 2, expect.objectContaining({ deferFn, foo: "bar" }))
147+
expect(deferFn).toHaveBeenCalledWith(
148+
"go",
149+
2,
150+
expect.objectContaining({ deferFn, foo: "bar" }),
151+
abortController
152+
)
140153
})
141154

142155
test("reload uses the arguments of the previous run", () => {
@@ -156,11 +169,26 @@ describe("Async", () => {
156169
)
157170
expect(deferFn).not.toHaveBeenCalled()
158171
fireEvent.click(getByText("run"))
159-
expect(deferFn).toHaveBeenCalledWith("go", 1, expect.objectContaining({ deferFn }))
172+
expect(deferFn).toHaveBeenCalledWith(
173+
"go",
174+
1,
175+
expect.objectContaining({ deferFn }),
176+
abortController
177+
)
160178
fireEvent.click(getByText("run"))
161-
expect(deferFn).toHaveBeenCalledWith("go", 2, expect.objectContaining({ deferFn }))
179+
expect(deferFn).toHaveBeenCalledWith(
180+
"go",
181+
2,
182+
expect.objectContaining({ deferFn }),
183+
abortController
184+
)
162185
fireEvent.click(getByText("reload"))
163-
expect(deferFn).toHaveBeenCalledWith("go", 2, expect.objectContaining({ deferFn }))
186+
expect(deferFn).toHaveBeenCalledWith(
187+
"go",
188+
2,
189+
expect.objectContaining({ deferFn }),
190+
abortController
191+
)
164192
})
165193

166194
test("only accepts the last invocation of the promise", async () => {

src/useAsync.spec.js

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ import React from "react"
33
import { render, fireEvent, cleanup, waitForElement, flushEffects } from "react-testing-library"
44
import { useAsync } from "."
55

6+
const abortController = { abort: () => {} }
7+
window.AbortController = jest.fn().mockImplementation(() => abortController)
8+
69
afterEach(cleanup)
710

811
const resolveIn = ms => value => new Promise(resolve => setTimeout(resolve, ms, value))
@@ -134,9 +137,19 @@ describe("useAsync", () => {
134137
flushEffects()
135138
expect(deferFn).not.toHaveBeenCalled()
136139
fireEvent.click(getByText("run"))
137-
expect(deferFn).toHaveBeenCalledWith("go", 1, expect.objectContaining({ deferFn, foo: "bar" }))
140+
expect(deferFn).toHaveBeenCalledWith(
141+
"go",
142+
1,
143+
expect.objectContaining({ deferFn, foo: "bar" }),
144+
abortController
145+
)
138146
fireEvent.click(getByText("run"))
139-
expect(deferFn).toHaveBeenCalledWith("go", 2, expect.objectContaining({ deferFn, foo: "bar" }))
147+
expect(deferFn).toHaveBeenCalledWith(
148+
"go",
149+
2,
150+
expect.objectContaining({ deferFn, foo: "bar" }),
151+
abortController
152+
)
140153
})
141154

142155
test("cancel will prevent the resolved promise from propagating", async () => {
@@ -173,11 +186,26 @@ describe("useAsync", () => {
173186
flushEffects()
174187
expect(deferFn).not.toHaveBeenCalled()
175188
fireEvent.click(getByText("run"))
176-
expect(deferFn).toHaveBeenCalledWith("go", 1, expect.objectContaining({ deferFn }))
189+
expect(deferFn).toHaveBeenCalledWith(
190+
"go",
191+
1,
192+
expect.objectContaining({ deferFn }),
193+
abortController
194+
)
177195
fireEvent.click(getByText("run"))
178-
expect(deferFn).toHaveBeenCalledWith("go", 2, expect.objectContaining({ deferFn }))
196+
expect(deferFn).toHaveBeenCalledWith(
197+
"go",
198+
2,
199+
expect.objectContaining({ deferFn }),
200+
abortController
201+
)
179202
fireEvent.click(getByText("reload"))
180-
expect(deferFn).toHaveBeenCalledWith("go", 2, expect.objectContaining({ deferFn }))
203+
expect(deferFn).toHaveBeenCalledWith(
204+
"go",
205+
2,
206+
expect.objectContaining({ deferFn }),
207+
abortController
208+
)
181209
})
182210

183211
test("only accepts the last invocation of the promise", async () => {

0 commit comments

Comments
 (0)