bupkis 0.18.1 → 0.18.2
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/CHANGELOG.md +7 -0
- package/package.json +1 -4
- package/src/assertion/assertion-types.ts +4 -4
- package/src/assertion/impl/sync-parametric.ts +1 -1
- package/src/expect.ts +0 -4
- package/src/guards.ts +24 -24
- package/src/internal-schema.ts +16 -32
- package/src/value-to-schema.ts +1 -1
- package/dist/assertion/assertion-async.cjs +0 -268
- package/dist/assertion/assertion-async.cjs.map +0 -1
- package/dist/assertion/assertion-async.d.cts +0 -40
- package/dist/assertion/assertion-async.d.cts.map +0 -1
- package/dist/assertion/assertion-async.d.ts +0 -40
- package/dist/assertion/assertion-async.d.ts.map +0 -1
- package/dist/assertion/assertion-async.js +0 -259
- package/dist/assertion/assertion-async.js.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.cjs +0 -132
- package/dist/assertion/assertion-standard-schema-async.cjs.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.d.cts +0 -52
- package/dist/assertion/assertion-standard-schema-async.d.cts.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.d.ts +0 -52
- package/dist/assertion/assertion-standard-schema-async.d.ts.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.js +0 -128
- package/dist/assertion/assertion-standard-schema-async.js.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.cjs +0 -141
- package/dist/assertion/assertion-standard-schema-sync.cjs.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.d.cts +0 -52
- package/dist/assertion/assertion-standard-schema-sync.d.cts.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.d.ts +0 -52
- package/dist/assertion/assertion-standard-schema-sync.d.ts.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.js +0 -137
- package/dist/assertion/assertion-standard-schema-sync.js.map +0 -1
- package/dist/assertion/assertion-sync.cjs +0 -284
- package/dist/assertion/assertion-sync.cjs.map +0 -1
- package/dist/assertion/assertion-sync.d.cts +0 -60
- package/dist/assertion/assertion-sync.d.cts.map +0 -1
- package/dist/assertion/assertion-sync.d.ts +0 -60
- package/dist/assertion/assertion-sync.d.ts.map +0 -1
- package/dist/assertion/assertion-sync.js +0 -275
- package/dist/assertion/assertion-sync.js.map +0 -1
- package/dist/assertion/assertion-types.cjs +0 -20
- package/dist/assertion/assertion-types.cjs.map +0 -1
- package/dist/assertion/assertion-types.d.cts +0 -1086
- package/dist/assertion/assertion-types.d.cts.map +0 -1
- package/dist/assertion/assertion-types.d.ts +0 -1086
- package/dist/assertion/assertion-types.d.ts.map +0 -1
- package/dist/assertion/assertion-types.js +0 -19
- package/dist/assertion/assertion-types.js.map +0 -1
- package/dist/assertion/assertion.cjs +0 -382
- package/dist/assertion/assertion.cjs.map +0 -1
- package/dist/assertion/assertion.d.cts +0 -109
- package/dist/assertion/assertion.d.cts.map +0 -1
- package/dist/assertion/assertion.d.ts +0 -109
- package/dist/assertion/assertion.d.ts.map +0 -1
- package/dist/assertion/assertion.js +0 -375
- package/dist/assertion/assertion.js.map +0 -1
- package/dist/assertion/create.cjs +0 -148
- package/dist/assertion/create.cjs.map +0 -1
- package/dist/assertion/create.d.cts +0 -85
- package/dist/assertion/create.d.cts.map +0 -1
- package/dist/assertion/create.d.ts +0 -85
- package/dist/assertion/create.d.ts.map +0 -1
- package/dist/assertion/create.js +0 -143
- package/dist/assertion/create.js.map +0 -1
- package/dist/assertion/format-assertion-failure.cjs +0 -63
- package/dist/assertion/format-assertion-failure.cjs.map +0 -1
- package/dist/assertion/format-assertion-failure.d.cts +0 -21
- package/dist/assertion/format-assertion-failure.d.cts.map +0 -1
- package/dist/assertion/format-assertion-failure.d.ts +0 -21
- package/dist/assertion/format-assertion-failure.d.ts.map +0 -1
- package/dist/assertion/format-assertion-failure.js +0 -59
- package/dist/assertion/format-assertion-failure.js.map +0 -1
- package/dist/assertion/impl/assertion-util.cjs +0 -68
- package/dist/assertion/impl/assertion-util.cjs.map +0 -1
- package/dist/assertion/impl/assertion-util.d.cts +0 -36
- package/dist/assertion/impl/assertion-util.d.cts.map +0 -1
- package/dist/assertion/impl/assertion-util.d.ts +0 -36
- package/dist/assertion/impl/assertion-util.d.ts.map +0 -1
- package/dist/assertion/impl/assertion-util.js +0 -62
- package/dist/assertion/impl/assertion-util.js.map +0 -1
- package/dist/assertion/impl/async-iterable.cjs +0 -627
- package/dist/assertion/impl/async-iterable.cjs.map +0 -1
- package/dist/assertion/impl/async-iterable.d.cts +0 -406
- package/dist/assertion/impl/async-iterable.d.cts.map +0 -1
- package/dist/assertion/impl/async-iterable.d.ts +0 -406
- package/dist/assertion/impl/async-iterable.d.ts.map +0 -1
- package/dist/assertion/impl/async-iterable.js +0 -624
- package/dist/assertion/impl/async-iterable.js.map +0 -1
- package/dist/assertion/impl/async-parametric.cjs +0 -412
- package/dist/assertion/impl/async-parametric.cjs.map +0 -1
- package/dist/assertion/impl/async-parametric.d.cts +0 -278
- package/dist/assertion/impl/async-parametric.d.cts.map +0 -1
- package/dist/assertion/impl/async-parametric.d.ts +0 -278
- package/dist/assertion/impl/async-parametric.d.ts.map +0 -1
- package/dist/assertion/impl/async-parametric.js +0 -409
- package/dist/assertion/impl/async-parametric.js.map +0 -1
- package/dist/assertion/impl/async.cjs +0 -56
- package/dist/assertion/impl/async.cjs.map +0 -1
- package/dist/assertion/impl/async.d.cts +0 -179
- package/dist/assertion/impl/async.d.cts.map +0 -1
- package/dist/assertion/impl/async.d.ts +0 -179
- package/dist/assertion/impl/async.d.ts.map +0 -1
- package/dist/assertion/impl/async.js +0 -39
- package/dist/assertion/impl/async.js.map +0 -1
- package/dist/assertion/impl/index.cjs +0 -37
- package/dist/assertion/impl/index.cjs.map +0 -1
- package/dist/assertion/impl/index.d.cts +0 -21
- package/dist/assertion/impl/index.d.cts.map +0 -1
- package/dist/assertion/impl/index.d.ts +0 -21
- package/dist/assertion/impl/index.d.ts.map +0 -1
- package/dist/assertion/impl/index.js +0 -21
- package/dist/assertion/impl/index.js.map +0 -1
- package/dist/assertion/impl/iteration-util.cjs +0 -297
- package/dist/assertion/impl/iteration-util.cjs.map +0 -1
- package/dist/assertion/impl/iteration-util.d.cts +0 -12
- package/dist/assertion/impl/iteration-util.d.cts.map +0 -1
- package/dist/assertion/impl/iteration-util.d.ts +0 -12
- package/dist/assertion/impl/iteration-util.d.ts.map +0 -1
- package/dist/assertion/impl/iteration-util.js +0 -282
- package/dist/assertion/impl/iteration-util.js.map +0 -1
- package/dist/assertion/impl/snapshot.cjs +0 -276
- package/dist/assertion/impl/snapshot.cjs.map +0 -1
- package/dist/assertion/impl/snapshot.d.cts +0 -278
- package/dist/assertion/impl/snapshot.d.cts.map +0 -1
- package/dist/assertion/impl/snapshot.d.ts +0 -278
- package/dist/assertion/impl/snapshot.d.ts.map +0 -1
- package/dist/assertion/impl/snapshot.js +0 -273
- package/dist/assertion/impl/snapshot.js.map +0 -1
- package/dist/assertion/impl/sync-basic.cjs +0 -553
- package/dist/assertion/impl/sync-basic.cjs.map +0 -1
- package/dist/assertion/impl/sync-basic.d.cts +0 -528
- package/dist/assertion/impl/sync-basic.d.cts.map +0 -1
- package/dist/assertion/impl/sync-basic.d.ts +0 -528
- package/dist/assertion/impl/sync-basic.d.ts.map +0 -1
- package/dist/assertion/impl/sync-basic.js +0 -550
- package/dist/assertion/impl/sync-basic.js.map +0 -1
- package/dist/assertion/impl/sync-collection.cjs +0 -856
- package/dist/assertion/impl/sync-collection.cjs.map +0 -1
- package/dist/assertion/impl/sync-collection.d.cts +0 -607
- package/dist/assertion/impl/sync-collection.d.cts.map +0 -1
- package/dist/assertion/impl/sync-collection.d.ts +0 -607
- package/dist/assertion/impl/sync-collection.d.ts.map +0 -1
- package/dist/assertion/impl/sync-collection.js +0 -850
- package/dist/assertion/impl/sync-collection.js.map +0 -1
- package/dist/assertion/impl/sync-date.cjs +0 -341
- package/dist/assertion/impl/sync-date.cjs.map +0 -1
- package/dist/assertion/impl/sync-date.d.cts +0 -209
- package/dist/assertion/impl/sync-date.d.cts.map +0 -1
- package/dist/assertion/impl/sync-date.d.ts +0 -209
- package/dist/assertion/impl/sync-date.d.ts.map +0 -1
- package/dist/assertion/impl/sync-date.js +0 -338
- package/dist/assertion/impl/sync-date.js.map +0 -1
- package/dist/assertion/impl/sync-esoteric.cjs +0 -214
- package/dist/assertion/impl/sync-esoteric.cjs.map +0 -1
- package/dist/assertion/impl/sync-esoteric.d.cts +0 -191
- package/dist/assertion/impl/sync-esoteric.d.cts.map +0 -1
- package/dist/assertion/impl/sync-esoteric.d.ts +0 -191
- package/dist/assertion/impl/sync-esoteric.d.ts.map +0 -1
- package/dist/assertion/impl/sync-esoteric.js +0 -211
- package/dist/assertion/impl/sync-esoteric.js.map +0 -1
- package/dist/assertion/impl/sync-iterable.cjs +0 -512
- package/dist/assertion/impl/sync-iterable.cjs.map +0 -1
- package/dist/assertion/impl/sync-iterable.d.cts +0 -334
- package/dist/assertion/impl/sync-iterable.d.cts.map +0 -1
- package/dist/assertion/impl/sync-iterable.d.ts +0 -334
- package/dist/assertion/impl/sync-iterable.d.ts.map +0 -1
- package/dist/assertion/impl/sync-iterable.js +0 -509
- package/dist/assertion/impl/sync-iterable.js.map +0 -1
- package/dist/assertion/impl/sync-parametric.cjs +0 -805
- package/dist/assertion/impl/sync-parametric.cjs.map +0 -1
- package/dist/assertion/impl/sync-parametric.d.cts +0 -560
- package/dist/assertion/impl/sync-parametric.d.cts.map +0 -1
- package/dist/assertion/impl/sync-parametric.d.ts +0 -560
- package/dist/assertion/impl/sync-parametric.d.ts.map +0 -1
- package/dist/assertion/impl/sync-parametric.js +0 -802
- package/dist/assertion/impl/sync-parametric.js.map +0 -1
- package/dist/assertion/impl/sync.cjs +0 -214
- package/dist/assertion/impl/sync.cjs.map +0 -1
- package/dist/assertion/impl/sync.d.cts +0 -512
- package/dist/assertion/impl/sync.d.cts.map +0 -1
- package/dist/assertion/impl/sync.d.ts +0 -512
- package/dist/assertion/impl/sync.d.ts.map +0 -1
- package/dist/assertion/impl/sync.js +0 -197
- package/dist/assertion/impl/sync.js.map +0 -1
- package/dist/assertion/index.cjs +0 -38
- package/dist/assertion/index.cjs.map +0 -1
- package/dist/assertion/index.d.cts +0 -18
- package/dist/assertion/index.d.cts.map +0 -1
- package/dist/assertion/index.d.ts +0 -18
- package/dist/assertion/index.d.ts.map +0 -1
- package/dist/assertion/index.js +0 -17
- package/dist/assertion/index.js.map +0 -1
- package/dist/assertion/slotify.cjs +0 -165
- package/dist/assertion/slotify.cjs.map +0 -1
- package/dist/assertion/slotify.d.cts +0 -11
- package/dist/assertion/slotify.d.cts.map +0 -1
- package/dist/assertion/slotify.d.ts +0 -11
- package/dist/assertion/slotify.d.ts.map +0 -1
- package/dist/assertion/slotify.js +0 -161
- package/dist/assertion/slotify.js.map +0 -1
- package/dist/bootstrap.cjs +0 -43
- package/dist/bootstrap.cjs.map +0 -1
- package/dist/bootstrap.d.cts +0 -27
- package/dist/bootstrap.d.cts.map +0 -1
- package/dist/bootstrap.d.ts +0 -27
- package/dist/bootstrap.d.ts.map +0 -1
- package/dist/bootstrap.js +0 -40
- package/dist/bootstrap.js.map +0 -1
- package/dist/constant.cjs +0 -82
- package/dist/constant.cjs.map +0 -1
- package/dist/constant.d.cts +0 -69
- package/dist/constant.d.cts.map +0 -1
- package/dist/constant.d.ts +0 -69
- package/dist/constant.d.ts.map +0 -1
- package/dist/constant.js +0 -79
- package/dist/constant.js.map +0 -1
- package/dist/diff.cjs +0 -340
- package/dist/diff.cjs.map +0 -1
- package/dist/diff.d.cts +0 -51
- package/dist/diff.d.cts.map +0 -1
- package/dist/diff.d.ts +0 -51
- package/dist/diff.d.ts.map +0 -1
- package/dist/diff.js +0 -334
- package/dist/diff.js.map +0 -1
- package/dist/error.cjs +0 -204
- package/dist/error.cjs.map +0 -1
- package/dist/error.d.cts +0 -212
- package/dist/error.d.cts.map +0 -1
- package/dist/error.d.ts +0 -212
- package/dist/error.d.ts.map +0 -1
- package/dist/error.js +0 -191
- package/dist/error.js.map +0 -1
- package/dist/expect.cjs +0 -590
- package/dist/expect.cjs.map +0 -1
- package/dist/expect.d.cts +0 -138
- package/dist/expect.d.cts.map +0 -1
- package/dist/expect.d.ts +0 -138
- package/dist/expect.d.ts.map +0 -1
- package/dist/expect.js +0 -582
- package/dist/expect.js.map +0 -1
- package/dist/guards.cjs +0 -297
- package/dist/guards.cjs.map +0 -1
- package/dist/guards.d.cts +0 -231
- package/dist/guards.d.cts.map +0 -1
- package/dist/guards.d.ts +0 -231
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js +0 -277
- package/dist/guards.js.map +0 -1
- package/dist/index.cjs +0 -111
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -448
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.ts +0 -448
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -71
- package/dist/index.js.map +0 -1
- package/dist/internal-schema.cjs +0 -253
- package/dist/internal-schema.cjs.map +0 -1
- package/dist/internal-schema.d.cts +0 -8
- package/dist/internal-schema.d.cts.map +0 -1
- package/dist/internal-schema.d.ts +0 -8
- package/dist/internal-schema.d.ts.map +0 -1
- package/dist/internal-schema.js +0 -248
- package/dist/internal-schema.js.map +0 -1
- package/dist/metadata.cjs +0 -57
- package/dist/metadata.cjs.map +0 -1
- package/dist/metadata.d.cts +0 -27
- package/dist/metadata.d.cts.map +0 -1
- package/dist/metadata.d.ts +0 -27
- package/dist/metadata.d.ts.map +0 -1
- package/dist/metadata.js +0 -54
- package/dist/metadata.js.map +0 -1
- package/dist/schema.cjs +0 -1522
- package/dist/schema.cjs.map +0 -1
- package/dist/schema.d.cts +0 -1196
- package/dist/schema.d.cts.map +0 -1
- package/dist/schema.d.ts +0 -1196
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js +0 -1516
- package/dist/schema.js.map +0 -1
- package/dist/snapshot/adapter.cjs +0 -31
- package/dist/snapshot/adapter.cjs.map +0 -1
- package/dist/snapshot/adapter.d.cts +0 -258
- package/dist/snapshot/adapter.d.cts.map +0 -1
- package/dist/snapshot/adapter.d.ts +0 -258
- package/dist/snapshot/adapter.d.ts.map +0 -1
- package/dist/snapshot/adapter.js +0 -27
- package/dist/snapshot/adapter.js.map +0 -1
- package/dist/snapshot/adapters/fallback.cjs +0 -453
- package/dist/snapshot/adapters/fallback.cjs.map +0 -1
- package/dist/snapshot/adapters/fallback.d.cts +0 -185
- package/dist/snapshot/adapters/fallback.d.cts.map +0 -1
- package/dist/snapshot/adapters/fallback.d.ts +0 -185
- package/dist/snapshot/adapters/fallback.d.ts.map +0 -1
- package/dist/snapshot/adapters/fallback.js +0 -446
- package/dist/snapshot/adapters/fallback.js.map +0 -1
- package/dist/snapshot/adapters/node-test.cjs +0 -301
- package/dist/snapshot/adapters/node-test.cjs.map +0 -1
- package/dist/snapshot/adapters/node-test.d.cts +0 -131
- package/dist/snapshot/adapters/node-test.d.cts.map +0 -1
- package/dist/snapshot/adapters/node-test.d.ts +0 -131
- package/dist/snapshot/adapters/node-test.d.ts.map +0 -1
- package/dist/snapshot/adapters/node-test.js +0 -297
- package/dist/snapshot/adapters/node-test.js.map +0 -1
- package/dist/snapshot/index.cjs +0 -61
- package/dist/snapshot/index.cjs.map +0 -1
- package/dist/snapshot/index.d.cts +0 -40
- package/dist/snapshot/index.d.cts.map +0 -1
- package/dist/snapshot/index.d.ts +0 -40
- package/dist/snapshot/index.d.ts.map +0 -1
- package/dist/snapshot/index.js +0 -44
- package/dist/snapshot/index.js.map +0 -1
- package/dist/snapshot/node-version.cjs +0 -49
- package/dist/snapshot/node-version.cjs.map +0 -1
- package/dist/snapshot/node-version.d.cts +0 -34
- package/dist/snapshot/node-version.d.cts.map +0 -1
- package/dist/snapshot/node-version.d.ts +0 -34
- package/dist/snapshot/node-version.d.ts.map +0 -1
- package/dist/snapshot/node-version.js +0 -44
- package/dist/snapshot/node-version.js.map +0 -1
- package/dist/snapshot/select-adapter.cjs +0 -170
- package/dist/snapshot/select-adapter.cjs.map +0 -1
- package/dist/snapshot/select-adapter.d.cts +0 -128
- package/dist/snapshot/select-adapter.d.cts.map +0 -1
- package/dist/snapshot/select-adapter.d.ts +0 -128
- package/dist/snapshot/select-adapter.d.ts.map +0 -1
- package/dist/snapshot/select-adapter.js +0 -164
- package/dist/snapshot/select-adapter.js.map +0 -1
- package/dist/snapshot/serializer.cjs +0 -246
- package/dist/snapshot/serializer.cjs.map +0 -1
- package/dist/snapshot/serializer.d.cts +0 -126
- package/dist/snapshot/serializer.d.cts.map +0 -1
- package/dist/snapshot/serializer.d.ts +0 -126
- package/dist/snapshot/serializer.d.ts.map +0 -1
- package/dist/snapshot/serializer.js +0 -238
- package/dist/snapshot/serializer.js.map +0 -1
- package/dist/standard-schema.cjs +0 -13
- package/dist/standard-schema.cjs.map +0 -1
- package/dist/standard-schema.d.cts +0 -192
- package/dist/standard-schema.d.cts.map +0 -1
- package/dist/standard-schema.d.ts +0 -192
- package/dist/standard-schema.d.ts.map +0 -1
- package/dist/standard-schema.js +0 -12
- package/dist/standard-schema.js.map +0 -1
- package/dist/types.cjs +0 -22
- package/dist/types.cjs.map +0 -1
- package/dist/types.d.cts +0 -905
- package/dist/types.d.cts.map +0 -1
- package/dist/types.d.ts +0 -905
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -21
- package/dist/types.js.map +0 -1
- package/dist/use.cjs +0 -240
- package/dist/use.cjs.map +0 -1
- package/dist/use.d.cts +0 -8
- package/dist/use.d.cts.map +0 -1
- package/dist/use.d.ts +0 -8
- package/dist/use.d.ts.map +0 -1
- package/dist/use.js +0 -236
- package/dist/use.js.map +0 -1
- package/dist/util.cjs +0 -255
- package/dist/util.cjs.map +0 -1
- package/dist/util.d.cts +0 -141
- package/dist/util.d.cts.map +0 -1
- package/dist/util.d.ts +0 -141
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js +0 -234
- package/dist/util.js.map +0 -1
- package/dist/value-to-schema.cjs +0 -537
- package/dist/value-to-schema.cjs.map +0 -1
- package/dist/value-to-schema.d.cts +0 -144
- package/dist/value-to-schema.d.cts.map +0 -1
- package/dist/value-to-schema.d.ts +0 -144
- package/dist/value-to-schema.d.ts.map +0 -1
- package/dist/value-to-schema.js +0 -533
- package/dist/value-to-schema.js.map +0 -1
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Date and time-related assertions for temporal testing scenarios.
|
|
3
|
-
*
|
|
4
|
-
* This module provides comprehensive Date and Time assertions with natural
|
|
5
|
-
* language syntax for testing applications that deal with temporal data,
|
|
6
|
-
* scheduling, timestamps, and time-based operations.
|
|
7
|
-
*
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
* @groupDescription Date/Time Assertions
|
|
10
|
-
* Temporal assertions for dates, times, durations, and time-based comparisons.
|
|
11
|
-
*
|
|
12
|
-
* @showGroups
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* Asserts that the subject is a valid date (Date object, ISO string, or
|
|
16
|
-
* timestamp).
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
*
|
|
20
|
-
* ```ts
|
|
21
|
-
* expect(new Date(), 'to be a valid date'); // passes
|
|
22
|
-
* expect('2023-01-01T00:00:00Z', 'to be a valid date'); // passes
|
|
23
|
-
* expect(1640995200000, 'to be a valid date'); // passes
|
|
24
|
-
* expect('invalid', 'to be a valid date'); // fails
|
|
25
|
-
* ```
|
|
26
|
-
*
|
|
27
|
-
* @group Date/Time Assertions
|
|
28
|
-
* @bupkisAnchor unknown-to-be-a-valid-date
|
|
29
|
-
* @bupkisAssertionCategory date
|
|
30
|
-
*/
|
|
31
|
-
export declare const validDateAssertion: import("../assertion-types.js").AssertionStandardSchemaSync<readonly [readonly ["to be a valid date", "to be date-like"]], import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, never>;
|
|
32
|
-
/**
|
|
33
|
-
* Asserts that the subject is before another date.
|
|
34
|
-
*
|
|
35
|
-
* @example
|
|
36
|
-
*
|
|
37
|
-
* ```ts
|
|
38
|
-
* expect(new Date('2022-01-01'), 'to be before', new Date('2023-01-01')); // passes
|
|
39
|
-
* expect(new Date('2023-01-01'), 'to be before', new Date('2022-01-01')); // fails
|
|
40
|
-
* expect('2022-01-01', 'to be before', '2023-01-01'); // passes
|
|
41
|
-
* ```
|
|
42
|
-
*
|
|
43
|
-
* @group Date/Time Assertions
|
|
44
|
-
* @bupkisAnchor date-like-to-be-before-date-like
|
|
45
|
-
* @bupkisAssertionCategory date
|
|
46
|
-
*/
|
|
47
|
-
export declare const beforeAssertion: import("../assertion-types.js").AssertionFunctionSync<readonly [import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, "to be before", import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>], (subject: string | number | Date, other: string | number | Date) => {
|
|
48
|
-
message: string;
|
|
49
|
-
schema?: undefined;
|
|
50
|
-
subject?: undefined;
|
|
51
|
-
} | {
|
|
52
|
-
schema: import("zod").ZodDate;
|
|
53
|
-
subject: Date;
|
|
54
|
-
message?: undefined;
|
|
55
|
-
}, readonly [import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, import("../assertion-types.js").PhraseLiteralSlot<"to be before">, import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>]>;
|
|
56
|
-
/**
|
|
57
|
-
* Asserts that the subject is after another date.
|
|
58
|
-
*
|
|
59
|
-
* @example
|
|
60
|
-
*
|
|
61
|
-
* ```ts
|
|
62
|
-
* expect(new Date('2023-01-01'), 'to be after', new Date('2022-01-01')); // passes
|
|
63
|
-
* expect(new Date('2022-01-01'), 'to be after', new Date('2023-01-01')); // fails
|
|
64
|
-
* expect('2023-01-01', 'to be after', '2022-01-01'); // passes
|
|
65
|
-
* ```
|
|
66
|
-
*
|
|
67
|
-
* @group Date/Time Assertions
|
|
68
|
-
* @bupkisAnchor date-like-to-be-after-date-like
|
|
69
|
-
* @bupkisAssertionCategory date
|
|
70
|
-
*/
|
|
71
|
-
export declare const afterAssertion: import("../assertion-types.js").AssertionFunctionSync<readonly [import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, "to be after", import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>], (subject: string | number | Date, other: string | number | Date) => {
|
|
72
|
-
message: string;
|
|
73
|
-
schema?: undefined;
|
|
74
|
-
subject?: undefined;
|
|
75
|
-
} | {
|
|
76
|
-
schema: import("zod").ZodDate;
|
|
77
|
-
subject: Date;
|
|
78
|
-
message?: undefined;
|
|
79
|
-
}, readonly [import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, import("../assertion-types.js").PhraseLiteralSlot<"to be after">, import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>]>;
|
|
80
|
-
/**
|
|
81
|
-
* Asserts that the subject is between two dates (inclusive).
|
|
82
|
-
*
|
|
83
|
-
* @example
|
|
84
|
-
*
|
|
85
|
-
* ```ts
|
|
86
|
-
* expect(
|
|
87
|
-
* new Date('2022-06-01'),
|
|
88
|
-
* 'to be between',
|
|
89
|
-
* new Date('2022-01-01'),
|
|
90
|
-
* new Date('2022-12-31'),
|
|
91
|
-
* ); // passes
|
|
92
|
-
* expect(
|
|
93
|
-
* new Date('2023-01-01'),
|
|
94
|
-
* 'to be between',
|
|
95
|
-
* new Date('2022-01-01'),
|
|
96
|
-
* new Date('2022-12-31'),
|
|
97
|
-
* ); // fails
|
|
98
|
-
* ```
|
|
99
|
-
*
|
|
100
|
-
* @group Date/Time Assertions
|
|
101
|
-
* @bupkisAnchor date-like-to-be-between-date-like-and-date-like
|
|
102
|
-
* @bupkisAssertionCategory date
|
|
103
|
-
*/
|
|
104
|
-
export declare const betweenAssertion: import("../assertion-types.js").AssertionFunctionSync<readonly [import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, "to be between", import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, "and", import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>], (subject: string | number | Date, start: string | number | Date, end: string | number | Date) => {
|
|
105
|
-
message: string;
|
|
106
|
-
schema?: undefined;
|
|
107
|
-
subject?: undefined;
|
|
108
|
-
} | {
|
|
109
|
-
schema: import("zod").ZodDate;
|
|
110
|
-
subject: Date;
|
|
111
|
-
message?: undefined;
|
|
112
|
-
}, readonly [import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, import("../assertion-types.js").PhraseLiteralSlot<"to be between">, import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, import("../assertion-types.js").PhraseLiteralSlot<"and">, import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>]>;
|
|
113
|
-
/**
|
|
114
|
-
* Asserts that the subject is the same date as another (ignoring time).
|
|
115
|
-
*
|
|
116
|
-
* @example
|
|
117
|
-
*
|
|
118
|
-
* ```ts
|
|
119
|
-
* expect(
|
|
120
|
-
* new Date('2023-01-01T10:00:00'),
|
|
121
|
-
* 'to be the same date as',
|
|
122
|
-
* new Date('2023-01-01T15:30:00'),
|
|
123
|
-
* ); // passes
|
|
124
|
-
* expect(
|
|
125
|
-
* new Date('2023-01-01'),
|
|
126
|
-
* 'to be the same date as',
|
|
127
|
-
* new Date('2023-01-02'),
|
|
128
|
-
* ); // fails
|
|
129
|
-
* ```
|
|
130
|
-
*
|
|
131
|
-
* @group Date/Time Assertions
|
|
132
|
-
* @bupkisAnchor date-like-to-be-the-same-date-as-date-like
|
|
133
|
-
* @bupkisAssertionCategory date
|
|
134
|
-
*/
|
|
135
|
-
export declare const sameDateAssertion: import("../assertion-types.js").AssertionFunctionSync<readonly [import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, "to be the same date as", import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>], (subject: string | number | Date, other: string | number | Date) => {
|
|
136
|
-
message: string;
|
|
137
|
-
actual?: undefined;
|
|
138
|
-
expected?: undefined;
|
|
139
|
-
} | {
|
|
140
|
-
actual: string;
|
|
141
|
-
expected: string;
|
|
142
|
-
message: string;
|
|
143
|
-
} | undefined, readonly [import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, import("../assertion-types.js").PhraseLiteralSlot<"to be the same date as">, import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>]>;
|
|
144
|
-
/**
|
|
145
|
-
* Asserts that the subject is equal to another date within a tolerance.
|
|
146
|
-
*
|
|
147
|
-
* @example
|
|
148
|
-
*
|
|
149
|
-
* ```ts
|
|
150
|
-
* const date1 = new Date('2023-01-01T10:00:00.000Z');
|
|
151
|
-
* const date2 = new Date('2023-01-01T10:00:00.500Z');
|
|
152
|
-
* expect(date1, 'to equal', date2, 'within', '1 second'); // passes
|
|
153
|
-
* expect(date1, 'to equal', date2, 'within', '100 milliseconds'); // fails
|
|
154
|
-
* ```
|
|
155
|
-
*
|
|
156
|
-
* @group Date/Time Assertions
|
|
157
|
-
* @bupkisAnchor date-like-to-equal-date-like-within-duration
|
|
158
|
-
* @bupkisAssertionCategory date
|
|
159
|
-
*/
|
|
160
|
-
export declare const equalWithinAssertion: import("../assertion-types.js").AssertionFunctionSync<readonly [import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, "to equal", import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, "within", import("zod").ZodCustomStringFormat<"duration">], (subject: string | number | Date, other: string | number | Date, toleranceStr: string) => {
|
|
161
|
-
message: string;
|
|
162
|
-
actual?: undefined;
|
|
163
|
-
expected?: undefined;
|
|
164
|
-
} | {
|
|
165
|
-
actual: {
|
|
166
|
-
difference: number;
|
|
167
|
-
};
|
|
168
|
-
expected: {
|
|
169
|
-
maxDifference: number;
|
|
170
|
-
};
|
|
171
|
-
message: string;
|
|
172
|
-
} | undefined, readonly [import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, import("../assertion-types.js").PhraseLiteralSlot<"to equal">, import("zod").ZodUnion<readonly [import("zod").ZodDate, import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>, import("zod").ZodInt]>, import("../assertion-types.js").PhraseLiteralSlot<"within">, import("zod").ZodCustomStringFormat<"duration">]>;
|
|
173
|
-
/**
|
|
174
|
-
* Asserts that the subject is a weekend (Saturday or Sunday) in UTC.
|
|
175
|
-
*
|
|
176
|
-
* @example
|
|
177
|
-
*
|
|
178
|
-
* ```ts
|
|
179
|
-
* expect(new Date('2023-01-07'), 'to be a weekend'); // passes (Saturday in UTC)
|
|
180
|
-
* expect(new Date('2023-01-08'), 'to be a weekend'); // passes (Sunday in UTC)
|
|
181
|
-
* expect(new Date('2023-01-09'), 'to be a weekend'); // fails (Monday in UTC)
|
|
182
|
-
* ```
|
|
183
|
-
*
|
|
184
|
-
* @group Date/Time Assertions
|
|
185
|
-
* @bupkisAnchor unknown-to-be-a-weekend
|
|
186
|
-
* @bupkisAssertionCategory date
|
|
187
|
-
*/
|
|
188
|
-
export declare const weekendAssertion: import("../assertion-types.js").AssertionFunctionSync<readonly ["to be a weekend"], (subject: unknown) => {
|
|
189
|
-
message: string;
|
|
190
|
-
} | undefined, never>;
|
|
191
|
-
/**
|
|
192
|
-
* Asserts that the subject is a weekday (Monday through Friday) in UTC.
|
|
193
|
-
*
|
|
194
|
-
* @example
|
|
195
|
-
*
|
|
196
|
-
* ```ts
|
|
197
|
-
* expect(new Date('2023-01-09'), 'to be a weekday'); // passes (Monday in UTC)
|
|
198
|
-
* expect(new Date('2023-01-13'), 'to be a weekday'); // passes (Friday in UTC)
|
|
199
|
-
* expect(new Date('2023-01-07'), 'to be a weekday'); // fails (Saturday in UTC)
|
|
200
|
-
* ```
|
|
201
|
-
*
|
|
202
|
-
* @group Date/Time Assertions
|
|
203
|
-
* @bupkisAnchor unknown-to-be-a-weekday
|
|
204
|
-
* @bupkisAssertionCategory date
|
|
205
|
-
*/
|
|
206
|
-
export declare const weekdayAssertion: import("../assertion-types.js").AssertionFunctionSync<readonly ["to be a weekday"], (subject: unknown) => {
|
|
207
|
-
message: string;
|
|
208
|
-
} | undefined, never>;
|
|
209
|
-
//# sourceMappingURL=sync-date.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync-date.d.ts","sourceRoot":"","sources":["../../../src/assertion/impl/sync-date.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAmCH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB,8SAG9B,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe;;;;;;;;saAsB3B,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc;;;;;;;;qaAsB1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;4oBAkC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;4bA6B7B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;4hBAwChC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB;;qBAmB5B,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB;;qBAmB5B,CAAC"}
|
|
@@ -1,338 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Date and time-related assertions for temporal testing scenarios.
|
|
3
|
-
*
|
|
4
|
-
* This module provides comprehensive Date and Time assertions with natural
|
|
5
|
-
* language syntax for testing applications that deal with temporal data,
|
|
6
|
-
* scheduling, timestamps, and time-based operations.
|
|
7
|
-
*
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
* @groupDescription Date/Time Assertions
|
|
10
|
-
* Temporal assertions for dates, times, durations, and time-based comparisons.
|
|
11
|
-
*
|
|
12
|
-
* @showGroups
|
|
13
|
-
*/
|
|
14
|
-
import { DAY_NAMES } from "../../constant.js";
|
|
15
|
-
import { DateLikeFormatSchema, DateSchema, DurationFormatSchema, DurationSchema, } from "../../schema.js";
|
|
16
|
-
import { createAssertion } from "../create.js";
|
|
17
|
-
const { isNaN } = Number;
|
|
18
|
-
const { abs } = Math;
|
|
19
|
-
/**
|
|
20
|
-
* Converts various date-like inputs to Date objects for comparison. Supports
|
|
21
|
-
* Date objects, ISO strings, and timestamps.
|
|
22
|
-
*
|
|
23
|
-
* @function
|
|
24
|
-
*/
|
|
25
|
-
const toDate = (value) => {
|
|
26
|
-
if (value instanceof Date) {
|
|
27
|
-
return value;
|
|
28
|
-
}
|
|
29
|
-
if (typeof value === 'string') {
|
|
30
|
-
const parsed = new Date(value);
|
|
31
|
-
return isNaN(parsed.getTime()) ? null : parsed;
|
|
32
|
-
}
|
|
33
|
-
if (typeof value === 'number') {
|
|
34
|
-
const parsed = new Date(value);
|
|
35
|
-
return isNaN(parsed.getTime()) ? null : parsed;
|
|
36
|
-
}
|
|
37
|
-
return null;
|
|
38
|
-
};
|
|
39
|
-
/**
|
|
40
|
-
* Asserts that the subject is a valid date (Date object, ISO string, or
|
|
41
|
-
* timestamp).
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
*
|
|
45
|
-
* ```ts
|
|
46
|
-
* expect(new Date(), 'to be a valid date'); // passes
|
|
47
|
-
* expect('2023-01-01T00:00:00Z', 'to be a valid date'); // passes
|
|
48
|
-
* expect(1640995200000, 'to be a valid date'); // passes
|
|
49
|
-
* expect('invalid', 'to be a valid date'); // fails
|
|
50
|
-
* ```
|
|
51
|
-
*
|
|
52
|
-
* @group Date/Time Assertions
|
|
53
|
-
* @bupkisAnchor unknown-to-be-a-valid-date
|
|
54
|
-
* @bupkisAssertionCategory date
|
|
55
|
-
*/
|
|
56
|
-
export const validDateAssertion = createAssertion([['to be a valid date', 'to be date-like']], DateLikeFormatSchema);
|
|
57
|
-
/**
|
|
58
|
-
* Asserts that the subject is before another date.
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
*
|
|
62
|
-
* ```ts
|
|
63
|
-
* expect(new Date('2022-01-01'), 'to be before', new Date('2023-01-01')); // passes
|
|
64
|
-
* expect(new Date('2023-01-01'), 'to be before', new Date('2022-01-01')); // fails
|
|
65
|
-
* expect('2022-01-01', 'to be before', '2023-01-01'); // passes
|
|
66
|
-
* ```
|
|
67
|
-
*
|
|
68
|
-
* @group Date/Time Assertions
|
|
69
|
-
* @bupkisAnchor date-like-to-be-before-date-like
|
|
70
|
-
* @bupkisAssertionCategory date
|
|
71
|
-
*/
|
|
72
|
-
export const beforeAssertion = createAssertion([DateLikeFormatSchema, 'to be before', DateLikeFormatSchema], (subject, other) => {
|
|
73
|
-
const subjectDate = toDate(subject);
|
|
74
|
-
const otherDate = toDate(other);
|
|
75
|
-
if (!subjectDate) {
|
|
76
|
-
return {
|
|
77
|
-
message: `Expected subject to be a valid date, but received: ${subject}`,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
if (!otherDate) {
|
|
81
|
-
return {
|
|
82
|
-
message: `Expected comparison date to be a valid date, but received: ${other}`,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
// Use Zod's date validation with max constraint for better error messages
|
|
86
|
-
return {
|
|
87
|
-
schema: DateSchema.max(new Date(otherDate.getTime() - 1)),
|
|
88
|
-
subject: subjectDate,
|
|
89
|
-
};
|
|
90
|
-
});
|
|
91
|
-
/**
|
|
92
|
-
* Asserts that the subject is after another date.
|
|
93
|
-
*
|
|
94
|
-
* @example
|
|
95
|
-
*
|
|
96
|
-
* ```ts
|
|
97
|
-
* expect(new Date('2023-01-01'), 'to be after', new Date('2022-01-01')); // passes
|
|
98
|
-
* expect(new Date('2022-01-01'), 'to be after', new Date('2023-01-01')); // fails
|
|
99
|
-
* expect('2023-01-01', 'to be after', '2022-01-01'); // passes
|
|
100
|
-
* ```
|
|
101
|
-
*
|
|
102
|
-
* @group Date/Time Assertions
|
|
103
|
-
* @bupkisAnchor date-like-to-be-after-date-like
|
|
104
|
-
* @bupkisAssertionCategory date
|
|
105
|
-
*/
|
|
106
|
-
export const afterAssertion = createAssertion([DateLikeFormatSchema, 'to be after', DateLikeFormatSchema], (subject, other) => {
|
|
107
|
-
const subjectDate = toDate(subject);
|
|
108
|
-
const otherDate = toDate(other);
|
|
109
|
-
if (subjectDate === null) {
|
|
110
|
-
return {
|
|
111
|
-
message: `Expected subject to be a valid date, but received: ${subject}`,
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
if (otherDate === null) {
|
|
115
|
-
return {
|
|
116
|
-
message: `Expected comparison date to be a valid date, but received: ${other}`,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
// Use Zod's date validation with min constraint for better error messages
|
|
120
|
-
return {
|
|
121
|
-
schema: DateSchema.min(new Date(otherDate.getTime() + 1)),
|
|
122
|
-
subject: subjectDate,
|
|
123
|
-
};
|
|
124
|
-
});
|
|
125
|
-
/**
|
|
126
|
-
* Asserts that the subject is between two dates (inclusive).
|
|
127
|
-
*
|
|
128
|
-
* @example
|
|
129
|
-
*
|
|
130
|
-
* ```ts
|
|
131
|
-
* expect(
|
|
132
|
-
* new Date('2022-06-01'),
|
|
133
|
-
* 'to be between',
|
|
134
|
-
* new Date('2022-01-01'),
|
|
135
|
-
* new Date('2022-12-31'),
|
|
136
|
-
* ); // passes
|
|
137
|
-
* expect(
|
|
138
|
-
* new Date('2023-01-01'),
|
|
139
|
-
* 'to be between',
|
|
140
|
-
* new Date('2022-01-01'),
|
|
141
|
-
* new Date('2022-12-31'),
|
|
142
|
-
* ); // fails
|
|
143
|
-
* ```
|
|
144
|
-
*
|
|
145
|
-
* @group Date/Time Assertions
|
|
146
|
-
* @bupkisAnchor date-like-to-be-between-date-like-and-date-like
|
|
147
|
-
* @bupkisAssertionCategory date
|
|
148
|
-
*/
|
|
149
|
-
export const betweenAssertion = createAssertion([
|
|
150
|
-
DateLikeFormatSchema,
|
|
151
|
-
'to be between',
|
|
152
|
-
DateLikeFormatSchema,
|
|
153
|
-
'and',
|
|
154
|
-
DateLikeFormatSchema,
|
|
155
|
-
], (subject, start, end) => {
|
|
156
|
-
const subjectDate = toDate(subject);
|
|
157
|
-
const startDate = toDate(start);
|
|
158
|
-
const endDate = toDate(end);
|
|
159
|
-
if (!subjectDate) {
|
|
160
|
-
return {
|
|
161
|
-
message: `Expected subject to be a valid date, but received: ${subject}`,
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
if (!startDate) {
|
|
165
|
-
return {
|
|
166
|
-
message: `Expected start date to be a valid date, but received: ${start}`,
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
if (!endDate) {
|
|
170
|
-
return {
|
|
171
|
-
message: `Expected end date to be a valid date, but received: ${end}`,
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
// Use Zod's date validation with min/max constraints for better error messages
|
|
175
|
-
return {
|
|
176
|
-
schema: DateSchema.min(startDate).max(endDate),
|
|
177
|
-
subject: subjectDate,
|
|
178
|
-
};
|
|
179
|
-
});
|
|
180
|
-
/**
|
|
181
|
-
* Asserts that the subject is the same date as another (ignoring time).
|
|
182
|
-
*
|
|
183
|
-
* @example
|
|
184
|
-
*
|
|
185
|
-
* ```ts
|
|
186
|
-
* expect(
|
|
187
|
-
* new Date('2023-01-01T10:00:00'),
|
|
188
|
-
* 'to be the same date as',
|
|
189
|
-
* new Date('2023-01-01T15:30:00'),
|
|
190
|
-
* ); // passes
|
|
191
|
-
* expect(
|
|
192
|
-
* new Date('2023-01-01'),
|
|
193
|
-
* 'to be the same date as',
|
|
194
|
-
* new Date('2023-01-02'),
|
|
195
|
-
* ); // fails
|
|
196
|
-
* ```
|
|
197
|
-
*
|
|
198
|
-
* @group Date/Time Assertions
|
|
199
|
-
* @bupkisAnchor date-like-to-be-the-same-date-as-date-like
|
|
200
|
-
* @bupkisAssertionCategory date
|
|
201
|
-
*/
|
|
202
|
-
export const sameDateAssertion = createAssertion([DateLikeFormatSchema, 'to be the same date as', DateLikeFormatSchema], (subject, other) => {
|
|
203
|
-
const subjectDate = toDate(subject);
|
|
204
|
-
const otherDate = toDate(other);
|
|
205
|
-
if (!subjectDate) {
|
|
206
|
-
return {
|
|
207
|
-
message: `Expected subject to be a valid date, but received: ${subject}`,
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
if (!otherDate) {
|
|
211
|
-
return {
|
|
212
|
-
message: `Expected comparison date to be a valid date, but received: ${other}`,
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
const isSameDate = subjectDate.getFullYear() === otherDate.getFullYear() &&
|
|
216
|
-
subjectDate.getMonth() === otherDate.getMonth() &&
|
|
217
|
-
subjectDate.getDate() === otherDate.getDate();
|
|
218
|
-
if (!isSameDate) {
|
|
219
|
-
return {
|
|
220
|
-
actual: subjectDate.toDateString(),
|
|
221
|
-
expected: otherDate.toDateString(),
|
|
222
|
-
message: `Expected dates to be the same day, but ${subjectDate.toDateString()} !== ${otherDate.toDateString()}`,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
/**
|
|
227
|
-
* Asserts that the subject is equal to another date within a tolerance.
|
|
228
|
-
*
|
|
229
|
-
* @example
|
|
230
|
-
*
|
|
231
|
-
* ```ts
|
|
232
|
-
* const date1 = new Date('2023-01-01T10:00:00.000Z');
|
|
233
|
-
* const date2 = new Date('2023-01-01T10:00:00.500Z');
|
|
234
|
-
* expect(date1, 'to equal', date2, 'within', '1 second'); // passes
|
|
235
|
-
* expect(date1, 'to equal', date2, 'within', '100 milliseconds'); // fails
|
|
236
|
-
* ```
|
|
237
|
-
*
|
|
238
|
-
* @group Date/Time Assertions
|
|
239
|
-
* @bupkisAnchor date-like-to-equal-date-like-within-duration
|
|
240
|
-
* @bupkisAssertionCategory date
|
|
241
|
-
*/
|
|
242
|
-
export const equalWithinAssertion = createAssertion([
|
|
243
|
-
DateLikeFormatSchema,
|
|
244
|
-
'to equal',
|
|
245
|
-
DateLikeFormatSchema,
|
|
246
|
-
'within',
|
|
247
|
-
DurationFormatSchema,
|
|
248
|
-
], (subject, other, toleranceStr) => {
|
|
249
|
-
const subjectDate = toDate(subject);
|
|
250
|
-
const otherDate = toDate(other);
|
|
251
|
-
if (!subjectDate) {
|
|
252
|
-
return {
|
|
253
|
-
message: `Expected subject to be a valid date, but received: ${subject}`,
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
if (!otherDate) {
|
|
257
|
-
return {
|
|
258
|
-
message: `Expected comparison date to be a valid date, but received: ${other}`,
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
|
-
// Transform the duration string to milliseconds
|
|
262
|
-
const durationResult = DurationSchema.safeParse(toleranceStr);
|
|
263
|
-
if (!durationResult.success) {
|
|
264
|
-
return {
|
|
265
|
-
message: `Expected a valid duration string, but received: ${toleranceStr}`,
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
const toleranceMs = durationResult.data;
|
|
269
|
-
const diff = abs(subjectDate.getTime() - otherDate.getTime());
|
|
270
|
-
if (diff > toleranceMs) {
|
|
271
|
-
return {
|
|
272
|
-
actual: { difference: diff },
|
|
273
|
-
expected: { maxDifference: toleranceMs },
|
|
274
|
-
message: `Expected dates to be equal within ${toleranceStr} (${toleranceMs}ms), but difference was ${diff}ms`,
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
|
-
/**
|
|
279
|
-
* Asserts that the subject is a weekend (Saturday or Sunday) in UTC.
|
|
280
|
-
*
|
|
281
|
-
* @example
|
|
282
|
-
*
|
|
283
|
-
* ```ts
|
|
284
|
-
* expect(new Date('2023-01-07'), 'to be a weekend'); // passes (Saturday in UTC)
|
|
285
|
-
* expect(new Date('2023-01-08'), 'to be a weekend'); // passes (Sunday in UTC)
|
|
286
|
-
* expect(new Date('2023-01-09'), 'to be a weekend'); // fails (Monday in UTC)
|
|
287
|
-
* ```
|
|
288
|
-
*
|
|
289
|
-
* @group Date/Time Assertions
|
|
290
|
-
* @bupkisAnchor unknown-to-be-a-weekend
|
|
291
|
-
* @bupkisAssertionCategory date
|
|
292
|
-
*/
|
|
293
|
-
export const weekendAssertion = createAssertion(['to be a weekend'], (subject) => {
|
|
294
|
-
const date = toDate(subject);
|
|
295
|
-
if (!date) {
|
|
296
|
-
return {
|
|
297
|
-
message: `Expected subject to be a valid date, but received: ${subject}`,
|
|
298
|
-
};
|
|
299
|
-
}
|
|
300
|
-
const day = date.getUTCDay();
|
|
301
|
-
const isWeekend = day === 0 || day === 6; // Sunday or Saturday
|
|
302
|
-
if (!isWeekend) {
|
|
303
|
-
return {
|
|
304
|
-
message: `Expected date to be a weekend (Saturday or Sunday in UTC), but it was ${DAY_NAMES[day]} in UTC`,
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
});
|
|
308
|
-
/**
|
|
309
|
-
* Asserts that the subject is a weekday (Monday through Friday) in UTC.
|
|
310
|
-
*
|
|
311
|
-
* @example
|
|
312
|
-
*
|
|
313
|
-
* ```ts
|
|
314
|
-
* expect(new Date('2023-01-09'), 'to be a weekday'); // passes (Monday in UTC)
|
|
315
|
-
* expect(new Date('2023-01-13'), 'to be a weekday'); // passes (Friday in UTC)
|
|
316
|
-
* expect(new Date('2023-01-07'), 'to be a weekday'); // fails (Saturday in UTC)
|
|
317
|
-
* ```
|
|
318
|
-
*
|
|
319
|
-
* @group Date/Time Assertions
|
|
320
|
-
* @bupkisAnchor unknown-to-be-a-weekday
|
|
321
|
-
* @bupkisAssertionCategory date
|
|
322
|
-
*/
|
|
323
|
-
export const weekdayAssertion = createAssertion(['to be a weekday'], (subject) => {
|
|
324
|
-
const date = toDate(subject);
|
|
325
|
-
if (!date) {
|
|
326
|
-
return {
|
|
327
|
-
message: `Expected subject to be a valid date, but received: ${subject}`,
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
|
-
const day = date.getUTCDay();
|
|
331
|
-
const isWeekday = day >= 1 && day <= 5; // Monday through Friday
|
|
332
|
-
if (!isWeekday) {
|
|
333
|
-
return {
|
|
334
|
-
message: `Expected date to be a weekday (Monday through Friday in UTC), but it was ${DAY_NAMES[day]} in UTC`,
|
|
335
|
-
};
|
|
336
|
-
}
|
|
337
|
-
});
|
|
338
|
-
//# sourceMappingURL=sync-date.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync-date.js","sourceRoot":"","sources":["../../../src/assertion/impl/sync-date.ts"],"names":[],"mappings":"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"}
|