@effect/vitest 0.10.4 → 0.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -9,10 +9,11 @@ var _exportNames = {
9
9
  scoped: true,
10
10
  live: true,
11
11
  scopedLive: true,
12
+ layer: true,
12
13
  flakyTest: true,
13
14
  it: true
14
15
  };
15
- exports.scopedLive = exports.scoped = exports.live = exports.it = exports.flakyTest = exports.effect = exports.addEqualityTesters = void 0;
16
+ exports.scopedLive = exports.scoped = exports.live = exports.layer = exports.it = exports.flakyTest = exports.effect = exports.addEqualityTesters = void 0;
16
17
  var V = _interopRequireWildcard(require("vitest"));
17
18
  Object.keys(V).forEach(function (key) {
18
19
  if (key === "default" || key === "__esModule") return;
@@ -48,6 +49,49 @@ const live = exports.live = internal.live;
48
49
  * @since 1.0.0
49
50
  */
50
51
  const scopedLive = exports.scopedLive = internal.scopedLive;
52
+ /**
53
+ * Share a `Layer` between multiple tests, optionally wrapping
54
+ * the tests in a `describe` block if a name is provided.
55
+ *
56
+ * @since 1.0.0
57
+ *
58
+ * ```ts
59
+ * import { expect, layer } from "@effect/vitest"
60
+ * import { Context, Effect, Layer } from "effect"
61
+ *
62
+ * class Foo extends Context.Tag("Foo")<Foo, "foo">() {
63
+ * static Live = Layer.succeed(Foo, "foo")
64
+ * }
65
+ *
66
+ * class Bar extends Context.Tag("Bar")<Bar, "bar">() {
67
+ * static Live = Layer.effect(
68
+ * Bar,
69
+ * Effect.map(Foo, () => "bar" as const)
70
+ * )
71
+ * }
72
+ *
73
+ * layer(Foo.Live)("layer", (it) => {
74
+ * it.effect("adds context", () =>
75
+ * Effect.gen(function* () {
76
+ * const foo = yield* Foo
77
+ * expect(foo).toEqual("foo")
78
+ * })
79
+ * )
80
+ *
81
+ * it.layer(Bar.Live)("nested", (it) => {
82
+ * it.effect("adds context", () =>
83
+ * Effect.gen(function* () {
84
+ * const foo = yield* Foo
85
+ * const bar = yield* Bar
86
+ * expect(foo).toEqual("foo")
87
+ * expect(bar).toEqual("bar")
88
+ * })
89
+ * )
90
+ * })
91
+ * })
92
+ * ```
93
+ */
94
+ const layer = exports.layer = internal.layer;
51
95
  /**
52
96
  * @since 1.0.0
53
97
  */
@@ -58,7 +102,8 @@ const methods = {
58
102
  live,
59
103
  flakyTest,
60
104
  scoped,
61
- scopedLive
105
+ scopedLive,
106
+ layer
62
107
  };
63
108
  /**
64
109
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["V","_interopRequireWildcard","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","internal","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","n","__proto__","a","getOwnPropertyDescriptor","u","i","set","addEqualityTesters","effect","scoped","live","scopedLive","flakyTest","methods","it","assign"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;AAOA,IAAAA,CAAA,GAAAC,uBAAA,CAAAC,OAAA;AAuFAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,EAAAK,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAN,CAAA,CAAAM,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAd,CAAA,CAAAM,GAAA;IAAA;EAAA;AAAA;AAtFA,IAAAS,QAAA,GAAAd,uBAAA,CAAAC,OAAA;AAAyC,SAAAc,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAhB,wBAAAgB,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAN,GAAA,CAAAG,CAAA,OAAAO,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAvB,MAAA,CAAAS,cAAA,IAAAT,MAAA,CAAAwB,wBAAA,WAAAC,CAAA,IAAAX,CAAA,oBAAAW,CAAA,OAAApB,cAAA,CAAAC,IAAA,CAAAQ,CAAA,EAAAW,CAAA,SAAAC,CAAA,GAAAH,CAAA,GAAAvB,MAAA,CAAAwB,wBAAA,CAAAV,CAAA,EAAAW,CAAA,UAAAC,CAAA,KAAAA,CAAA,CAAAf,GAAA,IAAAe,CAAA,CAAAC,GAAA,IAAA3B,MAAA,CAAAS,cAAA,CAAAY,CAAA,EAAAI,CAAA,EAAAC,CAAA,IAAAL,CAAA,CAAAI,CAAA,IAAAX,CAAA,CAAAW,CAAA,YAAAJ,CAAA,CAAAF,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAU,GAAA,CAAAb,CAAA,EAAAO,CAAA,GAAAA,CAAA;AA0CzC;;;AAGO,MAAMO,kBAAkB,GAAApB,OAAA,CAAAoB,kBAAA,GAAehB,QAAQ,CAACgB,kBAAkB;AAEzE;;;AAGO,MAAMC,MAAM,GAAArB,OAAA,CAAAqB,MAAA,GAA6CjB,QAAQ,CAACiB,MAAM;AAE/E;;;AAGO,MAAMC,MAAM,GAAAtB,OAAA,CAAAsB,MAAA,GAA2DlB,QAAQ,CAACkB,MAAM;AAE7F;;;AAGO,MAAMC,IAAI,GAAAvB,OAAA,CAAAuB,IAAA,GAAyBnB,QAAQ,CAACmB,IAAI;AAEvD;;;AAGO,MAAMC,UAAU,GAAAxB,OAAA,CAAAwB,UAAA,GAA+BpB,QAAQ,CAACoB,UAAU;AAEzE;;;AAGO,MAAMC,SAAS,GAAAzB,OAAA,CAAAyB,SAAA,GAGYrB,QAAQ,CAACqB,SAAS;AAEpD;AACA,MAAMC,OAAO,GAAG;EAAEL,MAAM;EAAEE,IAAI;EAAEE,SAAS;EAAEH,MAAM;EAAEE;AAAU,CAAW;AAExE;;;AAGO,MAAMG,EAAE,GAAA3B,OAAA,CAAA2B,EAAA,gBAAyBnC,MAAM,CAACoC,MAAM,CAACvC,CAAC,CAACsC,EAAE,EAAED,OAAO,CAAC;AAEpE","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["V","_interopRequireWildcard","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","internal","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","n","__proto__","a","getOwnPropertyDescriptor","u","i","set","addEqualityTesters","effect","scoped","live","scopedLive","layer","flakyTest","methods","it","assign"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.scopedLive = exports.scoped = exports.live = exports.flakyTest = exports.effect = exports.addEqualityTesters = void 0;
6
+ exports.scopedLive = exports.scoped = exports.live = exports.layer = exports.flakyTest = exports.effect = exports.addEqualityTesters = void 0;
7
7
  var Cause = _interopRequireWildcard(require("effect/Cause"));
8
8
  var Duration = _interopRequireWildcard(require("effect/Duration"));
9
9
  var Effect = _interopRequireWildcard(require("effect/Effect"));
@@ -13,21 +13,19 @@ var Fiber = _interopRequireWildcard(require("effect/Fiber"));
13
13
  var _Function = require("effect/Function");
14
14
  var Layer = _interopRequireWildcard(require("effect/Layer"));
15
15
  var Logger = _interopRequireWildcard(require("effect/Logger"));
16
- var Runtime = _interopRequireWildcard(require("effect/Runtime"));
17
16
  var Schedule = _interopRequireWildcard(require("effect/Schedule"));
17
+ var Scope = _interopRequireWildcard(require("effect/Scope"));
18
18
  var TestEnvironment = _interopRequireWildcard(require("effect/TestContext"));
19
19
  var Utils = _interopRequireWildcard(require("effect/Utils"));
20
20
  var V = _interopRequireWildcard(require("vitest"));
21
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
22
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
- /** @internal */
24
- const runTest = ctx => effect => Effect.gen(function* () {
23
+ const runPromise = ctx => effect => Effect.gen(function* () {
25
24
  const exitFiber = yield* Effect.fork(Effect.exit(effect));
26
- const runtime = yield* Effect.runtime();
27
- ctx.onTestFinished(() => Fiber.interrupt(exitFiber).pipe(Effect.asVoid, Runtime.runPromise(runtime)));
25
+ ctx?.onTestFinished(() => Fiber.interrupt(exitFiber).pipe(Effect.asVoid, Effect.runPromise));
28
26
  const exit = yield* Fiber.join(exitFiber);
29
27
  if (Exit.isSuccess(exit)) {
30
- return () => {};
28
+ return () => exit.value;
31
29
  } else {
32
30
  const errors = Cause.prettyErrors(exit.cause);
33
31
  for (let i = 1; i < errors.length; i++) {
@@ -39,6 +37,8 @@ const runTest = ctx => effect => Effect.gen(function* () {
39
37
  }
40
38
  }).pipe(Effect.runPromise).then(f => f());
41
39
  /** @internal */
40
+ const runTest = ctx => effect => runPromise(ctx)(Effect.asVoid(effect));
41
+ /** @internal */
42
42
  const TestEnv = /*#__PURE__*/TestEnvironment.TestContext.pipe( /*#__PURE__*/Layer.provide( /*#__PURE__*/Logger.remove(Logger.defaultLogger)));
43
43
  /** @internal */
44
44
  function customTester(a, b, customTesters) {
@@ -72,6 +72,33 @@ const makeTester = mapEffect => {
72
72
  });
73
73
  };
74
74
  /** @internal */
75
+ const layer = (layer_, memoMap) => (...args) => {
76
+ memoMap = memoMap ?? Effect.runSync(Layer.makeMemoMap);
77
+ const scope = Effect.runSync(Scope.make());
78
+ const runtimeEffect = Layer.toRuntimeWithMemoMap(layer_, memoMap).pipe(Scope.extend(scope), Effect.orDie, Effect.cached, Effect.runSync);
79
+ const it = Object.assign(V.it, {
80
+ effect: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.provide(runtime), Effect.provide(TestEnv)))),
81
+ scoped: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.scoped, Effect.provide(runtime), Effect.provide(TestEnv)))),
82
+ live: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => Effect.provide(effect, runtime))),
83
+ scopedLive: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.scoped, Effect.provide(runtime)))),
84
+ flakyTest,
85
+ layer(nestedLayer) {
86
+ return layer(Layer.provideMerge(nestedLayer, layer_), memoMap);
87
+ }
88
+ });
89
+ if (args.length === 1) {
90
+ V.beforeAll(() => runPromise()(Effect.asVoid(runtimeEffect)));
91
+ V.afterAll(() => runPromise()(Scope.close(scope, Exit.void)));
92
+ return args[0](it);
93
+ }
94
+ return V.describe(args[0], () => {
95
+ V.beforeAll(() => runPromise()(Effect.asVoid(runtimeEffect)));
96
+ V.afterAll(() => runPromise()(Scope.close(scope, Exit.void)));
97
+ return args[1](it);
98
+ });
99
+ };
100
+ /** @internal */
101
+ exports.layer = layer;
75
102
  const effect = exports.effect = /*#__PURE__*/makeTester( /*#__PURE__*/Effect.provide(TestEnv));
