MCPcopy Create free account
hub / github.com/effect-app/libs / suite

Function suite

repos/effect/packages/sql/sqlite-node/test/Persistence.test.ts:24–106  ·  view source on GitHub ↗
(name: string, layer: Layer.Layer<Persistence.BackingPersistence, never, SqlClient.SqlClient>)

Source from the content-addressed store, hash-verified

22const testLayer = (layer: Layer.Layer<Persistence.BackingPersistence, never, SqlClient.SqlClient>) =>
23 layer.pipe(Layer.provideMerge(ClientLayer))
24
25const suite = (name: string, layer: Layer.Layer<Persistence.BackingPersistence, never, SqlClient.SqlClient>) =>
26 it.layer(testLayer(layer))(`Persistence (${name})`, (it) => {
27 it.effect("set + get", () =>
28 Effect.gen(function*() {
29 const persistence = yield* Persistence.BackingPersistence
30 const store = yield* persistence.make("test_store")
31 yield* store.set("key1", { name: "Alice" }, undefined)
32 const value = yield* store.get("key1")
33 expect(value).toEqual({ name: "Alice" })
34
35 // test upsert
36 yield* store.set("key1", { name: "Alice" }, undefined)
37 }))
38
39 it.effect("setMany + getMany", () =>
40 Effect.gen(function*() {
41 const persistence = yield* Persistence.BackingPersistence
42 const store = yield* persistence.make("test_store_2")
43 yield* store.setMany([
44 ["key1", { name: "Alice" }, undefined],
45 ["key2", { name: "Bob" }, undefined],
46 ["key3", { name: "Charlie" }, undefined]
47 ])
48 const values = yield* store.getMany(["key1", "key2", "key3", "key4"])
49 expect(values).toEqual([
50 { name: "Alice" },
51 { name: "Bob" },
52 { name: "Charlie" },
53 undefined
54 ])
55 }))
56
57 it.effect("getMany with duplicate keys", () =>
58 Effect.gen(function*() {
59 const persistence = yield* Persistence.BackingPersistence
60 const store = yield* persistence.make("test_store_duplicate_keys")
61 yield* store.set("key", { value: 1 }, undefined)
62
63 expect(yield* store.getMany(["key", "key"])).toEqual([{ value: 1 }, { value: 1 }])
64 }))
65
66 it.effect("remove", () =>
67 Effect.gen(function*() {
68 const persistence = yield* Persistence.BackingPersistence
69 const store = yield* persistence.make("test_store_2")
70 yield* store.setMany([
71 ["key1", { name: "Alice" }, undefined],
72 ["key2", { name: "Bob" }, undefined],
73 ["key3", { name: "Charlie" }, undefined]
74 ])
75 yield* store.remove("key2")
76 const valuesAfter = yield* store.getMany(["key1", "key2", "key3"])
77 expect(valuesAfter).toEqual([{ name: "Alice" }, undefined, { name: "Charlie" }])
78 }))
79
80 it.effect("expires", () =>
81 Effect.gen(function*() {

Callers 1

Calls 6

adjustMethod · 0.80
testLayerFunction · 0.70
makeMethod · 0.65
setMethod · 0.65
getMethod · 0.65
removeMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…