MCPcopy Create free account
hub / github.com/Effect-TS/effect / e2eSuite

Function e2eSuite

packages/platform/node/test/fixtures/rpc-e2e.ts:26–149  ·  view source on GitHub ↗
(
  name: string,
  layer: Layer.Layer<UsersClient | RpcServer.Protocol, E>,
  concurrent = true
)

Source from the content-addressed store, hash-verified

24}
25
26export const e2eSuite = <E>(
27 name: string,
28 layer: Layer.Layer<UsersClient | RpcServer.Protocol, E>,
29 concurrent = true
30) => {
31 describe(name, { concurrent, timeout: 30_000 }, () => {
32 it.effect("should get user", () =>
33 Effect.gen(function*() {
34 const client = yield* UsersClient
35 const user = yield* client.GetUser({ id: "1" })
36 assert.instanceOf(user, User)
37 assert.deepStrictEqual(user, new User({ id: "1", name: "Logged in user" }))
38 }).pipe(Effect.provide(layer)))
39
40 it.effect("should get deferred user", () =>
41 Effect.gen(function*() {
42 const client = yield* UsersClient
43 const user = yield* client.GetUserDeferred({ id: "1" })
44 assert.instanceOf(user, User)
45 assert.deepStrictEqual(user, new User({ id: "1", name: "John" }))
46 }).pipe(Effect.provide(layer)))
47
48 it.effect("nested method", () =>
49 Effect.gen(function*() {
50 const client = yield* UsersClient
51 yield* client["nested.test"]()
52 }).pipe(Effect.provide(layer)))
53
54 it.effect("should not flatten Option", () =>
55 Effect.gen(function*() {
56 const client = yield* UsersClient
57 const user = yield* client.GetUserOption({ id: "1" })
58 assert.deepStrictEqual(user, Option.some(new User({ id: "1", name: "John" })))
59 }).pipe(Effect.provide(layer)))
60
61 it.effect("headers", () =>
62 Effect.gen(function*() {
63 const client = yield* UsersClient
64 const user = yield* client.GetUser({ id: "1" })
65 assert.instanceOf(user, User)
66 assert.deepStrictEqual(user, new User({ id: "123", name: "Logged in user" }))
67 }).pipe(
68 RpcClient.withHeaders({ userId: "123" }),
69 Effect.provide(layer)
70 ))
71
72 it.live("Stream", () =>
73 Effect.gen(function*() {
74 const client = yield* UsersClient
75 const users: Array<User> = []
76 yield* client.StreamUsers({ id: "1" }).pipe(
77 Stream.take(5),
78 Stream.runForEach((user) =>
79 Effect.sync(() => {
80 users.push(user)
81 })
82 ),
83 Effect.forkChild

Callers 1

RpcServer.test.tsFile · 0.90

Calls 9

someMethod · 0.80
pushMethod · 0.80
pollUnsafeMethod · 0.80
pipeMethod · 0.65
takeMethod · 0.65
sleepMethod · 0.65
provideMethod · 0.45
syncMethod · 0.45
interruptMethod · 0.45

Tested by

no test coverage detected