Skip to content

Commit 8d5400b

Browse files
committed
test: refine tests
also remove some patching around behavior Signed-off-by: Yuval Datner <[email protected]>
1 parent 851b7b9 commit 8d5400b

File tree

2 files changed

+51
-18
lines changed

2 files changed

+51
-18
lines changed

test/hooks/useResult.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,28 @@ const { useResult } = RuntimeProvider.makeFromLayer(Layer.succeed(foo, { value:
1717
describe("useResult", () => {
1818
it("should run effects", async () => {
1919
const testEffect = Effect.succeed(1)
20-
const { result } = await waitFor(async () => renderHook(() => useResult(() => testEffect, [])))
21-
expect(Result.isSuccess(result.current.result)).toBe(true)
20+
const { result } = renderHook(() => useResult(() => testEffect, []))
21+
expect(Result.isInitial(result.current.result)).toBe(true)
22+
await waitFor(() => expect(Result.isSuccess(result.current.result)).toBe(true))
2223
})
2324

2425
it("should provide context", async () => {
2526
const testEffect = Effect.map(foo, (_) => _.value)
26-
const { result } = await waitFor(async () => renderHook(() => useResult(() => testEffect, [])))
27-
await waitFor(() => expect(Result.isSuccess(result.current.result)).toBe(true))
28-
assert(Result.isSuccess(result.current.result))
29-
expect(result.current.result.value).toBe(1)
27+
const { result } = renderHook(() => useResult(() => testEffect, []))
28+
expect(Result.isInitial(result.current.result)).toBe(true)
29+
await waitFor(() => {
30+
assert(Result.isSuccess(result.current.result))
31+
return expect(result.current.result.value).toBe(1)
32+
})
3033
})
3134

3235
it("should run streams", async () => {
3336
const testStream = Stream.succeed(1)
34-
const { result } = await waitFor(async () => renderHook(() => useResult(() => testStream, [])))
35-
await waitFor(() => expect(Result.isSuccess(result.current.result)).toBe(true))
36-
assert(Result.isSuccess(result.current.result))
37-
expect(result.current.result.value).toBe(1)
37+
const { result } = renderHook(() => useResult(() => testStream, []))
38+
expect(Result.isInitial(result.current.result)).toBe(true)
39+
await waitFor(() => {
40+
assert(Result.isSuccess(result.current.result))
41+
return expect(result.current.result.value).toBe(1)
42+
})
3843
})
3944
})

test/hooks/useResultCallback.ts

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,48 @@ describe("useResultCallback", () => {
1717
it("should do good", async () => {
1818
const testEffect = (value: number) => Effect.succeed(value)
1919

20-
const { result } = await waitFor(async () => renderHook(() => useResultCallback(testEffect)))
20+
const { result } = renderHook(() => useResultCallback(testEffect))
2121

22-
expect(Result.isInitial(result.current[0].result)).toBe(true)
22+
assert.isTrue(Result.isInitial(result.current[0].result))
2323
act(() => {
2424
result.current[1](1)
2525
})
26-
await waitFor(() => expect(Result.isSuccess(result.current[0].result)).toBe(true))
27-
assert(Result.isSuccess(result.current[0].result))
28-
expect(result.current[0].result.value).toBe(1)
26+
await waitFor(() => {
27+
assert(Result.isSuccess(result.current[0].result))
28+
return expect(result.current[0].result.value).toBe(1)
29+
})
2930
act(() => {
3031
result.current[1](2)
3132
})
32-
await waitFor(() => expect(Result.isSuccess(result.current[0].result)).toBe(true))
33-
assert(Result.isSuccess(result.current[0].result))
34-
expect(result.current[0].result.value).toBe(2)
33+
await waitFor(() => {
34+
assert(Result.isSuccess(result.current[0].result))
35+
return expect(result.current[0].result.value).toBe(2)
36+
})
37+
})
38+
39+
it("should do good async", async () => {
40+
const testEffect = (value: number) =>
41+
Effect.async<never, never, number>((cb) => {
42+
setTimeout(() => cb(Effect.succeed(value)), 100)
43+
})
44+
const { result } = renderHook(() => useResultCallback(testEffect))
45+
46+
assert.isTrue(Result.isInitial(result.current[0].result))
47+
act(() => {
48+
result.current[1](1)
49+
})
50+
await waitFor(() => assert.isTrue(result.current[0].isLoading))
51+
await waitFor(() => {
52+
assert(Result.isSuccess(result.current[0].result))
53+
return expect(result.current[0].result.value).toBe(1)
54+
})
55+
act(() => {
56+
result.current[1](2)
57+
})
58+
await waitFor(() => assert.isTrue(result.current[0].isRefreshing))
59+
await waitFor(() => {
60+
assert(Result.isSuccess(result.current[0].result))
61+
return expect(result.current[0].result.value).toBe(2)
62+
})
3563
})
3664
})

0 commit comments

Comments
 (0)