@effect/vitest 0.12.1 → 0.13.1

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/README.md CHANGED
@@ -1,18 +1,18 @@
1
1
  # Introduction
2
2
 
3
- Welcome to your guide on testing Effect applications using `vitest` and the `@effect/vitest` package! `@effect/vitest` is designed to help simplify running Effect-based tests through `vitest`.
3
+ Welcome to your guide on testing Effect-based applications using `vitest` and the `@effect/vitest` package. This package simplifies running tests for Effect-based code with Vitest.
4
4
 
5
- In the guide below, we will first start by setting up the required dependencies. Then, we will dive into a few examples of how to use `@effect/vitest` to create some Effect-based test cases.
5
+ In this guide, we'll walk you through setting up the necessary dependencies and provide examples of how to write Effect-based tests using `@effect/vitest`.
6
6
 
7
7
  # Requirements
8
8
 
9
- First, install [`vitest`](https://vitest.dev/guide/) (version `1.6.0` or newer)
9
+ First, ensure you have [`vitest`](https://vitest.dev/guide/) installed (version `1.6.0` or later).
10
10
 
11
11
  ```sh
12
12
  pnpm add -D vitest
13
13
  ```
14
14
 
15
- Next, install the `@effect/vitest` package which facilitates running Effect-based tests through `vitest`.
15
+ Next, install the `@effect/vitest` package, which integrates Effect with Vitest.
16
16
 
17
17
  ```sh
18
18
  pnpm add -D @effect/vitest
@@ -40,116 +40,148 @@ This import enhances the standard `it` function from `vitest` with several power
40
40
 
41
41
  Here's how to use `it.effect` to write your tests:
42
42
 
43
+ **Syntax**
44
+
43
45
  ```ts
44
46
  import { it } from "@effect/vitest"
45
47
 
46
48
  it.effect("test name", () => EffectContainingAssertions, timeout: number | TestOptions = 5_000)
47
49
  ```
48
50
 
49
- When using `it.effect`, the `TestContext` is automatically injected, which allows tests to have access to services designed to facilitate testing (such as the [`TestClock`](#using-the-testclock)).
51
+ `it.effect` automatically provides a `TestContext`, allowing access to services like [`TestClock`](#using-the-testclock).
50
52
 
51
53
  ## Testing Successful Operations
52
54
 
53
- Let's create a test for a function that divides two numbers but fails if the divisor is zero:
55
+ To write a test, place your assertions directly within the main effect. This ensures that your assertions are evaluated as part of the test's execution.
56
+
57
+ **Example** (Testing a Successful Operation)
58
+
59
+ In the following example, we test a function that divides two numbers, but fails if the divisor is zero. The goal is to check that the function returns the correct result when given valid input.
54
60
 
55
61
  ```ts
56
62
  import { it } from "@effect/vitest"
57
63
  import { Effect } from "effect"
58
64
  import { expect } from "vitest"
59
65
 
66
+ // A simple divide function that returns an Effect, failing when dividing by zero
60
67
  function divide(a: number, b: number) {
61
68
  if (b === 0) return Effect.fail("Cannot divide by zero")
62
69
  return Effect.succeed(a / b)
63
70
  }
64
71
 
72
+ // Testing a successful division
65
73
  it.effect("test success", () =>
66
74
  Effect.gen(function* () {
67
- const result = yield* divide(4, 2)
68
- expect(result).toBe(2)
75
+ const result = yield* divide(4, 2) // Expect 4 divided by 2 to succeed
76
+ expect(result).toBe(2) // Assert that the result is 2
69
77
  })
70
78
  )
71
79
  ```
72
80
 
73
81
  ## Testing Successes and Failures as `Exit`
74
82
 
75
- To test both success and failure scenarios, convert the outcomes into an `Exit` object using `Effect.exit`:
83
+ When you need to handle both success and failure cases in a test, you can use `Effect.exit` to capture the outcome as an `Exit` object. This allows you to verify both successful and failed results within the same test structure.
84
+
85
+ **Example** (Testing Success and Failure with `Exit`)
76
86
 
77
87
  ```ts
78
88
  import { it } from "@effect/vitest"
79
89
  import { Effect, Exit } from "effect"
80
90
  import { expect } from "vitest"
81
91
 
92
+ // A function that divides two numbers and returns an Effect.
93
+ // It fails if the divisor is zero.
82
94
  function divide(a: number, b: number) {
83
95
  if (b === 0) return Effect.fail("Cannot divide by zero")
84
96
  return Effect.succeed(a / b)
85
97
  }
86
98
 
99
+ // Test case for a successful division, using `Effect.exit` to capture the result
87
100
  it.effect("test success as Exit", () =>
88
101
  Effect.gen(function* () {
89
- const result = yield* divide(4, 2).pipe(Effect.exit)
90
- expect(result).toStrictEqual(Exit.succeed(2))
102
+ const result = yield* Effect.exit(divide(4, 2)) // Capture the result as an Exit
103
+ expect(result).toStrictEqual(Exit.succeed(2)) // Expect success with the value 2
91
104
  })
92
105
  )
93
106
 
107
+ // Test case for a failure (division by zero), using `Effect.exit`
94
108
  it.effect("test failure as Exit", () =>
95
109
  Effect.gen(function* () {
96
- const result = yield* divide(4, 0).pipe(Effect.exit)
97
- expect(result).toStrictEqual(Exit.fail("Cannot divide by zero"))
110
+ const result = yield* Effect.exit(divide(4, 0)) // Capture the result as an Exit
111
+ expect(result).toStrictEqual(Exit.fail("Cannot divide by zero")) // Expect failure with the correct message
98
112
  })
99
113
  )
100
114
  ```
101
115
 
102
116
  ## Using the TestClock
103
117
 
104
- When using `it.effect`, a `TestContext` is provided to your program which provides access to several services designed to facilitate testing. One such service is the `[TestClock`](https://effect.website/docs/guides/testing/testclock) which is designed to simulate the passage of time.
118
+ When writing tests with `it.effect`, a `TestContext` is automatically provided. This context gives access to various testing services, including the [`TestClock`](https://effect.website/docs/guides/testing/testclock), which allows you to simulate the passage of time in your tests.
119
+
120
+ **Note**: If you want to use the real-time clock (instead of the simulated one), you can switch to `it.live`.
105
121
 
106
- **Note**: To utilize the default, non-testing services in your tests you can use `it.live`.
122
+ **Example** (Using `TestClock` and `it.live`)
107
123
 
108
- Below, you'll find examples illustrating different ways to use time in your tests:
124
+ Here are examples that demonstrate how you can work with time in your tests using `it.effect` and `TestClock`:
109
125
 
110
- 1. **Using `it.live` to show the current time:** This mode uses the real-time clock of your system, reflecting the actual current time.
126
+ 1. **Using `it.live` to show the current time**: This will display the actual system time, since it runs in the live environment.
111
127
 
112
- 2. **Using `it.effect` with no adjustments:** By default, this test starts the clock at a time of `0`, effectively simulating a starting point without any elapsed time.
128
+ 2. **Using `it.effect` without adjustments**: By default, the `TestClock` starts at `0`, simulating the beginning of time for your test without any time passing.
113
129
 
114
- 3. **Using `it.effect` and adjusting time forward:** Here, we advance the clock by 1000 milliseconds to test scenarios that depend on the passing of time.
130
+ 3. **Using `it.effect` and adjusting time**: In this test, we simulate the passage of time by advancing the clock by 1000 milliseconds (1 second).
115
131
 
116
132
  ```ts
117
133
  import { it } from "@effect/vitest"
118
134
  import { Clock, Effect, TestClock } from "effect"
119
135
 
136
+ // Effect to log the current time
120
137
  const logNow = Effect.gen(function* () {
121
- const now = yield* Clock.currentTimeMillis
122
- console.log(now)
138
+ const now = yield* Clock.currentTimeMillis // Fetch the current time from the clock
139
+ console.log(now) // Log the current time
123
140
  })
124
141
 
142
+ // Example of using the real system clock with `it.live`
125
143
  it.live("runs the test with the live Effect environment", () =>
126
144
  Effect.gen(function* () {
127
- yield* logNow // prints the actual time
145
+ yield* logNow // Prints the actual current time
128
146
  })
129
147
  )
130
148
 
149
+ // Example of using `it.effect` with the default test environment
131
150
  it.effect("run the test with the test environment", () =>
132
151
  Effect.gen(function* () {
133
- yield* logNow // prints 0
152
+ yield* logNow // Prints 0, as the test clock starts at 0
134
153
  })
135
154
  )
136
155
 
156
+ // Example of advancing the test clock by 1000 milliseconds
137
157
  it.effect("run the test with the test environment and the time adjusted", () =>
138
158
  Effect.gen(function* () {
139
- yield* TestClock.adjust("1000 millis")
140
- yield* logNow // prints 1000
159
+ yield* TestClock.adjust("1000 millis") // Move the clock forward by 1000 milliseconds
160
+ yield* logNow // Prints 1000, reflecting the adjusted time
141
161
  })
142
162
  )
143
163
  ```
144
164
 
145
165
  ## Skipping Tests
146
166
 
147
- You can skip a test using `it.effect.skip`, which is useful when you want to temporarily disable a test without deleting any code.
167
+ If you need to temporarily disable a test but don't want to delete or comment out the code, you can use `it.effect.skip`. This is helpful when you're working on other parts of your test suite but want to keep the test for future execution.
168
+
169
+ **Example** (Skipping a Test)
148
170
 
149
171
  ```ts
150
- it.effect.skip("test failure as Exit", () =>
172
+ import { it } from "@effect/vitest"
173
+ import { Effect, Exit } from "effect"
174
+ import { expect } from "vitest"
175
+
176
+ function divide(a: number, b: number) {
177
+ if (b === 0) return Effect.fail("Cannot divide by zero")
178
+ return Effect.succeed(a / b)
179
+ }
180
+
181
+ // Temporarily skip the test for dividing numbers
182
+ it.effect("test failure as Exit", () =>
151
183
  Effect.gen(function* () {
152
- const result = yield* divide(4, 0).pipe(Effect.exit)
184
+ const result = yield* Effect.exit(divide(4, 0))
153
185
  expect(result).toStrictEqual(Exit.fail("Cannot divide by zero"))
154
186
  })
155
187
  )
@@ -157,32 +189,78 @@ it.effect.skip("test failure as Exit", () =>
157
189
 
158
190
  ## Running a Single Test
159
191
 
160
- To run only a specific test and ignore all others, use `it.effect.only`. This is helpful during development to focus on a single test case.
192
+ When you're developing or debugging, it's often useful to run a specific test without executing the entire test suite. You can achieve this by using `it.effect.only`, which will run just the selected test and ignore the others.
193
+
194
+ **Example** (Running a Single Test)
161
195
 
162
196
  ```ts
197
+ import { it } from "@effect/vitest"
198
+ import { Effect, Exit } from "effect"
199
+ import { expect } from "vitest"
200
+
201
+ function divide(a: number, b: number) {
202
+ if (b === 0) return Effect.fail("Cannot divide by zero")
203
+ return Effect.succeed(a / b)
204
+ }
205
+
206
+ // Run only this test, skipping all others
163
207
  it.effect.only("test failure as Exit", () =>
164
208
  Effect.gen(function* () {
165
- const result = yield* divide(4, 0).pipe(Effect.exit)
209
+ const result = yield* Effect.exit(divide(4, 0))
166
210
  expect(result).toStrictEqual(Exit.fail("Cannot divide by zero"))
167
211
  })
168
212
  )
169
213
  ```
170
214
 
215
+ ## Logging
216
+
217
+ By default, `it.effect` suppresses log output, which can be useful for keeping test results clean. However, if you want to enable logging during tests, you can use `it.live` or provide a custom logger to control the output.
218
+
219
+ **Example** (Controlling Logging in Tests)
220
+
221
+ ```ts
222
+ import { it } from "@effect/vitest"
223
+ import { Effect, Logger } from "effect"
224
+
225
+ // This test won't display the log message, as logging is suppressed by default in `it.effect`
226
+ it.effect("does not display a log", () =>
227
+ Effect.gen(function* () {
228
+ yield* Effect.log("it.effect") // Log won't be shown
229
+ })
230
+ )
231
+
232
+ // This test will display the log because a custom logger is provided
233
+ it.effect("providing a logger displays a log", () =>
234
+ Effect.gen(function* () {
235
+ yield* Effect.log("it.effect with custom logger") // Log will be displayed
236
+ }).pipe(
237
+ Effect.provide(Logger.pretty) // Providing a pretty logger for log output
238
+ )
239
+ )
240
+
241
+ // This test runs using `it.live`, which enables logging by default
242
+ it.live("it.live displays a log", () =>
243
+ Effect.gen(function* () {
244
+ yield* Effect.log("it.live") // Log will be displayed
245
+ })
246
+ )
247
+ ```
248
+
171
249
  # Writing Tests with `it.scoped`
172
250
 
173
- The `it.scoped` method allows you to run tests that involve Effect programs requiring a `Scope`. A `Scope` is essential when your Effect needs to manage resources that must be acquired before the test and released after it completes. This ensures that all resources are properly cleaned up, preventing leaks and ensuring test isolation.
251
+ The `it.scoped` method is used for tests that involve `Effect` programs needing a `Scope`. A `Scope` ensures that any resources your test acquires are managed properly, meaning they will be released when the test completes. This helps prevent resource leaks and guarantees test isolation.
174
252
 
175
- Here’s a simple example to demonstrate how `it.scoped` can be used in your tests:
253
+ **Example** (Using `it.scoped` to Manage Resource Lifecycle)
176
254
 
177
255
  ```ts
178
256
  import { it } from "@effect/vitest"
179
257
  import { Console, Effect } from "effect"
180
258
 
181
- // Simulate acquiring and releasing a resource with console logging
259
+ // Simulating the acquisition and release of a resource with console logging
182
260
  const acquire = Console.log("acquire resource")
183
261
  const release = Console.log("release resource")
184
262
 
185
- // Define a resource that needs to be managed
263
+ // Defining a resource that requires proper management
186
264
  const resource = Effect.acquireRelease(acquire, () => release)
187
265
 
188
266
  // Incorrect usage: This will result in a type error because it lacks a scope
@@ -192,7 +270,7 @@ it.effect("run with scope", () =>
192
270
  })
193
271
  )
194
272
 
195
- // Correct usage: Using 'it.scoped' to properly manage the scope
273
+ // Correct usage: Using 'it.scoped' to manage the scope correctly
196
274
  it.scoped("run with scope", () =>
197
275
  Effect.gen(function* () {
198
276
  yield* resource
@@ -202,17 +280,17 @@ it.scoped("run with scope", () =>
202
280
 
203
281
  # Writing Tests with `it.flakyTest`
204
282
 
205
- `it.flakyTest` is a function from the `@effect/vitest` package designed to handle tests that might not succeed on the first try. These tests are often called "flaky" tests because their outcome can vary (e.g., due to timing issues, external dependencies, or randomness). `it.flakyTest` allows these tests to be retried until they succeed or until a specified timeout period expires.
283
+ `it.flakyTest` is a utility designed to manage tests that may not succeed consistently on the first attempt. These tests, often referred to as "flaky," can fail due to factors like timing issues, external dependencies, or randomness. `it.flakyTest` allows for retrying these tests until they pass or a specified timeout is reached.
206
284
 
207
- Here's how you can use `it.flakyTest` in your test suite:
285
+ **Example** (Handling Flaky Tests with Retries)
208
286
 
209
- First, let’s set up a basic test scenario that could potentially fail randomly:
287
+ Let's start by setting up a basic test scenario that has the potential to fail randomly:
210
288
 
211
289
  ```ts
212
290
  import { it } from "@effect/vitest"
213
291
  import { Effect, Random } from "effect"
214
292
 
215
- // Define a flaky test effect
293
+ // Simulating a flaky effect
216
294
  const flaky = Effect.gen(function* () {
217
295
  const random = yield* Random.nextBoolean
218
296
  if (random) {
@@ -220,14 +298,16 @@ const flaky = Effect.gen(function* () {
220
298
  }
221
299
  })
222
300
 
223
- // Standard test, which may fail intermittently
301
+ // Standard test that may fail intermittently
224
302
  it.effect("possibly failing test", () => flaky)
225
303
  ```
226
304
 
227
- To address the flakiness, we apply `it.flakyTest` which will retry the test until it succeeds or the specified timeout is reached:
305
+ In this test, the outcome is random, so the test might fail depending on the result of `Random.nextBoolean`.
306
+
307
+ To handle this flakiness, we use `it.flakyTest` to retry the test until it passes, or until a defined timeout expires:
228
308
 
229
309
  ```ts
230
- // Retrying the flaky test with a timeout
310
+ // Retrying the flaky test with a 5-second timeout
231
311
  it.effect("retrying until success or timeout", () =>
232
312
  it.flakyTest(flaky, "5 seconds")
233
313
  )
package/dist/cjs/index.js CHANGED
@@ -11,9 +11,10 @@ var _exportNames = {
11
11
  scopedLive: true,
12
12
  layer: true,
13
13
  flakyTest: true,
14
+ prop: true,
14
15
  it: true
15
16
  };
16
- exports.scopedLive = exports.scoped = exports.live = exports.layer = exports.it = exports.flakyTest = exports.effect = exports.addEqualityTesters = void 0;
17
+ exports.scopedLive = exports.scoped = exports.prop = exports.live = exports.layer = exports.it = exports.flakyTest = exports.effect = exports.addEqualityTesters = void 0;
17
18
  var V = _interopRequireWildcard(require("vitest"));
18
19
  Object.keys(V).forEach(function (key) {
19
20
  if (key === "default" || key === "__esModule") return;
@@ -96,6 +97,13 @@ const layer = exports.layer = internal.layer;
96
97
  * @since 1.0.0
97
98
  */
98
99
  const flakyTest = exports.flakyTest = internal.flakyTest;
100
+ /**
101
+ * @since 1.0.0
102
+ */
103
+ const prop = exports.prop = internal.prop;
104
+ /**
105
+ * @since 1.0.0
106
+ */
99
107
  /** @ignored */
100
108
  const methods = {
101
109
  effect,
@@ -103,7 +111,8 @@ const methods = {
103
111
  flakyTest,
104
112
  scoped,
105
113
  scopedLive,
106
- layer
114
+ layer,
115
+ prop
107
116
  };
108
117
  /**
109
118
  * @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","layer","flakyTest","methods","it","assign"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","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","prop","methods","it","assign"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.scopedLive = exports.scoped = exports.live = exports.layer = exports.flakyTest = exports.effect = exports.addEqualityTesters = void 0;
6
+ exports.scopedLive = exports.scoped = exports.prop = exports.live = exports.layer = exports.flakyTest = exports.effect = exports.addEqualityTesters = void 0;
7
+ var Arbitrary = _interopRequireWildcard(require("effect/Arbitrary"));
7
8
  var Cause = _interopRequireWildcard(require("effect/Cause"));
8
9
  var Duration = _interopRequireWildcard(require("effect/Duration"));
9
10
  var Effect = _interopRequireWildcard(require("effect/Effect"));
@@ -17,7 +18,9 @@ var Schedule = _interopRequireWildcard(require("effect/Schedule"));
17
18
  var Scope = _interopRequireWildcard(require("effect/Scope"));
18
19
  var TestEnvironment = _interopRequireWildcard(require("effect/TestContext"));
19
20
  var Utils = _interopRequireWildcard(require("effect/Utils"));
21
+ var _fastCheck = _interopRequireDefault(require("fast-check"));
20
22
  var V = _interopRequireWildcard(require("vitest"));
23
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
24
  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
25
  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
26
  const runPromise = ctx => effect => Effect.gen(function* () {
@@ -37,7 +40,7 @@ const runPromise = ctx => effect => Effect.gen(function* () {
37
40
  }
38
41
  }).pipe(Effect.runPromise).then(f => f());
39
42
  /** @internal */
40
- const runTest = ctx => effect => runPromise(ctx)(Effect.asVoid(effect));
43
+ const runTest = ctx => effect => runPromise(ctx)(effect);
41
44
  /** @internal */
42
45
  const TestEnv = /*#__PURE__*/TestEnvironment.TestContext.pipe( /*#__PURE__*/Layer.provide( /*#__PURE__*/Logger.remove(Logger.defaultLogger)));
43
46
  /** @internal */
@@ -63,21 +66,54 @@ const makeTester = mapEffect => {
63
66
  const each = cases => (name, self, timeout) => V.it.for(cases)(name, typeof timeout === "number" ? {
64
67
  timeout
65
68
  } : timeout ?? {}, (args, ctx) => run(ctx, [args], self));
69
+ const prop = (name, schemaObj, self, timeout) => {
70
+ if (Array.isArray(schemaObj)) {
71
+ const arbs = schemaObj.map(schema => Arbitrary.make(schema));
72
+ return V.it(name,
73
+ // @ts-ignore
74
+ ctx => _fastCheck.default.assert(_fastCheck.default.asyncProperty(...arbs, (...as) => run(ctx, [as, ctx], self))), timeout);
75
+ }
76
+ const arbs = _fastCheck.default.record(Object.keys(schemaObj).reduce(function (result, key) {
77
+ result[key] = Arbitrary.make(schemaObj[key]);
78
+ return result;
79
+ }, {}));
80
+ return V.it(name,
81
+ // @ts-ignore
82
+ ctx => _fastCheck.default.assert(_fastCheck.default.asyncProperty(arbs, (...as) => run(ctx, [as[0], ctx], self))), timeout);
83
+ };
66
84
  return Object.assign(f, {
67
85
  skip,
68
86
  skipIf,
69
87
  runIf,
70
88
  only,
71
- each
89
+ each,
90
+ prop
72
91
  });
73
92
  };
93
+ const prop = (name, schemaObj, self, timeout) => {
94
+ if (Array.isArray(schemaObj)) {
95
+ const arbs = schemaObj.map(schema => Arbitrary.make(schema));
96
+ return V.it(name,
97
+ // @ts-ignore
98
+ ctx => _fastCheck.default.assert(_fastCheck.default.property(...arbs, (...as) => self(as, ctx))), timeout);
99
+ }
100
+ const arbs = _fastCheck.default.record(Object.keys(schemaObj).reduce(function (result, key) {
101
+ result[key] = Arbitrary.make(schemaObj[key]);
102
+ return result;
103
+ }, {}));
104
+ return V.it(name,
105
+ // @ts-ignore
106
+ ctx => _fastCheck.default.assert(_fastCheck.default.property(arbs, (...as) => self(as[0], ctx))), timeout);
107
+ };
74
108
  /** @internal */
109
+ exports.prop = prop;
75
110
  const layer = (layer_, options) => (...args) => {
76
111
  const memoMap = options?.memoMap ?? Effect.runSync(Layer.makeMemoMap);
77
112
  const scope = Effect.runSync(Scope.make());
78
113
  const runtimeEffect = Layer.toRuntimeWithMemoMap(layer_, memoMap).pipe(Scope.extend(scope), Effect.orDie, Effect.cached, Effect.runSync);
79
114
  const it = Object.assign(V.it, {
80
115
  effect: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.provide(runtime), Effect.provide(TestEnv)))),
116
+ prop,
81
117
  scoped: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.scoped, Effect.provide(runtime), Effect.provide(TestEnv)))),
82
118
  live: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => Effect.provide(effect, runtime))),
83
119
  scopedLive: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.scoped, Effect.provide(runtime)))),
@@ -1 +1 @@
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_","options","memoMap","runSync","makeMemoMap","scope","make","runtimeEffect","toRuntimeWithMemoMap","extend","orDie","cached","flatMap","runtime","scoped","live","scopedLive","flakyTest","nestedLayer","provideMerge","beforeAll","toMillis","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":[]}
1
+ {"version":3,"file":"internal.js","names":["Arbitrary","_interopRequireWildcard","require","Cause","Duration","Effect","Equal","Exit","Fiber","_Function","Layer","Logger","Schedule","Scope","TestEnvironment","Utils","_fastCheck","_interopRequireDefault","V","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","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","prop","schemaObj","Array","isArray","arbs","map","schema","make","fc","assert","asyncProperty","as","record","keys","reduce","result","key","assign","property","layer","layer_","options","memoMap","runSync","makeMemoMap","scope","runtimeEffect","toRuntimeWithMemoMap","extend","orDie","cached","flatMap","runtime","scoped","live","scopedLive","flakyTest","nestedLayer","provideMerge","beforeAll","toMillis","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":[]}
@@ -4,6 +4,7 @@
4
4
  import type * as Duration from "effect/Duration";
5
5
  import type * as Effect from "effect/Effect";
6
6
  import type * as Layer from "effect/Layer";
7
+ import type * as Schema from "effect/Schema";
7
8
  import type * as Scope from "effect/Scope";
8
9
  import type * as TestServices from "effect/TestServices";
9
10
  import * as V from "vitest";
@@ -27,6 +28,12 @@ export declare namespace Vitest {
27
28
  interface Test<R> {
28
29
  <A, E>(name: string, self: TestFunction<A, E, R, [V.TaskContext<V.RunnerTestCase<{}>> & V.TestContext]>, timeout?: number | V.TestOptions): void;
29
30
  }
31
+ /**
32
+ * @since 1.0.0
33
+ */
34
+ type SchemaObj = Array<Schema.Schema.Any> | {
35
+ [K in string]: Schema.Schema.Any;
36
+ };
30
37
  /**
31
38
  * @since 1.0.0
32
39
  */
@@ -36,6 +43,15 @@ export declare namespace Vitest {
36
43
  runIf: (condition: unknown) => Vitest.Test<R>;
37
44
  only: Vitest.Test<R>;
38
45
  each: <T>(cases: ReadonlyArray<T>) => <A, E>(name: string, self: TestFunction<A, E, R, Array<T>>, timeout?: number | V.TestOptions) => void;
46
+ /**
47
+ * @since 1.0.0
48
+ */
49
+ prop: <const S extends SchemaObj, A, E>(name: string, schemas: S, self: TestFunction<A, E, R, [
50
+ {
51
+ [K in keyof S]: Schema.Schema.Type<S[K]>;
52
+ },
53
+ V.TaskContext<V.RunnerTestCase<{}>> & V.TestContext
54
+ ]>, timeout?: number | V.TestOptions) => void;
39
55
  }
40
56
  /**
41
57
  * @since 1.0.0
@@ -52,6 +68,12 @@ export declare namespace Vitest {
52
68
  (f: (it: Vitest.Methods<R | R2>) => void): void;
53
69
  (name: string, f: (it: Vitest.Methods<R | R2>) => void): void;
54
70
  };
71
+ /**
72
+ * @since 1.0.0
73
+ */
74
+ readonly prop: <const S extends SchemaObj>(name: string, schemas: S, self: (schemas: {
75
+ [K in keyof S]: Schema.Schema.Type<S[K]>;
76
+ }, ctx: V.TaskContext<V.RunnerTestCase<{}>> & V.TestContext) => void, timeout?: number | V.TestOptions) => void;
55
77
  }
56
78
  }
57
79
  /**
@@ -127,6 +149,12 @@ export declare const layer: <R, E>(layer_: Layer.Layer<R, E>, options?: {
127
149
  * @since 1.0.0
128
150
  */
129
151
  export declare const flakyTest: <A, E, R>(self: Effect.Effect<A, E, R>, timeout?: Duration.DurationInput) => Effect.Effect<A, never, R>;
152
+ /**
153
+ * @since 1.0.0
154
+ */
155
+ export declare const prop: <const S extends Vitest.SchemaObj>(name: string, schemas: S, self: (schemas: {
156
+ [K in keyof S]: Schema.Schema.Type<S[K]>;
157
+ }, ctx: V.TaskContext<V.RunnerTestCase<{}>> & V.TestContext) => void, timeout?: number | V.TestOptions) => void;
130
158
  /**
131
159
  * @since 1.0.0
132
160
  */
@@ -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":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,YAAY,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAA;AAG3B;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAE/B;;GAEG;AACH,yBAAiB,MAAM,CAAC;IACtB;;OAEG;IACH,UAAiB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,SAAS,KAAK,CAAC,GAAG,CAAC;QAChE,CAAC,GAAG,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;KAC5C;IAED;;OAEG;IACH,UAAiB,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,EAAE,CAAC,EACH,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EAClF,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,GAC/B,IAAI,CAAA;KACR;IAED;;OAEG;IACH,KAAY,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;SAAG,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG;KAAE,CAAA;IAEvF;;OAEG;IACH,UAAiB,MAAM,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC9C,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC7C,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,EAAE,CAAC,CAAC,EACN,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KACpB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAA;QAE1G;;WAEG;QACH,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,EAAE,CAAC,EACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,YAAY,CAChB,CAAC,EACD,CAAC,EACD,CAAC,EACD;YAAC;iBAAG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAAE;YAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW;SAAC,CACpG,EACD,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,KAC7B,IAAI,CAAA;KACV;IAED;;OAEG;IACH,UAAiB,OAAO,CAAC,CAAC,GAAG,KAAK,CAAE,SAAQ,GAAG;QAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,CAAA;QAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC/B,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAC7B,OAAO,CAAC,EAAE,QAAQ,CAAC,aAAa,KAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;QAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC3E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QACnD,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;YAC9D,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAA;SAC1C,KAAK;YACJ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAA;YAC/C,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAA;SAC9D,CAAA;QAED;;WAEG;QACH,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,EACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,CACJ,OAAO,EAAE;aAAG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAAE,EACrD,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,KACrD,IAAI,EACT,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,KAC7B,IAAI,CAAA;KACV;CACF;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,IAAkC,CAAA;AAEzE;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAmB,CAAA;AAE/E;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAmB,CAAA;AAE7F;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAiB,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAuB,CAAA;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,eAAO,MAAM,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EACvB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAA;CAAE,KACtF;IAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAA;CAC3F,CAAA;AAEhB;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC5B,OAAO,CAAC,EAAE,QAAQ,CAAC,aAAa,KAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAsB,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,EAClD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,CACJ,OAAO,EAAE;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,EACrD,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,KACrD,IAAI,EACT,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,KAC7B,IAAoB,CAAA;AASzB;;GAEG;AACH,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,OAAsC,CAAA;AAE9D;;GAEG;AACH,cAAc,QAAQ,CAAA"}
@@ -1,2 +1,3 @@
1
- export {};
1
+ import type * as Vitest from "./index.js";
2
+ export declare const prop: Vitest.Vitest.Methods["prop"];
2
3
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,KAAK,MAAM,MAAM,YAAY,CAAA;AA2GzC,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAwB9C,CAAA"}
package/dist/esm/index.js CHANGED
@@ -67,6 +67,13 @@ export const layer = internal.layer;
67
67
  * @since 1.0.0
68
68
  */
69
69
  export const flakyTest = internal.flakyTest;
70
+ /**
71
+ * @since 1.0.0
72
+ */
73
+ export const prop = internal.prop;
74
+ /**
75
+ * @since 1.0.0
76
+ */
70
77
  /** @ignored */
71
78
  const methods = {
72
79
  effect,
@@ -74,7 +81,8 @@ const methods = {
74
81
  flakyTest,
75
82
  scoped,
76
83
  scopedLive,
77
- layer
84
+ layer,
85
+ prop
78
86
  };
79
87
  /**
80
88
  * @since 1.0.0
@@ -1 +1 @@
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;AA+DzC;;;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,GAIhBN,QAAQ,CAACM,KAAK;AAEhB;;;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":[]}
1
+ {"version":3,"file":"index.js","names":["V","internal","addEqualityTesters","effect","scoped","live","scopedLive","layer","flakyTest","prop","methods","it","Object","assign"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AASA,OAAO,KAAKA,CAAC,MAAM,QAAQ;AAC3B,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAgGzC;;;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,GAIhBN,QAAQ,CAACM,KAAK;AAEhB;;;AAGA,OAAO,MAAMC,SAAS,GAGYP,QAAQ,CAACO,SAAS;AAEpD;;;AAGA,OAAO,MAAMC,IAAI,GAQLR,QAAQ,CAACQ,IAAI;AAEzB;;;AAIA;AACA,MAAMC,OAAO,GAAG;EAAEP,MAAM;EAAEE,IAAI;EAAEG,SAAS;EAAEJ,MAAM;EAAEE,UAAU;EAAEC,KAAK;EAAEE;AAAI,CAAW;AAErF;;;AAGA,OAAO,MAAME,EAAE,gBAAmBC,MAAM,CAACC,MAAM,CAACb,CAAC,CAACW,EAAE,EAAED,OAAO,CAAC;AAE9D;;;AAGA,cAAc,QAAQ","ignoreList":[]}
@@ -1,3 +1,4 @@
1
+ import * as Arbitrary from "effect/Arbitrary";
1
2
  import * as Cause from "effect/Cause";
2
3
  import * as Duration from "effect/Duration";
3
4
  import * as Effect from "effect/Effect";
@@ -11,6 +12,7 @@ import * as Schedule from "effect/Schedule";
11
12
  import * as Scope from "effect/Scope";
12
13
  import * as TestEnvironment from "effect/TestContext";
13
14
  import * as Utils from "effect/Utils";
15
+ import fc from "fast-check";
14
16
  import * as V from "vitest";
15
17
  const runPromise = ctx => effect => Effect.gen(function* () {
16
18
  const exitFiber = yield* Effect.fork(Effect.exit(effect));
@@ -29,7 +31,7 @@ const runPromise = ctx => effect => Effect.gen(function* () {
29
31
  }
30
32
  }).pipe(Effect.runPromise).then(f => f());
31
33
  /** @internal */
32
- const runTest = ctx => effect => runPromise(ctx)(Effect.asVoid(effect));
34
+ const runTest = ctx => effect => runPromise(ctx)(effect);
33
35
  /** @internal */
34
36
  const TestEnv = /*#__PURE__*/TestEnvironment.TestContext.pipe( /*#__PURE__*/Layer.provide( /*#__PURE__*/Logger.remove(Logger.defaultLogger)));
35
37
  /** @internal */
@@ -54,14 +56,45 @@ const makeTester = mapEffect => {
54
56
  const each = cases => (name, self, timeout) => V.it.for(cases)(name, typeof timeout === "number" ? {
55
57
  timeout
56
58
  } : timeout ?? {}, (args, ctx) => run(ctx, [args], self));
59
+ const prop = (name, schemaObj, self, timeout) => {
60
+ if (Array.isArray(schemaObj)) {
61
+ const arbs = schemaObj.map(schema => Arbitrary.make(schema));
62
+ return V.it(name,
63
+ // @ts-ignore
64
+ ctx => fc.assert(fc.asyncProperty(...arbs, (...as) => run(ctx, [as, ctx], self))), timeout);
65
+ }
66
+ const arbs = fc.record(Object.keys(schemaObj).reduce(function (result, key) {
67
+ result[key] = Arbitrary.make(schemaObj[key]);
68
+ return result;
69
+ }, {}));
70
+ return V.it(name,
71
+ // @ts-ignore
72
+ ctx => fc.assert(fc.asyncProperty(arbs, (...as) => run(ctx, [as[0], ctx], self))), timeout);
73
+ };
57
74
  return Object.assign(f, {
58
75
  skip,
59
76
  skipIf,
60
77
  runIf,
61
78
  only,
62
- each
79
+ each,
80
+ prop
63
81
  });
64
82
  };
83
+ export const prop = (name, schemaObj, self, timeout) => {
84
+ if (Array.isArray(schemaObj)) {
85
+ const arbs = schemaObj.map(schema => Arbitrary.make(schema));
86
+ return V.it(name,
87
+ // @ts-ignore
88
+ ctx => fc.assert(fc.property(...arbs, (...as) => self(as, ctx))), timeout);
89
+ }
90
+ const arbs = fc.record(Object.keys(schemaObj).reduce(function (result, key) {
91
+ result[key] = Arbitrary.make(schemaObj[key]);
92
+ return result;
93
+ }, {}));
94
+ return V.it(name,
95
+ // @ts-ignore
96
+ ctx => fc.assert(fc.property(arbs, (...as) => self(as[0], ctx))), timeout);
97
+ };
65
98
  /** @internal */
66
99
  export const layer = (layer_, options) => (...args) => {
67
100
  const memoMap = options?.memoMap ?? Effect.runSync(Layer.makeMemoMap);
@@ -69,6 +102,7 @@ export const layer = (layer_, options) => (...args) => {
69
102
  const runtimeEffect = Layer.toRuntimeWithMemoMap(layer_, memoMap).pipe(Scope.extend(scope), Effect.orDie, Effect.cached, Effect.runSync);
70
103
  const it = Object.assign(V.it, {
71
104
  effect: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.provide(runtime), Effect.provide(TestEnv)))),
105
+ prop,
72
106
  scoped: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.scoped, Effect.provide(runtime), Effect.provide(TestEnv)))),
