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

Function testLayer

packages/effect/test/FileSystem.test-utils.ts:15–435  ·  view source on GitHub ↗
(layer: Layer.Layer<Fs.FileSystem, E>, options: TestLayerOptions = {})

Source from the content-addressed store, hash-verified

13}
14
15export const testLayer = <E>(layer: Layer.Layer<Fs.FileSystem, E>, options: TestLayerOptions = {}) => {
16 const runPromise = <E2, A>(self: Effect.Effect<A, E2, Fs.FileSystem>) =>
17 Effect.runPromise(
18 Effect.provide(self, layer)
19 )
20
21 it("readFile", () =>
22 runPromise(Effect.gen(function*() {
23 const fs = yield* Fs.FileSystem
24 const data = yield* fs.readFile(`${__dirname}/fixtures/text.txt`)
25 const text = new TextDecoder().decode(data)
26 expect(text.trim()).toEqual("lorem ipsum dolar sit amet")
27 })))
28
29 it("makeTempDirectory", () =>
30 runPromise(Effect.gen(function*() {
31 const fs = yield* Fs.FileSystem
32 let dir = ""
33 yield* Effect.scoped(Effect.gen(function*() {
34 dir = yield* fs.makeTempDirectory()
35 const stat = yield* fs.stat(dir)
36 expect(stat.type).toEqual("Directory")
37 }))
38 const stat = yield* fs.stat(dir)
39 expect(stat.type).toEqual("Directory")
40 })))
41
42 it("makeTempDirectoryScoped", () =>
43 runPromise(Effect.gen(function*() {
44 const fs = yield* Fs.FileSystem
45 let dir = ""
46 yield* Effect.scoped(
47 Effect.gen(function*() {
48 dir = yield* fs.makeTempDirectoryScoped()
49 const stat = yield* fs.stat(dir)
50 expect(stat.type).toEqual("Directory")
51 })
52 )
53 const error = yield* Effect.flip(fs.stat(dir))
54 assert(error.reason._tag === "NotFound")
55 })))
56
57 it.skipIf(options.accessOnDirectory === false)(
58 "access on a writable directory",
59 () =>
60 runPromise(Effect.gen(function*() {
61 const fs = yield* Fs.FileSystem
62 yield* Effect.scoped(Effect.gen(function*() {
63 const dir = yield* fs.makeTempDirectoryScoped()
64 yield* fs.access(dir, { writable: true })
65 }))
66 }))
67 )
68
69 it("makeTempFileScoped cleans up", () =>
70 runPromise(Effect.gen(function*() {
71 const fs = yield* Fs.FileSystem
72 yield* Effect.scoped(Effect.gen(function*() {

Calls 13

joinMethod · 0.80
runPromiseFunction · 0.70
pipeMethod · 0.65
resultMethod · 0.65
streamMethod · 0.65
writeMethod · 0.65
assertFunction · 0.50
statMethod · 0.45
flipMethod · 0.45
mapMethod · 0.45
truncateMethod · 0.45
readAllocMethod · 0.45

Tested by

no test coverage detected