76
103
  /** @internal */
77
104
  const scoped = exports.scoped = /*#__PURE__*/makeTester( /*#__PURE__*/(0, _Function.flow)(Effect.scoped, /*#__PURE__*/Effect.provide(TestEnv)));
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","names":["Cause","_interopRequireWildcard","require","Duration","Effect","Equal","Exit","Fiber","_Function","Layer","Logger","Runtime","Schedule","TestEnvironment","Utils","V","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","runTest","ctx","effect","gen","exitFiber","fork","exit","runtime","onTestFinished","interrupt","pipe","asVoid","runPromise","join","isSuccess","errors","prettyErrors","cause","length","logError","then","f","TestEnv","TestContext","provide","remove","defaultLogger","customTester","b","customTesters","isEqual","undefined","structuralRegion","equals","x","y","filter","addEqualityTesters","expect","exports","makeTester","mapEffect","run","args","self","suspend","name","timeout","it","skip","skipIf","condition","runIf","only","each","cases","for","assign","scoped","flow","live","identity","scopedLive","flakyTest","seconds","catchAllDefect","fail","retry","recurs","compose","elapsed","whileOutput","lessThanOrEqualTo","orDie"],"sources":["../../src/internal.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"internal.js","names":["Cause","_interopRequireWildcard","require","Duration","Effect","Equal","Exit","Fiber","_Function","Layer","Logger","Schedule","Scope","TestEnvironment","Utils","V","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","runPromise","ctx","effect","gen","exitFiber","fork","exit","onTestFinished","interrupt","pipe","asVoid","join","isSuccess","value","errors","prettyErrors","cause","length","logError","then","f","runTest","TestEnv","TestContext","provide","remove","defaultLogger","customTester","b","customTesters","isEqual","undefined","structuralRegion","equals","x","y","filter","addEqualityTesters","expect","exports","makeTester","mapEffect","run","args","self","suspend","name","timeout","it","skip","skipIf","condition","runIf","only","each","cases","for","assign","layer","layer_","memoMap","runSync","makeMemoMap","scope","make","runtimeEffect","toRuntimeWithMemoMap","extend","orDie","cached","flatMap","runtime","scoped","live","scopedLive","flakyTest","nestedLayer","provideMerge","beforeAll","afterAll","close","void","describe","flow","identity","seconds","catchAllDefect","fail","retry","recurs","compose","elapsed","whileOutput","lessThanOrEqualTo"],"sources":["../../src/internal.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type * as Duration from "effect/Duration";
5
5
  import type * as Effect from "effect/Effect";
6
+ import type * as Layer from "effect/Layer";
6
7
  import type * as Scope from "effect/Scope";
7
8
  import type * as TestServices from "effect/TestServices";
8
9
  import * as V from "vitest";
@@ -36,6 +37,20 @@ export declare namespace Vitest {
36
37
  only: Vitest.Test<R>;
37
38
  each: <T>(cases: ReadonlyArray<T>) => <A, E>(name: string, self: TestFunction<A, E, R, Array<T>>, timeout?: number | V.TestOptions) => void;
38
39
  }
40
+ /**
41
+ * @since 1.0.0
42
+ */
43
+ interface Methods<R = never> extends API {
44
+ readonly effect: Vitest.Tester<TestServices.TestServices | R>;
45
+ readonly live: Vitest.Tester<R>;
46
+ readonly flakyTest: <A, E, R2>(self: Effect.Effect<A, E, R2>, timeout?: Duration.DurationInput) => Effect.Effect<A, never, R2>;
47
+ readonly scoped: Vitest.Tester<TestServices.TestServices | Scope.Scope | R>;
48
+ readonly scopedLive: Vitest.Tester<Scope.Scope | R>;
49
+ readonly layer: <R2, E>(layer: Layer.Layer<R2, E, R>) => {
50
+ (f: (it: Vitest.Methods<R | R2>) => void): void;
51
+ (name: string, f: (it: Vitest.Methods<R | R2>) => void): void;
52
+ };
53
+ }
39
54
  }