73
107
  live: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => Effect.provide(effect, runtime))),
74
108
  scopedLive: makeTester(effect => Effect.flatMap(runtimeEffect, runtime => effect.pipe(Effect.scoped, Effect.provide(runtime)))),
@@ -1 +1 @@
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_","options","memoMap","runSync","makeMemoMap","scope","make","runtimeEffect","toRuntimeWithMemoMap","extend","orDie","cached","flatMap","runtime","scoped","live","scopedLive","flakyTest","nestedLayer","provideMerge","beforeAll","toMillis","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":[]}
1
+ {"version":3,"file":"internal.js","names":["Arbitrary","Cause","Duration","Effect","Equal","Exit","Fiber","flow","identity","pipe","Layer","Logger","Schedule","Scope","TestEnvironment","Utils","fc","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","prop","schemaObj","Array","isArray","arbs","map","schema","make","assert","asyncProperty","as","record","Object","keys","reduce","result","key","assign","property","layer","layer_","options","memoMap","runSync","makeMemoMap","scope","runtimeEffect","toRuntimeWithMemoMap","extend","orDie","cached","flatMap","runtime","scoped","live","scopedLive","flakyTest","nestedLayer","provideMerge","beforeAll","toMillis","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.12.1",
3
+ "version": "0.13.1",
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.9.2"
14
+ "effect": "^3.10.1"
15
15
  },
16
16
  "publishConfig": {
17
17
  "provenance": true
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  import type * as Duration from "effect/Duration"
5
5
  import type * as Effect from "effect/Effect"
6
6
  import type * as Layer from "effect/Layer"
7
+ import type * as Schema from "effect/Schema"
7
8
  import type * as Scope from "effect/Scope"
8
9
  import type * as TestServices from "effect/TestServices"
9
10
  import * as V from "vitest"
@@ -36,6 +37,11 @@ export namespace Vitest {
36
37
  ): void
37
38
  }
38
39
 
40
+ /**
41
+ * @since 1.0.0
42
+ */
43
+ export type SchemaObj = Array<Schema.Schema.Any> | { [K in string]: Schema.Schema.Any }
44
+
39
45
  /**
40
46
  * @since 1.0.0
41
47
  */
@@ -47,6 +53,21 @@ export namespace Vitest {
47
53
  each: <T>(
48
54
  cases: ReadonlyArray<T>
49
55
  ) => <A, E>(name: string, self: TestFunction<A, E, R, Array<T>>, timeout?: number | V.TestOptions) => void
56
+
57
+ /**
58
+ * @since 1.0.0
59
+ */
60
+ prop: <const S extends SchemaObj, A, E>(
61
+ name: string,
62
+ schemas: S,
63
+ self: TestFunction<
64
+ A,
65
+ E,
66
+ R,
67
+ [{ [K in keyof S]: Schema.Schema.Type<S[K]> }, V.TaskContext<V.RunnerTestCase<{}>> & V.TestContext]
68
+ >,
69
+ timeout?: number | V.TestOptions
70
+ ) => void
50
71
  }
51
72
 
52
73
  /**
@@ -67,6 +88,19 @@ export namespace Vitest {
67
88
  (f: (it: Vitest.Methods<R | R2>) => void): void
68
89
  (name: string, f: (it: Vitest.Methods<R | R2>) => void): void
69
90
  }
91
+
92
+ /**
93
+ * @since 1.0.0
94
+ */
95
+ readonly prop: <const S extends SchemaObj>(
96
+ name: string,
97
+ schemas: S,
98
+ self: (
99
+ schemas: { [K in keyof S]: Schema.Schema.Type<S[K]> },
100
+ ctx: V.TaskContext<V.RunnerTestCase<{}>> & V.TestContext
101
+ ) => void,
102
+ timeout?: number | V.TestOptions
103
+ ) => void
70
104
  }
