MCPcopy Index your code
hub / github.com/Effect-TS/effect / testsuite

Function testsuite

packages/experimental/test/RequestResolver.test.ts:42–133  ·  view source on GitHub ↗
(
      storeId: "memory" | "kvs" | "lmdb",
      layer: Layer.Layer<Persistence.ResultPersistence, unknown>
    )

Source from the content-addressed store, hash-verified

40describe("RequestResolver", () => {
41 describe("persisted", () => {
42 const testsuite = (
43 storeId: "memory" | "kvs" | "lmdb",
44 layer: Layer.Layer<Persistence.ResultPersistence, unknown>
45 ) =>
46 it.effect(storeId, () =>
47 Effect.gen(function*() {
48 let count = 0
49 const baseResolver = RequestResolver.makeBatched((reqs: NonEmptyArray<MyRequest | TTLRequest>) => {
50 count += reqs.length
51 return Effect.forEach(reqs, (req) => {
52 if (req.id === -1) return Request.fail(req, "not found")
53 return Request.succeed(req, new User({ id: req.id, name: "John" }))
54 }, { discard: true })
55 })
56 const persisted = yield* RequestResolverX.persisted(baseResolver, {
57 storeId,
58 timeToLive: (_req, exit) => Exit.isSuccess(exit) ? 5000 : 1
59 })
60 let users = yield* Effect.forEach(
61 Array.range(1, 5),
62 (id) => Effect.request(new MyRequest({ id }), persisted),
63 {
64 batching: true
65 }
66 )
67 assert.strictEqual(count, 5)
68 assert.strictEqual(users.length, 5)
69 users = yield* Effect.forEach(Array.range(1, 5), (id) => Effect.request(new MyRequest({ id }), persisted), {
70 batching: true
71 })
72 assert.strictEqual(count, 5)
73 assert.strictEqual(users.length, 5)
74
75 // ttl
76 let results = yield* Effect.forEach(
77 Array.range(-1, 3),
78 (id) => Effect.exit(Effect.request(new TTLRequest({ id }), persisted)),
79 {
80 batching: true
81 }
82 )
83
84 assert.strictEqual(count, 10)
85 assert.strictEqual(results.length, 5)
86 assert(Exit.isFailure(results[0]))
87 assert(Exit.isSuccess(results[1]))
88
89 results = yield* Effect.forEach(
90 Array.range(-1, 3),
91 (id) => Effect.exit(Effect.request(new TTLRequest({ id }), persisted)),
92 {
93 batching: true
94 }
95 )
96 assert.strictEqual(count, 10)
97 assert.strictEqual(results.length, 5)
98
99 yield* TestClock.adjust(1)

Callers 1

Calls 7

requestMethod · 0.80
pipeMethod · 0.65
failMethod · 0.65
adjustMethod · 0.65
makeMethod · 0.65
provideMethod · 0.65
assertFunction · 0.50

Tested by

no test coverage detected