40
55
  /**
41
56
  * @since 1.0.0
@@ -58,21 +73,59 @@ export declare const live: Vitest.Tester<never>;
58
73
  */
59
74
  export declare const scopedLive: Vitest.Tester<Scope.Scope>;
60
75
  /**
76
+ * Share a `Layer` between multiple tests, optionally wrapping
77
+ * the tests in a `describe` block if a name is provided.
78
+ *
61
79
  * @since 1.0.0
80
+ *
81
+ * ```ts
82
+ * import { expect, layer } from "@effect/vitest"
83
+ * import { Context, Effect, Layer } from "effect"
84
+ *
85
+ * class Foo extends Context.Tag("Foo")<Foo, "foo">() {
86
+ * static Live = Layer.succeed(Foo, "foo")
87
+ * }
88
+ *
89
+ * class Bar extends Context.Tag("Bar")<Bar, "bar">() {
90
+ * static Live = Layer.effect(
91
+ * Bar,
92
+ * Effect.map(Foo, () => "bar" as const)
93
+ * )
94
+ * }
95
+ *
96
+ * layer(Foo.Live)("layer", (it) => {
97
+ * it.effect("adds context", () =>
98
+ * Effect.gen(function* () {
99
+ * const foo = yield* Foo
100
+ * expect(foo).toEqual("foo")
101
+ * })
102
+ * )
103
+ *
104
+ * it.layer(Bar.Live)("nested", (it) => {
105
+ * it.effect("adds context", () =>
106
+ * Effect.gen(function* () {
107
+ * const foo = yield* Foo
108
+ * const bar = yield* Bar
109
+ * expect(foo).toEqual("foo")
110
+ * expect(bar).toEqual("bar")
111
+ * })
112
+ * )
113
+ * })
114
+ * })
115
+ * ```
62
116
  */
