Skip to content

Commit 246b41a

Browse files
committed
Fix tests.
1 parent d8a8245 commit 246b41a

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

src/useAsync.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ const useAsync = (opts, init) => {
4444
}
4545

4646
const load = () => {
47-
if (promiseFn && !(initialValue && counter.current === 0)) {
47+
const isPreInitialized = initialValue && counter.current === 0
48+
if (promiseFn && !isPreInitialized) {
4849
start()
4950
promiseFn(options).then(handleResolve(counter.current), handleReject(counter.current))
5051
}
@@ -67,7 +68,7 @@ const useAsync = (opts, init) => {
6768
isLoading: state.startedAt && (!state.finishedAt || state.finishedAt < state.startedAt),
6869
initialValue,
6970
run,
70-
reload: () => (lastArgs ? run(...lastArgs) : load()),
71+
reload: () => (lastArgs.current ? run(...lastArgs.current) : load()),
7172
cancel: () => {
7273
counter.current++
7374
setState(state => ({ ...state, startedAt: undefined }))

src/useAsync.spec.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,9 @@ test("useAsync passes finishedAt date when the promise finishes", async () => {
7979
await waitForElement(() => getByText("done"))
8080
})
8181

82-
test("useAsync passes reload function that re-runs the promise", () => {
83-
const promiseFn = jest.fn().mockReturnValue(resolveTo())
84-
const component = (
85-
<Async promiseFn={promiseFn}>
86-
{({ reload }) => {
87-
return <button onClick={reload}>reload</button>
88-
}}
89-
</Async>
90-
)
82+
test("useAsync passes reload function that re-runs the promise", async () => {
83+
const promiseFn = jest.fn().mockReturnValue(resolveTo("done"))
84+
const component = <Async promiseFn={promiseFn}>{({ reload }) => <button onClick={reload}>reload</button>}</Async>
9185
const { getByText, rerender } = render(component)
9286
rerender(component)
9387
expect(promiseFn).toHaveBeenCalledTimes(1)
@@ -221,16 +215,20 @@ test("useAsync cancels pending promise when unmounted", async () => {
221215
})
222216

223217
test("useAsync cancels and restarts the promise when promiseFn changes", async () => {
224-
const promiseFn1 = jest.fn().mockReturnValue(resolveIn(10)("one"))
225-
const promiseFn2 = jest.fn().mockReturnValue(resolveIn(10)("two"))
218+
const promiseFn1 = jest.fn().mockReturnValue(Promise.resolve("one"))
219+
const promiseFn2 = jest.fn().mockReturnValue(Promise.resolve("two"))
226220
const onResolve = jest.fn()
227221
const component1 = <Async promiseFn={promiseFn1} onResolve={onResolve} />
228222
const component2 = <Async promiseFn={promiseFn2} onResolve={onResolve} />
229223
const { rerender } = render(component1)
224+
await Promise.resolve()
225+
rerender(component1)
226+
expect(promiseFn1).toHaveBeenCalled()
230227
rerender(component2)
231-
await resolveIn(10)()
232228
rerender(component2)
229+
expect(promiseFn2).toHaveBeenCalled()
233230
expect(onResolve).not.toHaveBeenCalledWith("one")
231+
await Promise.resolve()
234232
expect(onResolve).toHaveBeenCalledWith("two")
235233
})
236234

0 commit comments

Comments
 (0)