MCPcopy
hub / github.com/Effect-TS/effect / e2eSuite

Function e2eSuite

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

Source from the content-addressed store, hash-verified

5import { User, UsersClient } from "./fixtures/rpc-schemas.js"
6
7export const e2eSuite = <E>(
8 name: string,
9 layer: Layer.Layer<UsersClient | RpcServer.Protocol, E>,
10 concurrent = true
11) => {
12 describe(name, { concurrent, timeout: 30_000 }, () => {
13 it.effect("should get user", () =>
14 Effect.gen(function*() {
15 const client = yield* UsersClient
16 const user = yield* client.GetUser({ id: "1" })
17 assert.instanceOf(user, User)
18 assert.deepStrictEqual(user, new User({ id: "1", name: "Logged in user" }))
19 }).pipe(Effect.provide(layer)))
20
21 it.effect("nested method", () =>
22 Effect.gen(function*() {
23 const client = yield* UsersClient
24 yield* client.nested.test()
25 }).pipe(Effect.provide(layer)))
26
27 it.effect("should not flatten Option", () =>
28 Effect.gen(function*() {
29 const client = yield* UsersClient
30 const user = yield* client.GetUserOption({ id: "1" })
31 assert.deepStrictEqual(user, Option.some(new User({ id: "1", name: "John" })))
32 }).pipe(Effect.provide(layer)))
33
34 it.effect("headers", () =>
35 Effect.gen(function*() {
36 const client = yield* UsersClient
37 const user = yield* client.GetUser({ id: "1" })
38 assert.instanceOf(user, User)
39 assert.deepStrictEqual(user, new User({ id: "123", name: "Logged in user" }))
40 }).pipe(
41 RpcClient.withHeaders({ userId: "123" }),
42 Effect.provide(layer)
43 ))
44
45 it.live("Stream", () =>
46 Effect.gen(function*() {
47 const client = yield* UsersClient
48 const users: Array<User> = []
49 yield* client.StreamUsers({ id: "1" }).pipe(
50 Stream.take(5),
51 Stream.runForEach((user) =>
52 Effect.sync(() => {
53 users.push(user)
54 })
55 ),
56 Effect.fork
57 )
58
59 yield* Effect.sleep(2000)
60 assert.lengthOf(users, 5)
61
62 // test interrupts
63 const interrupts = yield* client.GetInterrupts()
64 assert.equal(interrupts, 1)

Callers 1

RpcWorker.test.tsFile · 0.70

Calls 8

syncMethod · 0.80
pipeMethod · 0.65
provideMethod · 0.65
takeMethod · 0.65
sleepMethod · 0.65
dieMethod · 0.65
unsafePollMethod · 0.65
interruptMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…