63
- export declare const flakyTest: <A, E, R>(self: Effect.Effect<A, E, R>, timeout?: Duration.DurationInput) => Effect.Effect<A, never, R>;
64
- /** @ignored */
65
- declare const methods: {
66
- readonly effect: Vitest.Tester<TestServices.TestServices>;
67
- readonly live: Vitest.Tester<never>;
68
- readonly flakyTest: <A, E, R>(self: Effect.Effect<A, E, R>, timeout?: Duration.DurationInput) => Effect.Effect<A, never, R>;
69
- readonly scoped: Vitest.Tester<TestServices.TestServices | Scope.Scope>;
70
- readonly scopedLive: Vitest.Tester<Scope.Scope>;
117
+ export declare const layer: <R, E>(layer_: Layer.Layer<R, E>, memoMap?: Layer.MemoMap) => {
118
+ (f: (it: Vitest.Methods<R>) => void): void;
119
+ (name: string, f: (it: Vitest.Methods<R>) => void): void;
71
120
  };
72
121
  /**
73
122
  * @since 1.0.0
74
123
  */
75
- export declare const it: API & typeof methods;
124
+ export declare const flakyTest: <A, E, R>(self: Effect.Effect<A, E, R>, timeout?: Duration.DurationInput) => Effect.Effect<A, never, R>;
125
+ /**
126
+ * @since 1.0.0
127
+ */
128
+ export declare const it: Vitest.Methods;
76
129
  /**
77
130
  * @since 1.0.0
78
131
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -20,6 +20,49 @@ export const live = internal.live;
20
20
  * @since 1.0.0
21
21
  */
22
22
  export const scopedLive = internal.scopedLive;
23
+ /**
24
+ * Share a `Layer` between multiple tests, optionally wrapping
25
+ * the tests in a `describe` block if a name is provided.
26
+ *
27
+ * @since 1.0.0
28
+ *
29
+ * ```ts
30
+ * import { expect, layer } from "@effect/vitest"
31
+ * import { Context, Effect, Layer } from "effect"
32
+ *
33
+ * class Foo extends Context.Tag("Foo")<Foo, "foo">() {
34
+ * static Live = Layer.succeed(Foo, "foo")
35
+ * }
36
+ *
37
+ * class Bar extends Context.Tag("Bar")<Bar, "bar">() {
38
+ * static Live = Layer.effect(
39
+ * Bar,
40
+ * Effect.map(Foo, () => "bar" as const)
41
+ * )
42
+ * }
43
+ *
44
+ * layer(Foo.Live)("layer", (it) => {
45
+ * it.effect("adds context", () =>
46
+ * Effect.gen(function* () {
47
+ * const foo = yield* Foo
48
+ * expect(foo).toEqual("foo")
49
+ * })
50
+ * )
51
+ *
52
+ * it.layer(Bar.Live)("nested", (it) => {
53
+ * it.effect("adds context", () =>
54
+ * Effect.gen(function* () {
55
+ * const foo = yield* Foo
56
+ * const bar = yield* Bar
57
+ * expect(foo).toEqual("foo")
58
+ * expect(bar).toEqual("bar")
59
+ * })
60
+ * )
61
+ * })
62
+ * })
63
+ * ```
64
+ */
65
+ export const layer = internal.layer;
23
66
  /**
24
67
  * @since 1.0.0
25
68
  */
@@ -30,7 +73,8 @@ const methods = {
30
73
  live,
31
74
  flakyTest,
32
75
  scoped,
33
- scopedLive
76
+ scopedLive,
77
+ layer
34
78
  };
35
79
  /**
36
80
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["V","internal","addEqualityTesters","effect","scoped","live","scopedLive","flakyTest","methods","it","Object","assign"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAOA,OAAO,KAAKA,CAAC,MAAM,QAAQ;AAC3B,OAAO,KAAKC,QAAQ,MAAM,eAAe;AA0CzC;;;AAGA,OAAO,MAAMC,kBAAkB,GAAeD,QAAQ,CAACC,kBAAkB;AAEzE;;;AAGA,OAAO,MAAMC,MAAM,GAA6CF,QAAQ,CAACE,MAAM;AAE/E;;;AAGA,OAAO,MAAMC,MAAM,GAA2DH,QAAQ,CAACG,MAAM;AAE7F;;;AAGA,OAAO,MAAMC,IAAI,GAAyBJ,QAAQ,CAACI,IAAI;AAEvD;;;AAGA,OAAO,MAAMC,UAAU,GAA+BL,QAAQ,CAACK,UAAU;AAEzE;;;AAGA,OAAO,MAAMC,SAAS,GAGYN,QAAQ,CAACM,SAAS;AAEpD;AACA,MAAMC,OAAO,GAAG;EAAEL,MAAM;EAAEE,IAAI;EAAEE,SAAS;EAAEH,MAAM;EAAEE;AAAU,CAAW;AAExE;;;AAGA,OAAO,MAAMG,EAAE,gBAAyBC,MAAM,CAACC,MAAM,CAACX,CAAC,CAACS,EAAE,EAAED,OAAO,CAAC;AAEpE;;;AAGA,cAAc,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["V","internal","addEqualityTesters","effect","scoped","live","scopedLive","layer","flakyTest","methods","it","Object","assign"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAQA,OAAO,KAAKA,CAAC,MAAM,QAAQ;AAC3B,OAAO,KAAKC,QAAQ,MAAM,eAAe;AA6DzC;;;AAGA,OAAO,MAAMC,kBAAkB,GAAeD,QAAQ,CAACC,kBAAkB;AAEzE;;;AAGA,OAAO,MAAMC,MAAM,GAA6CF,QAAQ,CAACE,MAAM;AAE/E;;;AAGA,OAAO,MAAMC,MAAM,GAA2DH,QAAQ,CAACG,MAAM;AAE7F;;;AAGA,OAAO,MAAMC,IAAI,GAAyBJ,QAAQ,CAACI,IAAI;AAEvD;;;AAGA,OAAO,MAAMC,UAAU,GAA+BL,QAAQ,CAACK,UAAU;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,OAAO,MAAMC,KAAK,GAMdN,QAAQ,CAACM,KAAK;AAElB;;;AAGA,OAAO,MAAMC,SAAS,GAGYP,QAAQ,CAACO,SAAS;AAEpD;AACA,MAAMC,OAAO,GAAG;EAAEN,MAAM;EAAEE,IAAI;EAAEG,SAAS;EAAEJ,MAAM;EAAEE,UAAU;EAAEC;AAAK,CAAW;AAE/E;;;AAGA,OAAO,MAAMG,EAAE,gBAAmBC,MAAM,CAACC,MAAM,CAACZ,CAAC,CAACU,EAAE,EAAED,OAAO,CAAC;AAE9D;;;AAGA,cAAc,QAAQ","ignoreList":[]}
@@ -7,19 +7,17 @@ import * as Fiber from "effect/Fiber";
7
7
  import { flow, identity, pipe } from "effect/Function";
8
8
  import * as Layer from "effect/Layer";
9
9
  import * as Logger from "effect/Logger";
10
- import * as Runtime from "effect/Runtime";
11
10
  import * as Schedule from "effect/Schedule";
11
+ import * as Scope from "effect/Scope";
12
12
  import * as TestEnvironment from "effect/TestContext";
13
13
  import * as Utils from "effect/Utils";
14
14
  import * as V from "vitest";
15
- /** @internal */
16
- const runTest = ctx => effect => Effect.gen(function* () {
15
+ const runPromise = ctx => effect => Effect.gen(function* () {
17
16
  const exitFiber = yield* Effect.fork(Effect.exit(effect));
18
- const runtime = yield* Effect.runtime();
19
- ctx.onTestFinished(() => Fiber.interrupt(exitFiber).pipe(Effect.asVoid, Runtime.runPromise(runtime)));
17
+ ctx?.onTestFinished(() => Fiber.interrupt(exitFiber).pipe(Effect.asVoid, Effect.runPromise));
20
18
  const exit = yield* Fiber.join(exitFiber);
21
19
  if (Exit.isSuccess(exit)) {
22
- return () => {};
20
+ return () => exit.value;
23
21
  } else {
24
22
  const errors = Cause.prettyErrors(exit.cause);
25
23
  for (let i = 1; i < errors.length; i++) {
@@ -31,6 +29,8 @@ const runTest = ctx => effect => Effect.gen(function* () {
31
29
  }
32
30
  }).pipe(Effect.runPromise).then(f => f());
33
31
  /** @internal */
32
+ const runTest = ctx => effect => runPromise(ctx)(Effect.asVoid(effect));
33
+ /** @internal */
34
34
  const TestEnv = /*#__PURE__*/TestEnvironment.TestContext.pipe( /*#__PURE__*/Layer.provide( /*#__PURE__*/Logger.remove(Logger.defaultLogger)));
35
35
  /** @internal */
36
36
  function customTester(a, b, customTesters) {
@@ -63,6 +63,32 @@ const makeTester = mapEffect => {
63
63
  });
64
64
  };
65
65
  /** @internal */
66
+ export const layer = (layer_, memoMap) => (...args) => {
67
+ memoMap = memoMap ?? Effect.runSync(Layer.makeMemoMap);
68
+ const scope = Effect.runSync(Scope.make());
69
+ const runtimeEffect = Layer.toRuntimeWithMemoMap(layer_, memoMap).pipe(Scope.extend(scope), Effect.orDie, Effect.cached, Effect.runSync);
70
+ const it = Object.assign(V.it, {
71
+ effect: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.provide(runtime), Effect.provide(TestEnv)))),
72
+ scoped: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.scoped, Effect.provide(runtime), Effect.provide(TestEnv)))),
73
+ live: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => Effect.provide(effect, runtime))),
74
+ scopedLive: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.scoped, Effect.provide(runtime)))),
75
+ flakyTest,
76
+ layer(nestedLayer) {
77
+ return layer(Layer.provideMerge(nestedLayer, layer_), memoMap);
78
+ }
79
+ });
80
+ if (args.length === 1) {
81
+ V.beforeAll(() => runPromise()(Effect.asVoid(runtimeEffect)));
82
+ V.afterAll(() => runPromise()(Scope.close(scope, Exit.void)));
83
+ return args[0](it);
84
+ }
85
+ return V.describe(args[0], () => {
86
+ V.beforeAll(() => runPromise()(Effect.asVoid(runtimeEffect)));
87
+ V.afterAll(() => runPromise()(Scope.close(scope, Exit.void)));
88
+ return args[1](it);
89
+ });
90
+ };
91
+ /** @internal */
66
92
  export const effect = /*#__PURE__*/makeTester( /*#__PURE__*/Effect.provide(TestEnv));
