diff --git a/packages/reffuse/src/tests.ts b/packages/reffuse/src/tests.ts index 1db3454..b7eb6b0 100644 --- a/packages/reffuse/src/tests.ts +++ b/packages/reffuse/src/tests.ts @@ -7,6 +7,16 @@ const runtime = Runtime.make({ fiberRefs: FiberRefs.empty(), }) +const createRunSync = (runtime: Runtime.Runtime, layer: Layer.Layer) => { + const context = Effect.context().pipe( + Effect.provide(layer), + Runtime.runSync(runtime), + ) + + return (effect: Effect.Effect) => + Runtime.runSync(runtime)(effect.pipe(Effect.provide(context))) +} + class MyService extends Effect.Service()("MyServer", { effect: Effect.gen(function*() { @@ -20,12 +30,14 @@ const MyLayer = Layer.empty.pipe( Layer.provideMerge(MyService.Default) ) + +const runSync = createRunSync(runtime, MyLayer) + const setMyServiceValue = (value: string) => Effect.gen(function*() { console.log("previous value: ", yield* (yield* MyService).ref) yield* Ref.set((yield* MyService).ref, value) console.log("new value: ", yield* (yield* MyService).ref) }) - -Runtime.runSync(runtime)(setMyServiceValue("1").pipe(Effect.provide(MyLayer))) -Runtime.runSync(runtime)(setMyServiceValue("2").pipe(Effect.provide(MyLayer))) +runSync(setMyServiceValue("1")) +runSync(setMyServiceValue("2"))