71
105
  }
72
106
 
@@ -151,8 +185,25 @@ export const flakyTest: <A, E, R>(
151
185
  timeout?: Duration.DurationInput
152
186
  ) => Effect.Effect<A, never, R> = internal.flakyTest
153
187
 
188
+ /**
189
+ * @since 1.0.0
190
+ */
191
+ export const prop: <const S extends Vitest.SchemaObj>(
192
+ name: string,
193
+ schemas: S,
194
+ self: (
195
+ schemas: { [K in keyof S]: Schema.Schema.Type<S[K]> },
196
+ ctx: V.TaskContext<V.RunnerTestCase<{}>> & V.TestContext
197
+ ) => void,
198
+ timeout?: number | V.TestOptions
199
+ ) => void = internal.prop
200
+
201
+ /**
202
+ * @since 1.0.0
203
+ */
204
+
154
205
  /** @ignored */
155
- const methods = { effect, live, flakyTest, scoped, scopedLive, layer } as const
206
+ const methods = { effect, live, flakyTest, scoped, scopedLive, layer, prop } as const
156
207
 
157
208
  /**
158
209
  * @since 1.0.0
package/src/internal.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import type { Tester, TesterContext } from "@vitest/expect"
5
+ import * as Arbitrary from "effect/Arbitrary"
5
6
  import * as Cause from "effect/Cause"
6
7
  import * as Duration from "effect/Duration"
7
8
  import * as Effect from "effect/Effect"
@@ -16,6 +17,7 @@ import * as Scope from "effect/Scope"
16
17
  import * as TestEnvironment from "effect/TestContext"
17
18
  import type * as TestServices from "effect/TestServices"
18
19
  import * as Utils from "effect/Utils"
20
+ import fc from "fast-check"
19
21
  import * as V from "vitest"
20
22
  import type * as Vitest from "./index.js"
21
23
 
@@ -45,8 +47,7 @@ const runPromise = (ctx?: Vitest.TaskContext) => <E, A>(effect: Effect.Effect<A,
45
47
  }).pipe(Effect.runPromise).then((f) => f())
46
48
 
47
49
  /** @internal */