67
93
  /** @internal */
68
94
  export const scoped = /*#__PURE__*/makeTester( /*#__PURE__*/flow(Effect.scoped, /*#__PURE__*/Effect.provide(TestEnv)));
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","names":["Cause","Duration","Effect","Equal","Exit","Fiber","flow","identity","pipe","Layer","Logger","Runtime","Schedule","TestEnvironment","Utils","V","runTest","ctx","effect","gen","exitFiber","fork","exit","runtime","onTestFinished","interrupt","asVoid","runPromise","join","isSuccess","errors","prettyErrors","cause","i","length","logError","then","f","TestEnv","TestContext","provide","remove","defaultLogger","customTester","a","b","customTesters","isEqual","undefined","structuralRegion","equals","x","y","filter","t","addEqualityTesters","expect","makeTester","mapEffect","run","args","self","suspend","name","timeout","it","skip","skipIf","condition","runIf","only","each","cases","for","Object","assign","scoped","live","scopedLive","flakyTest","seconds","catchAllDefect","fail","retry","recurs","compose","elapsed","whileOutput","lessThanOrEqualTo","orDie"],"sources":["../../src/internal.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,IAAI,EAAEC,QAAQ,EAAEC,IAAI,QAAQ,iBAAiB;AACtD,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAE3C,OAAO,KAAKC,eAAe,MAAM,oBAAoB;AAErD,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,CAAC,MAAM,QAAQ;AAG3B;AACA,MAAMC,OAAO,GAAIC,GAAuB,IAAYC,MAA2B,IAC7EhB,MAAM,CAACiB,GAAG,CAAC,aAAS;EAClB,MAAMC,SAAS,GAAG,OAAOlB,MAAM,CAACmB,IAAI,CAACnB,MAAM,CAACoB,IAAI,CAACJ,MAAM,CAAC,CAAC;EACzD,MAAMK,OAAO,GAAG,OAAOrB,MAAM,CAACqB,OAAO,EAAE;EAEvCN,GAAG,CAACO,cAAc,CAAC,MACjBnB,KAAK,CAACoB,SAAS,CAACL,SAAS,CAAC,CAACZ,IAAI,CAC7BN,MAAM,CAACwB,MAAM,EACbf,OAAO,CAACgB,UAAU,CAACJ,OAAO,CAAC,CAC5B,CACF;EAED,MAAMD,IAAI,GAAG,OAAOjB,KAAK,CAACuB,IAAI,CAACR,SAAS,CAAC;EACzC,IAAIhB,IAAI,CAACyB,SAAS,CAACP,IAAI,CAAC,EAAE;IACxB,OAAO,MAAK,CAAE,CAAC;EACjB,CAAC,MAAM;IACL,MAAMQ,MAAM,GAAG9B,KAAK,CAAC+B,YAAY,CAACT,IAAI,CAACU,KAAK,CAAC;IAC7C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,MAAM,CAACI,MAAM,EAAED,CAAC,EAAE,EAAE;MACtC,OAAO/B,MAAM,CAACiC,QAAQ,CAACL,MAAM,CAACG,CAAC,CAAC,CAAC;IACnC;IACA,OAAO,MAAK;MACV,MAAMH,MAAM,CAAC,CAAC,CAAC;IACjB,CAAC;EACH;AACF,CAAC,CAAC,CAACtB,IAAI,CAACN,MAAM,CAACyB,UAAU,CAAC,CAACS,IAAI,CAAEC,CAAC,IAAKA,CAAC,EAAE,CAAC;AAE7C;AACA,MAAMC,OAAO,gBAAGzB,eAAe,CAAC0B,WAAW,CAAC/B,IAAI,eAC9CC,KAAK,CAAC+B,OAAO,eAAC9B,MAAM,CAAC+B,MAAM,CAAC/B,MAAM,CAACgC,aAAa,CAAC,CAAC,CACnD;AAED;AACA,SAASC,YAAYA,CAAsBC,CAAU,EAAEC,CAAU,EAAEC,aAA4B;EAC7F,IAAI,CAAC3C,KAAK,CAAC4C,OAAO,CAACH,CAAC,CAAC,IAAI,CAACzC,KAAK,CAAC4C,OAAO,CAACF,CAAC,CAAC,EAAE;IAC1C,OAAOG,SAAS;EAClB;EACA,OAAOlC,KAAK,CAACmC,gBAAgB,CAC3B,MAAM9C,KAAK,CAAC+C,MAAM,CAACN,CAAC,EAAEC,CAAC,CAAC,EACxB,CAACM,CAAC,EAAEC,CAAC,KAAK,IAAI,CAACF,MAAM,CAACC,CAAC,EAAEC,CAAC,EAAEN,aAAa,CAACO,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAKX,YAAY,CAAC,CAAC,CAC7E;AACH;AAEA;AACA,OAAO,MAAMY,kBAAkB,GAAGA,CAAA,KAAK;EACrCxC,CAAC,CAACyC,MAAM,CAACD,kBAAkB,CAAC,CAACZ,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED;AACA,MAAMc,UAAU,GACdC,SAA6E,IAClD;EAC3B,MAAMC,GAAG,GAAGA,CACV1C,GAAqE,EACrE2C,IAAc,EACdC,IAAmD,KAChDrD,IAAI,CAACN,MAAM,CAAC4D,OAAO,CAAC,MAAMD,IAAI,CAAC,GAAGD,IAAI,CAAC,CAAC,EAAEF,SAAS,EAAE1C,OAAO,CAACC,GAAG,CAAC,CAAC;EAEvE,MAAMoB,CAAC,GAA0BA,CAAC0B,IAAI,EAAEF,IAAI,EAAEG,OAAO,KAAKjD,CAAC,CAACkD,EAAE,CAACF,IAAI,EAAG9C,GAAG,IAAK0C,GAAG,CAAC1C,GAAG,EAAE,CAACA,GAAG,CAAC,EAAE4C,IAAI,CAAC,EAAEG,OAAO,CAAC;EAE7G,MAAME,IAAI,GAAoCA,CAACH,IAAI,EAAEF,IAAI,EAAEG,OAAO,KAChEjD,CAAC,CAACkD,EAAE,CAACC,IAAI,CAACH,IAAI,EAAG9C,GAAG,IAAK0C,GAAG,CAAC1C,GAAG,EAAE,CAACA,GAAG,CAAC,EAAE4C,IAAI,CAAC,EAAEG,OAAO,CAAC;EAC1D,MAAMG,MAAM,GAAuCC,SAAS,IAAK,CAACL,IAAI,EAAEF,IAAI,EAAEG,OAAO,KACnFjD,CAAC,CAACkD,EAAE,CAACE,MAAM,CAACC,SAAS,CAAC,CAACL,IAAI,EAAG9C,GAAG,IAAK0C,GAAG,CAAC1C,GAAG,EAAE,CAACA,GAAG,CAAC,EAAE4C,IAAI,CAAC,EAAEG,OAAO,CAAC;EACvE,MAAMK,KAAK,GAAsCD,SAAS,IAAK,CAACL,IAAI,EAAEF,IAAI,EAAEG,OAAO,KACjFjD,CAAC,CAACkD,EAAE,CAACI,KAAK,CAACD,SAAS,CAAC,CAACL,IAAI,EAAG9C,GAAG,IAAK0C,GAAG,CAAC1C,GAAG,EAAE,CAACA,GAAG,CAAC,EAAE4C,IAAI,CAAC,EAAEG,OAAO,CAAC;EACtE,MAAMM,IAAI,GAAoCA,CAACP,IAAI,EAAEF,IAAI,EAAEG,OAAO,KAChEjD,CAAC,CAACkD,EAAE,CAACK,IAAI,CAACP,IAAI,EAAG9C,GAAG,IAAK0C,GAAG,CAAC1C,GAAG,EAAE,CAACA,GAAG,CAAC,EAAE4C,IAAI,CAAC,EAAEG,OAAO,CAAC;EAC1D,MAAMO,IAAI,GAAqCC,KAAK,IAAK,CAACT,IAAI,EAAEF,IAAI,EAAEG,OAAO,KAC3EjD,CAAC,CAACkD,EAAE,CAACQ,GAAG,CAACD,KAAK,CAAC,CACbT,IAAI,EACJ,OAAOC,OAAO,KAAK,QAAQ,GAAG;IAAEA;EAAO,CAAE,GAAGA,OAAO,IAAI,EAAE,EACzD,CAACJ,IAAI,EAAE3C,GAAG,KAAK0C,GAAG,CAAC1C,GAAG,EAAE,CAAC2C,IAAI,CAAC,EAAEC,IAAI,CAAC,CACtC;EAEH,OAAOa,MAAM,CAACC,MAAM,CAACtC,CAAC,EAAE;IAAE6B,IAAI;IAAEC,MAAM;IAAEE,KAAK;IAAEC,IAAI;IAAEC;EAAI,CAAE,CAAC;AAC9D,CAAC;AAED;AACA,OAAO,MAAMrD,MAAM,gBAAGuC,UAAU,eAA4BvD,MAAM,CAACsC,OAAO,CAACF,OAAO,CAAC,CAAC;AAEpF;AACA,OAAO,MAAMsC,MAAM,gBAAGnB,UAAU,eAA0CnD,IAAI,CAACJ,MAAM,CAAC0E,MAAM,eAAE1E,MAAM,CAACsC,OAAO,CAACF,OAAO,CAAC,CAAC,CAAC;AAEvH;AACA,OAAO,MAAMuC,IAAI,gBAAGpB,UAAU,CAAQlD,QAAQ,CAAC;AAE/C;AACA,OAAO,MAAMuE,UAAU,gBAAGrB,UAAU,CAAcvD,MAAM,CAAC0E,MAAM,CAAC;AAEhE;AACA,OAAO,MAAMG,SAAS,GAAGA,CACvBlB,IAA4B,EAC5BG,OAAA,GAAkC/D,QAAQ,CAAC+E,OAAO,CAAC,EAAE,CAAC,KAEtDxE,IAAI,CACFN,MAAM,CAAC+E,cAAc,CAACpB,IAAI,EAAE3D,MAAM,CAACgF,IAAI,CAAC,EACxChF,MAAM,CAACiF,KAAK,CACV3E,IAAI,CACFI,QAAQ,CAACwE,MAAM,CAAC,EAAE,CAAC,EACnBxE,QAAQ,CAACyE,OAAO,CAACzE,QAAQ,CAAC0E,OAAO,CAAC,EAClC1E,QAAQ,CAAC2E,WAAW,CAACtF,QAAQ,CAACuF,iBAAiB,CAACxB,OAAO,CAAC,CAAC,CAC1D,CACF,EACD9D,MAAM,CAACuF,KAAK,CACb","ignoreList":[]}
1
+ {"version":3,"file":"internal.js","names":["Cause","Duration","Effect","Equal","Exit","Fiber","flow","identity","pipe","Layer","Logger","Schedule","Scope","TestEnvironment","Utils","V","runPromise","ctx","effect","gen","exitFiber","fork","exit","onTestFinished","interrupt","asVoid","join","isSuccess","value","errors","prettyErrors","cause","i","length","logError","then","f","runTest","TestEnv","TestContext","provide","remove","defaultLogger","customTester","a","b","customTesters","isEqual","undefined","structuralRegion","equals","x","y","filter","t","addEqualityTesters","expect","makeTester","mapEffect","run","args","self","suspend","name","timeout","it","skip","skipIf","condition","runIf","only","each","cases","for","Object","assign","layer","layer_","memoMap","runSync","makeMemoMap","scope","make","runtimeEffect","toRuntimeWithMemoMap","extend","orDie","cached","flatMap","runtime","scoped","live","scopedLive","flakyTest","nestedLayer","provideMerge","beforeAll","afterAll","close","void","describe","seconds","catchAllDefect","fail","retry","recurs","compose","elapsed","whileOutput","lessThanOrEqualTo"],"sources":["../../src/internal.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/vitest",
3
- "version": "0.10.4",
3
+ "version": "0.10.6",
4
4
  "description": "A set of helpers for testing Effects with vitest",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -11,7 +11,7 @@
11
11
  "sideEffects": [],
12
12
  "peerDependencies": {
13
13
  "vitest": "^2.0.5",
14
- "effect": "^3.8.4"
14
+ "effect": "^3.8.5"
15
15
  },
16
16
  "publishConfig": {
17
17
  "provenance": true
package/src/index.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type * as Duration from "effect/Duration"
5
5
  import type * as Effect from "effect/Effect"
6
+ import type * as Layer from "effect/Layer"
6
7
  import type * as Scope from "effect/Scope"
7
8
  import type * as TestServices from "effect/TestServices"
8
9
  import * as V from "vitest"
@@ -47,7 +48,26 @@ export namespace Vitest {
47
48
  cases: ReadonlyArray<T>
48
49
  ) => <A, E>(name: string, self: TestFunction<A, E, R, Array<T>>, timeout?: number | V.TestOptions) => void
49
50
  }
51
+
52
+ /**
53
+ * @since 1.0.0
54
+ */
55
+ export interface Methods<R = never> extends API {
56
+ readonly effect: Vitest.Tester<TestServices.TestServices | R>
57
+ readonly live: Vitest.Tester<R>
58
+ readonly flakyTest: <A, E, R2>(
59
+ self: Effect.Effect<A, E, R2>,
60
+ timeout?: Duration.DurationInput
61
+ ) => Effect.Effect<A, never, R2>
62
+ readonly scoped: Vitest.Tester<TestServices.TestServices | Scope.Scope | R>
63
+ readonly scopedLive: Vitest.Tester<Scope.Scope | R>
64
+ readonly layer: <R2, E>(layer: Layer.Layer<R2, E, R>) => {
65
+ (f: (it: Vitest.Methods<R | R2>) => void): void
66
+ (name: string, f: (it: Vitest.Methods<R | R2>) => void): void
67
+ }
68
+ }
50
69
  }
70
+
51
71
  /**
52
72
  * @since 1.0.0
53
73
  */
@@ -73,6 +93,56 @@ export const live: Vitest.Tester<never> = internal.live
73
93
  */
74
94
  export const scopedLive: Vitest.Tester<Scope.Scope> = internal.scopedLive
75
95
 
96
+ /**
97
+ * Share a `Layer` between multiple tests, optionally wrapping
98
+ * the tests in a `describe` block if a name is provided.
99
+ *
100
+ * @since 1.0.0
101
+ *
102
+ * ```ts
103
+ * import { expect, layer } from "@effect/vitest"
104
+ * import { Context, Effect, Layer } from "effect"
105
+ *
106
+ * class Foo extends Context.Tag("Foo")<Foo, "foo">() {
107
+ * static Live = Layer.succeed(Foo, "foo")
108
+ * }
109
+ *
110
+ * class Bar extends Context.Tag("Bar")<Bar, "bar">() {
111
+ * static Live = Layer.effect(
112
+ * Bar,
113
+ * Effect.map(Foo, () => "bar" as const)
114
+ * )
115
+ * }
116
+ *
117
+ * layer(Foo.Live)("layer", (it) => {
118
+ * it.effect("adds context", () =>
119
+ * Effect.gen(function* () {
120
+ * const foo = yield* Foo
121
+ * expect(foo).toEqual("foo")
122
+ * })
123
+ * )
124
+ *
125
+ * it.layer(Bar.Live)("nested", (it) => {
126
+ * it.effect("adds context", () =>
127
+ * Effect.gen(function* () {
128
+ * const foo = yield* Foo
129
+ * const bar = yield* Bar
130
+ * expect(foo).toEqual("foo")
131
+ * expect(bar).toEqual("bar")
132
+ * })
133
+ * )
134
+ * })
135
+ * })
136
+ * ```
137
+ */
138
+ export const layer: <R, E>(
139
+ layer_: Layer.Layer<R, E>,
140
+ memoMap?: Layer.MemoMap
141
+ ) => {
142
+ (f: (it: Vitest.Methods<R>) => void): void
143
+ (name: string, f: (it: Vitest.Methods<R>) => void): void
144
+ } = internal.layer
145
+
76
146
  /**
77
147
  * @since 1.0.0
78
148
  */
@@ -82,12 +152,12 @@ export const flakyTest: <A, E, R>(
82
152
  ) => Effect.Effect<A, never, R> = internal.flakyTest
83
153
 
84
154
  /** @ignored */
85
- const methods = { effect, live, flakyTest, scoped, scopedLive } as const
155
+ const methods = { effect, live, flakyTest, scoped, scopedLive, layer } as const
86
156
 
87
157
  /**
88
158
  * @since 1.0.0
89
159
  */
90
- export const it: API & typeof methods = Object.assign(V.it, methods)
160
+ export const it: Vitest.Methods = Object.assign(V.it, methods)
91
161
 
92
162
  /**
93
163
  * @since 1.0.0
package/src/internal.ts CHANGED
@@ -11,31 +11,28 @@ import * as Fiber from "effect/Fiber"
11
11
  import { flow, identity, pipe } from "effect/Function"
12
12
  import * as Layer from "effect/Layer"
13
13
  import * as Logger from "effect/Logger"
14
- import * as Runtime from "effect/Runtime"
15
14
  import * as Schedule from "effect/Schedule"
16
- import type * as Scope from "effect/Scope"
15
+ import * as Scope from "effect/Scope"
17
16
  import * as TestEnvironment from "effect/TestContext"
18
17
  import type * as TestServices from "effect/TestServices"
19
18
  import * as Utils from "effect/Utils"
20
19
  import * as V from "vitest"
21
20
  import type * as Vitest from "./index.js"
22
21
 
23
- /** @internal */
24
- const runTest = (ctx: Vitest.TaskContext) => <E, A>(effect: Effect.Effect<A, E>) =>
22
+ const runPromise = (ctx?: Vitest.TaskContext) => <E, A>(effect: Effect.Effect<A, E>) =>
25
23
  Effect.gen(function*() {
26
24
  const exitFiber = yield* Effect.fork(Effect.exit(effect))
27
- const runtime = yield* Effect.runtime()
28
25
 
29
- ctx.onTestFinished(() =>
26
+ ctx?.onTestFinished(() =>
30
27
  Fiber.interrupt(exitFiber).pipe(
31
28
  Effect.asVoid,
32
- Runtime.runPromise(runtime)
29
+ Effect.runPromise
33
30
  )
34
31
  )
35
32
 
36
33
  const exit = yield* Fiber.join(exitFiber)
37
34
  if (Exit.isSuccess(exit)) {
38
- return () => {}
35
+ return () => exit.value
39
36
  } else {
40
37
  const errors = Cause.prettyErrors(exit.cause)
41
38
  for (let i = 1; i < errors.length; i++) {
@@ -47,6 +44,10 @@ const runTest = (ctx: Vitest.TaskContext) => <E, A>(effect: Effect.Effect<A, E>)
47
44
  }
48
45
  }).pipe(Effect.runPromise).then((f) => f())
49
46
 
47
+ /** @internal */
48
+ const runTest = (ctx?: Vitest.TaskContext) => <E, A>(effect: Effect.Effect<A, E>) =>
49
+ runPromise(ctx)(Effect.asVoid(effect))
50
+
50
51
  /** @internal */
51
52
  const TestEnv = TestEnvironment.TestContext.pipe(
52
53
  Layer.provide(Logger.remove(Logger.defaultLogger))
@@ -98,6 +99,71 @@ const makeTester = <R>(
98
99
  return Object.assign(f, { skip, skipIf, runIf, only, each })
99
100
  }
100
101
 
102
+ /** @internal */
103
+ export const layer = <R, E>(layer_: Layer.Layer<R, E>, memoMap?: Layer.MemoMap): {
104
+ (f: (it: Vitest.Vitest.Methods<R>) => void): void
105
+ (name: string, f: (it: Vitest.Vitest.Methods<R>) => void): void
106
+ } =>
107
+ (
108
+ ...args: [name: string, f: (it: Vitest.Vitest.Methods<R>) => void] | [f: (it: Vitest.Vitest.Methods<R>) => void]
109
+ ) => {
110
+ memoMap = memoMap ?? Effect.runSync(Layer.makeMemoMap)
111
+ const scope = Effect.runSync(Scope.make())
112
+ const runtimeEffect = Layer.toRuntimeWithMemoMap(layer_, memoMap).pipe(
113
+ Scope.extend(scope),
114
+ Effect.orDie,
115
+ Effect.cached,
116
+ Effect.runSync
117
+ )
118
+
119
+ const it: Vitest.Vitest.Methods<R> = Object.assign(V.it, {
120
+ effect: makeTester<TestServices.TestServices | R>((effect) =>
121
+ Effect.flatMap(runtimeEffect, (runtime) =>
122
+ effect.pipe(
123
+ Effect.provide(runtime),
124
+ Effect.provide(TestEnv)
125
+ ))
126
+ ),
127
+ scoped: makeTester<TestServices.TestServices | Scope.Scope | R>((effect) =>
128
+ Effect.flatMap(runtimeEffect, (runtime) =>
129
+ effect.pipe(
130
+ Effect.scoped,
131
+ Effect.provide(runtime),
132
+ Effect.provide(TestEnv)
133
+ ))
134
+ ),
135
+ live: makeTester<R>((effect) =>
136
+ Effect.flatMap(
137
+ runtimeEffect,
138
+ (runtime) => Effect.provide(effect, runtime)
139
+ )
140
+ ),
141
+ scopedLive: makeTester<Scope.Scope | R>((effect) =>
142
+ Effect.flatMap(runtimeEffect, (runtime) =>
143
+ effect.pipe(
144
+ Effect.scoped,
145
+ Effect.provide(runtime)
146
+ ))
147
+ ),
148
+ flakyTest,
149
+ layer<R2, E2>(nestedLayer: Layer.Layer<R2, E2, R>) {
150
+ return layer(Layer.provideMerge(nestedLayer, layer_), memoMap)
151
+ }
152
+ })
153
+
154
+ if (args.length === 1) {
155
+ V.beforeAll(() => runPromise()(Effect.asVoid(runtimeEffect)))
156
+ V.afterAll(() => runPromise()(Scope.close(scope, Exit.void)))
157
+ return args[0](it)
158
+ }
159
+
160
+ return V.describe(args[0], () => {
161
+ V.beforeAll(() => runPromise()(Effect.asVoid(runtimeEffect)))
162
+ V.afterAll(() => runPromise()(Scope.close(scope, Exit.void)))
163
+ return args[1](it)
164
+ })
165
+ }
166
+
101
167
  /** @internal */
102
168
  export const effect = makeTester<TestServices.TestServices>(Effect.provide(TestEnv))
103
169