1import { assert, describe, it } from "@effect/vitest"
2import { PrimaryKey, Schema } from "effect"
3import { Entity, EntityProxy } from "effect/cluster"
4import { Rpc } from "effect/rpc"
5
6describe("EntityProxy", () => {
7 it("constructs the original RPC payload", () => {
8 const Request = Rpc.make("Request", {
9 payload: { key: Schema.String },
10 primaryKey: ({ key }) => key
11 })
12 const entity = Entity.make("Entity", [Request])
13 const group = EntityProxy.toRpcGroup(entity)
14 const rpc = group.requests.get("Entity.Request")!
15
16 const payload = rpc.payloadSchema.make({
17 entityId: "entity-id",
18 payload: { key: "request-id" }
19 })
20
21 const originalPayload: unknown = payload.payload
22 const primaryKey = PrimaryKey.isPrimaryKey(originalPayload) ? PrimaryKey.value(originalPayload) : undefined
23 assert.strictEqual(primaryKey, "request-id")
24 })
25})