48
- const runTest = (ctx?: Vitest.TaskContext) => <E, A>(effect: Effect.Effect<A, E>) =>
49
- runPromise(ctx)(Effect.asVoid(effect))
50
+ const runTest = (ctx?: Vitest.TaskContext) => <E, A>(effect: Effect.Effect<A, E>) => runPromise(ctx)(effect)
50
51
 
51
52
  /** @internal */
52
53
  const TestEnv = TestEnvironment.TestContext.pipe(
@@ -93,10 +94,62 @@ const makeTester = <R>(
93
94
  V.it.for(cases)(
94
95
  name,
95
96
  typeof timeout === "number" ? { timeout } : timeout ?? {},
96
- (args, ctx) => run(ctx, [args], self)
97
+ (args, ctx) => run(ctx, [args], self) as any
97
98
  )
98
99
 
99
- return Object.assign(f, { skip, skipIf, runIf, only, each })
100
+ const prop: Vitest.Vitest.Tester<R>["prop"] = (name, schemaObj, self, timeout) => {
101
+ if (Array.isArray(schemaObj)) {
102
+ const arbs = schemaObj.map((schema) => Arbitrary.make(schema))
103
+ return V.it(
104
+ name,
105
+ // @ts-ignore
106
+ (ctx) => fc.assert(fc.asyncProperty(...arbs, (...as) => run(ctx, [as as any, ctx], self))),
107
+ timeout
108
+ )
109
+ }
110
+
111
+ const arbs = fc.record(
112
+ Object.keys(schemaObj).reduce(function(result, key) {
113
+ result[key] = Arbitrary.make(schemaObj[key])
114
+ return result
115
+ }, {} as Record<string, fc.Arbitrary<any>>)
116
+ )
117
+
118
+ return V.it(
119
+ name,
120
+ // @ts-ignore
121
+ (ctx) => fc.assert(fc.asyncProperty(arbs, (...as) => run(ctx, [as[0] as any, ctx], self))),
122
+ timeout
123
+ )
124
+ }
125
+
126
+ return Object.assign(f, { skip, skipIf, runIf, only, each, prop })
127
+ }
128
+
129
+ export const prop: Vitest.Vitest.Methods["prop"] = (name, schemaObj, self, timeout) => {
130
+ if (Array.isArray(schemaObj)) {
131
+ const arbs = schemaObj.map((schema) => Arbitrary.make(schema))
132
+ return V.it(
133
+ name,
134
+ // @ts-ignore
135
+ (ctx) => fc.assert(fc.property(...arbs, (...as) => self(as, ctx))),
136
+ timeout
137
+ )
138
+ }
139
+
140
+ const arbs = fc.record(
141
+ Object.keys(schemaObj).reduce(function(result, key) {
142
+ result[key] = Arbitrary.make(schemaObj[key])
143
+ return result
144
+ }, {} as Record<string, fc.Arbitrary<any>>)
145
+ )
146
+
147
+ return V.it(
148
+ name,
149
+ // @ts-ignore
150
+ (ctx) => fc.assert(fc.property(arbs, (...as) => self(as[0], ctx))),
151
+ timeout
152
+ )
100
153
  }
101
154
 
102
155
  /** @internal */
@@ -127,6 +180,9 @@ export const layer = <R, E>(layer_: Layer.Layer<R, E>, options?: {
127
180
  Effect.provide(TestEnv)
128
181
  ))
129
182
  ),
183
+
184
+ prop,
185
+
130
186
  scoped: makeTester<TestServices.TestServices | Scope.Scope | R>((effect) =>
131
187
  Effect.flatMap(runtimeEffect, (runtime) =>
132
188
  effect.pipe(