Skip to content

Commit

Permalink
fix test timers
Browse files Browse the repository at this point in the history
  • Loading branch information
tim-smart committed Sep 26, 2023
1 parent e212278 commit 8b99959
Show file tree
Hide file tree
Showing 2 changed files with 191 additions and 349 deletions.
36 changes: 15 additions & 21 deletions packages/rx/test/Rx.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,6 @@ import * as Layer from "@effect/io/Layer"
import * as Stream from "@effect/stream/Stream"

describe("Rx", () => {
beforeEach(() => {
vi.useFakeTimers()
})
afterEach(() => {
vi.restoreAllMocks()
})

it("get/set", () => {
const counter = Rx.state(0)
const r = Registry.make()
Expand Down Expand Up @@ -197,8 +190,9 @@ describe("Rx", () => {
})

it("stream", async () => {
vi.useRealTimers()
const count = Rx.stream(() =>
Stream.range(0, 3).pipe(
Stream.range(0, 2).pipe(
Stream.tap(() => Effect.sleep(50))
)
)
Expand All @@ -208,18 +202,18 @@ describe("Rx", () => {
assert(Result.isWaiting(result))
assert(Result.isInitial(result.previous))

await vi.advanceTimersByTimeAsync(50)
await new Promise((resolve) => setTimeout(resolve, 55))
result = r.get(count)
assert(Result.isWaiting(result))
assert(Result.isSuccess(result.previous))
assert.deepEqual(result.previous.value, 0)

await vi.advanceTimersByTimeAsync(50)
await new Promise((resolve) => setTimeout(resolve, 50))
result = r.get(count)
assert(Result.isWaiting(result))
assert.deepEqual(Result.value(result), Option.some(1))

await vi.advanceTimersByTimeAsync(50)
await new Promise((resolve) => setTimeout(resolve, 50))
result = r.get(count)
assert(Result.isSuccess(result))
assert.deepEqual(Result.value(result), Option.some(2))
Expand All @@ -233,7 +227,7 @@ describe("Rx", () => {

it("streamFn", async () => {
const count = Rx.streamFn((start: number) =>
Stream.range(start, start + 2).pipe(
Stream.range(start, start + 1).pipe(
Stream.tap(() => Effect.sleep(50))
)
)
Expand All @@ -242,7 +236,7 @@ describe("Rx", () => {
let result = r.get(count)
assert.strictEqual(result._tag, "Initial")

await vi.advanceTimersByTimeAsync(50)
await new Promise((resolve) => setTimeout(resolve, 55))
result = r.get(count)
assert.strictEqual(result._tag, "Initial")

Expand All @@ -251,12 +245,12 @@ describe("Rx", () => {
assert(Result.isWaiting(result))
assert.strictEqual(result.previous._tag, "Initial")

await vi.advanceTimersByTimeAsync(50)
await new Promise((resolve) => setTimeout(resolve, 55))
result = r.get(count)
assert(Result.isWaiting(result))
assert.deepEqual(Result.value(result), Option.some(1))

await vi.advanceTimersByTimeAsync(50)
await new Promise((resolve) => setTimeout(resolve, 50))
result = r.get(count)
assert(Result.isSuccess(result))
assert.deepEqual(Result.value(result), Option.some(2))
Expand All @@ -266,12 +260,12 @@ describe("Rx", () => {
assert(Result.isWaiting(result))
assert.deepEqual(Result.value(result), Option.some(2))

await vi.advanceTimersByTimeAsync(50)
await new Promise((resolve) => setTimeout(resolve, 55))
result = r.get(count)
assert(Result.isWaiting(result))
assert.deepEqual(Result.value(result), Option.some(5))

await vi.advanceTimersByTimeAsync(50)
await new Promise((resolve) => setTimeout(resolve, 50))
result = r.get(count)
assert(Result.isSuccess(result))
assert.deepEqual(Result.value(result), Option.some(6))
Expand All @@ -284,7 +278,7 @@ describe("Rx", () => {

it("streamPull", async () => {
const count = Rx.streamPull(() =>
Stream.range(0, 2, 1).pipe(
Stream.range(0, 1, 1).pipe(
Stream.tap(() => Effect.sleep(50))
)
).pipe(Rx.refreshable)
Expand All @@ -295,7 +289,7 @@ describe("Rx", () => {
assert(Result.isWaiting(result))
assert(Option.isNone(Result.value(result)))

await vi.advanceTimersByTimeAsync(50)
await new Promise((resolve) => setTimeout(resolve, 55))
result = r.get(count)
assert(Result.isSuccess(result))
assert.deepEqual(result.value, { done: false, items: [0] })
Expand All @@ -305,7 +299,7 @@ describe("Rx", () => {
assert(Result.isWaiting(result))
assert.deepEqual(Result.value(result), Option.some({ done: false, items: [0] }))

await vi.advanceTimersByTimeAsync(50)
await new Promise((resolve) => setTimeout(resolve, 55))
result = r.get(count)
assert(Result.isSuccess(result))
assert.deepEqual(result.value, { done: false, items: [0, 1] })
Expand All @@ -320,7 +314,7 @@ describe("Rx", () => {
assert(Result.isWaiting(result))
assert.deepEqual(Result.value(result), Option.some({ done: true, items: [0, 1] }))

await vi.advanceTimersByTimeAsync(50)
await new Promise((resolve) => setTimeout(resolve, 55))
result = r.get(count)
assert(Result.isSuccess(result))
assert.deepEqual(result.value, { done: false, items: [0] })
Expand Down
Loading

0 comments on commit 8b99959

Please sign in to comment.