bupkis 0.1.2 → 0.3.0
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 +28 -0
- package/README.md +16 -16
- package/dist/commonjs/assertion/assertion-async.d.ts +2 -1
- package/dist/commonjs/assertion/assertion-async.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion-async.js +84 -2
- package/dist/commonjs/assertion/assertion-async.js.map +1 -1
- package/dist/commonjs/assertion/assertion-sync.d.ts +1 -1
- package/dist/commonjs/assertion/assertion-sync.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion-sync.js +5 -1
- package/dist/commonjs/assertion/assertion-sync.js.map +1 -1
- package/dist/commonjs/assertion/assertion-types.d.ts +39 -84
- package/dist/commonjs/assertion/assertion-types.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion.d.ts +1 -1
- package/dist/commonjs/assertion/assertion.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion.js +1 -14
- package/dist/commonjs/assertion/assertion.js.map +1 -1
- package/dist/commonjs/assertion/create.d.ts +5 -33
- package/dist/commonjs/assertion/create.d.ts.map +1 -1
- package/dist/commonjs/assertion/create.js +17 -6
- package/dist/commonjs/assertion/create.js.map +1 -1
- package/dist/commonjs/assertion/impl/async.d.ts +122 -21
- package/dist/commonjs/assertion/impl/async.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/async.js +114 -90
- package/dist/commonjs/assertion/impl/async.js.map +1 -1
- package/dist/commonjs/assertion/impl/callback.d.ts +104 -0
- package/dist/commonjs/assertion/impl/callback.d.ts.map +1 -0
- package/dist/commonjs/assertion/impl/callback.js +694 -0
- package/dist/commonjs/assertion/impl/callback.js.map +1 -0
- package/dist/commonjs/assertion/impl/index.d.ts +1 -1
- package/dist/commonjs/assertion/impl/index.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/index.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync-esoteric.js +1 -1
- package/dist/commonjs/assertion/impl/sync-esoteric.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync-parametric.d.ts +37 -34
- package/dist/commonjs/assertion/impl/sync-parametric.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-parametric.js +32 -47
- package/dist/commonjs/assertion/impl/sync-parametric.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync.d.ts +105 -58
- package/dist/commonjs/assertion/impl/sync.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync.js +4 -1
- package/dist/commonjs/assertion/impl/sync.js.map +1 -1
- package/dist/commonjs/bootstrap.d.ts +199 -85
- package/dist/commonjs/bootstrap.d.ts.map +1 -1
- package/dist/commonjs/bootstrap.js +19 -10
- package/dist/commonjs/bootstrap.js.map +1 -1
- package/dist/commonjs/constant.js +7 -1
- package/dist/commonjs/constant.js.map +1 -1
- package/dist/commonjs/error.d.ts +32 -5
- package/dist/commonjs/error.d.ts.map +1 -1
- package/dist/commonjs/error.js +60 -5
- package/dist/commonjs/error.js.map +1 -1
- package/dist/commonjs/expect.d.ts +130 -3
- package/dist/commonjs/expect.d.ts.map +1 -1
- package/dist/commonjs/expect.js +116 -1
- package/dist/commonjs/expect.js.map +1 -1
- package/dist/commonjs/guards.d.ts +45 -20
- package/dist/commonjs/guards.d.ts.map +1 -1
- package/dist/commonjs/guards.js +56 -40
- package/dist/commonjs/guards.js.map +1 -1
- package/dist/commonjs/index.d.ts +241 -86
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +44 -42
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/metadata.d.ts +1 -27
- package/dist/commonjs/metadata.d.ts.map +1 -1
- package/dist/commonjs/metadata.js +16 -15
- package/dist/commonjs/metadata.js.map +1 -1
- package/dist/commonjs/schema.d.ts +76 -33
- package/dist/commonjs/schema.d.ts.map +1 -1
- package/dist/commonjs/schema.js +77 -34
- package/dist/commonjs/schema.js.map +1 -1
- package/dist/commonjs/types.d.ts +480 -39
- package/dist/commonjs/types.d.ts.map +1 -1
- package/dist/commonjs/types.js +12 -2
- package/dist/commonjs/types.js.map +1 -1
- package/dist/commonjs/util.d.ts +72 -49
- package/dist/commonjs/util.d.ts.map +1 -1
- package/dist/commonjs/util.js +175 -155
- package/dist/commonjs/util.js.map +1 -1
- package/dist/commonjs/value-to-schema.d.ts +122 -0
- package/dist/commonjs/value-to-schema.d.ts.map +1 -0
- package/dist/commonjs/value-to-schema.js +309 -0
- package/dist/commonjs/value-to-schema.js.map +1 -0
- package/dist/esm/assertion/assertion-async.d.ts +2 -1
- package/dist/esm/assertion/assertion-async.d.ts.map +1 -1
- package/dist/esm/assertion/assertion-async.js +85 -3
- package/dist/esm/assertion/assertion-async.js.map +1 -1
- package/dist/esm/assertion/assertion-sync.d.ts +1 -1
- package/dist/esm/assertion/assertion-sync.d.ts.map +1 -1
- package/dist/esm/assertion/assertion-sync.js +6 -2
- package/dist/esm/assertion/assertion-sync.js.map +1 -1
- package/dist/esm/assertion/assertion-types.d.ts +39 -84
- package/dist/esm/assertion/assertion-types.d.ts.map +1 -1
- package/dist/esm/assertion/assertion.d.ts +1 -1
- package/dist/esm/assertion/assertion.d.ts.map +1 -1
- package/dist/esm/assertion/assertion.js +1 -14
- package/dist/esm/assertion/assertion.js.map +1 -1
- package/dist/esm/assertion/create.d.ts +5 -33
- package/dist/esm/assertion/create.d.ts.map +1 -1
- package/dist/esm/assertion/create.js +14 -4
- package/dist/esm/assertion/create.js.map +1 -1
- package/dist/esm/assertion/impl/async.d.ts +122 -21
- package/dist/esm/assertion/impl/async.d.ts.map +1 -1
- package/dist/esm/assertion/impl/async.js +113 -89
- package/dist/esm/assertion/impl/async.js.map +1 -1
- package/dist/esm/assertion/impl/callback.d.ts +104 -0
- package/dist/esm/assertion/impl/callback.d.ts.map +1 -0
- package/dist/esm/assertion/impl/callback.js +691 -0
- package/dist/esm/assertion/impl/callback.js.map +1 -0
- package/dist/esm/assertion/impl/index.d.ts +1 -1
- package/dist/esm/assertion/impl/index.d.ts.map +1 -1
- package/dist/esm/assertion/impl/index.js +1 -1
- package/dist/esm/assertion/impl/index.js.map +1 -1
- package/dist/esm/assertion/impl/sync-esoteric.js +2 -2
- package/dist/esm/assertion/impl/sync-esoteric.js.map +1 -1
- package/dist/esm/assertion/impl/sync-parametric.d.ts +37 -34
- package/dist/esm/assertion/impl/sync-parametric.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-parametric.js +32 -47
- package/dist/esm/assertion/impl/sync-parametric.js.map +1 -1
- package/dist/esm/assertion/impl/sync.d.ts +105 -58
- package/dist/esm/assertion/impl/sync.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync.js +3 -1
- package/dist/esm/assertion/impl/sync.js.map +1 -1
- package/dist/esm/bootstrap.d.ts +199 -85
- package/dist/esm/bootstrap.d.ts.map +1 -1
- package/dist/esm/bootstrap.js +19 -10
- package/dist/esm/bootstrap.js.map +1 -1
- package/dist/esm/constant.js +6 -0
- package/dist/esm/constant.js.map +1 -1
- package/dist/esm/error.d.ts +32 -5
- package/dist/esm/error.d.ts.map +1 -1
- package/dist/esm/error.js +59 -5
- package/dist/esm/error.js.map +1 -1
- package/dist/esm/expect.d.ts +130 -3
- package/dist/esm/expect.d.ts.map +1 -1
- package/dist/esm/expect.js +117 -2
- package/dist/esm/expect.js.map +1 -1
- package/dist/esm/guards.d.ts +45 -20
- package/dist/esm/guards.d.ts.map +1 -1
- package/dist/esm/guards.js +48 -31
- package/dist/esm/guards.js.map +1 -1
- package/dist/esm/index.d.ts +241 -86
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +46 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/metadata.d.ts +1 -27
- package/dist/esm/metadata.d.ts.map +1 -1
- package/dist/esm/metadata.js +2 -1
- package/dist/esm/metadata.js.map +1 -1
- package/dist/esm/schema.d.ts +76 -33
- package/dist/esm/schema.d.ts.map +1 -1
- package/dist/esm/schema.js +77 -34
- package/dist/esm/schema.js.map +1 -1
- package/dist/esm/types.d.ts +480 -39
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +12 -2
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/util.d.ts +72 -49
- package/dist/esm/util.d.ts.map +1 -1
- package/dist/esm/util.js +159 -153
- package/dist/esm/util.js.map +1 -1
- package/dist/esm/value-to-schema.d.ts +122 -0
- package/dist/esm/value-to-schema.d.ts.map +1 -0
- package/dist/esm/value-to-schema.js +305 -0
- package/dist/esm/value-to-schema.js.map +1 -0
- package/package.json +94 -17
- package/src/assertion/assertion-async.ts +113 -3
- package/src/assertion/assertion-sync.ts +5 -2
- package/src/assertion/assertion-types.ts +52 -45
- package/src/assertion/assertion.ts +2 -17
- package/src/assertion/create.ts +16 -65
- package/src/assertion/impl/async.ts +132 -92
- package/src/assertion/impl/callback.ts +882 -0
- package/src/assertion/impl/index.ts +1 -1
- package/src/assertion/impl/sync-esoteric.ts +2 -2
- package/src/assertion/impl/sync-parametric.ts +41 -49
- package/src/assertion/impl/sync.ts +3 -0
- package/src/bootstrap.ts +21 -11
- package/src/constant.ts +8 -0
- package/src/error.ts +75 -4
- package/src/expect.ts +275 -20
- package/src/guards.ts +74 -69
- package/src/index.ts +72 -11
- package/src/metadata.ts +3 -4
- package/src/schema.ts +80 -36
- package/src/types.ts +625 -72
- package/src/util.ts +174 -222
- package/src/value-to-schema.ts +464 -0
- package/dist/commonjs/api.d.ts +0 -93
- package/dist/commonjs/api.d.ts.map +0 -1
- package/dist/commonjs/api.js +0 -8
- package/dist/commonjs/api.js.map +0 -1
- package/dist/esm/api.d.ts +0 -93
- package/dist/esm/api.d.ts.map +0 -1
- package/dist/esm/api.js +0 -7
- package/dist/esm/api.js.map +0 -1
- package/src/api.ts +0 -149
- package/src/schema.md +0 -15
|
@@ -18,8 +18,12 @@ import {
|
|
|
18
18
|
FunctionSchema,
|
|
19
19
|
WrappedPromiseLikeSchema,
|
|
20
20
|
} from '../../schema.js';
|
|
21
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
valueToSchema,
|
|
23
|
+
valueToSchemaOptionsForSatisfies,
|
|
24
|
+
} from '../../value-to-schema.js';
|
|
22
25
|
import { createAsyncAssertion } from '../create.js';
|
|
26
|
+
import { CallbackAsyncAssertions } from './callback.js';
|
|
23
27
|
|
|
24
28
|
const trapAsyncFnError = async (fn: () => unknown) => {
|
|
25
29
|
try {
|
|
@@ -37,15 +41,18 @@ const trapPromiseError = async (promise: PromiseLike<unknown>) => {
|
|
|
37
41
|
}
|
|
38
42
|
};
|
|
39
43
|
|
|
40
|
-
export const
|
|
44
|
+
export const PromiseAssertions = [
|
|
41
45
|
createAsyncAssertion(
|
|
42
46
|
[FunctionSchema, ['to resolve', 'to fulfill']],
|
|
43
47
|
async (subject) => {
|
|
44
48
|
try {
|
|
45
49
|
await subject();
|
|
46
|
-
return true;
|
|
47
50
|
} catch {
|
|
48
|
-
return
|
|
51
|
+
return {
|
|
52
|
+
actual: 'function rejected',
|
|
53
|
+
expected: 'function to fulfill',
|
|
54
|
+
message: 'Expected function to fulfill, but it rejected instead',
|
|
55
|
+
};
|
|
49
56
|
}
|
|
50
57
|
},
|
|
51
58
|
),
|
|
@@ -54,33 +61,38 @@ export const AsyncAssertions = [
|
|
|
54
61
|
async (subject) => {
|
|
55
62
|
try {
|
|
56
63
|
await subject;
|
|
57
|
-
return true;
|
|
58
64
|
} catch {
|
|
59
|
-
return
|
|
65
|
+
return {
|
|
66
|
+
actual: 'promise rejected',
|
|
67
|
+
expected: 'promise to not reject',
|
|
68
|
+
message: 'Expected promise to fulfill, but it rejected instead',
|
|
69
|
+
};
|
|
60
70
|
}
|
|
61
71
|
},
|
|
62
72
|
),
|
|
63
73
|
|
|
64
74
|
// Non-parameterized "to reject" assertions
|
|
65
75
|
createAsyncAssertion([FunctionSchema, 'to reject'], async (subject) => {
|
|
66
|
-
let rejected = false;
|
|
67
76
|
try {
|
|
68
77
|
await subject();
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
78
|
+
return {
|
|
79
|
+
actual: 'function fulfilled',
|
|
80
|
+
expected: 'function to reject',
|
|
81
|
+
message: 'Expected function to reject, but it fulfilled instead',
|
|
82
|
+
};
|
|
83
|
+
} catch {}
|
|
73
84
|
}),
|
|
74
85
|
createAsyncAssertion(
|
|
75
86
|
[WrappedPromiseLikeSchema, 'to reject'],
|
|
76
87
|
async (subject) => {
|
|
77
|
-
let rejected = false;
|
|
78
88
|
try {
|
|
79
89
|
await subject;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
90
|
+
return {
|
|
91
|
+
actual: 'function fulfilled',
|
|
92
|
+
expected: 'function to reject',
|
|
93
|
+
message: 'Expected function to reject, but it fulfilled instead',
|
|
94
|
+
};
|
|
95
|
+
} catch {}
|
|
84
96
|
},
|
|
85
97
|
),
|
|
86
98
|
// Parameterized "to reject" with class constructor
|
|
@@ -113,66 +125,91 @@ export const AsyncAssertions = [
|
|
|
113
125
|
createAsyncAssertion(
|
|
114
126
|
[
|
|
115
127
|
FunctionSchema,
|
|
116
|
-
['to reject with'],
|
|
128
|
+
['to reject with error satisfying'],
|
|
117
129
|
z.union([z.string(), z.instanceof(RegExp), z.looseObject({})]),
|
|
118
130
|
],
|
|
119
131
|
async (subject, param) => {
|
|
120
132
|
const error = await trapAsyncFnError(subject);
|
|
121
133
|
if (!error) {
|
|
122
|
-
return
|
|
134
|
+
return {
|
|
135
|
+
actual: 'function fulfilled',
|
|
136
|
+
expect: 'function to reject',
|
|
137
|
+
message: 'Expected function to reject, but it fulfilled instead',
|
|
138
|
+
};
|
|
123
139
|
}
|
|
124
140
|
|
|
141
|
+
let schema: undefined | z.ZodType;
|
|
142
|
+
// TODO: can valueToSchema handle the first two conditional branches?
|
|
125
143
|
if (isString(param)) {
|
|
126
|
-
|
|
127
|
-
.
|
|
144
|
+
schema = z
|
|
145
|
+
.looseObject({
|
|
128
146
|
message: z.coerce.string().pipe(z.literal(param)),
|
|
129
147
|
})
|
|
130
|
-
.or(z.coerce.string().pipe(z.literal(param)))
|
|
131
|
-
.safeParse(error).success;
|
|
148
|
+
.or(z.coerce.string().pipe(z.literal(param)));
|
|
132
149
|
} else if (isA(param, RegExp)) {
|
|
133
|
-
|
|
134
|
-
.
|
|
150
|
+
schema = z
|
|
151
|
+
.looseObject({
|
|
135
152
|
message: z.coerce.string().regex(param),
|
|
136
153
|
})
|
|
137
|
-
.or(z.coerce.string().regex(param))
|
|
138
|
-
.safeParse(error).success;
|
|
154
|
+
.or(z.coerce.string().regex(param));
|
|
139
155
|
} else if (isNonNullObject(param)) {
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
|
|
156
|
+
schema = valueToSchema(param, valueToSchemaOptionsForSatisfies);
|
|
157
|
+
}
|
|
158
|
+
/* c8 ignore next 5 */
|
|
159
|
+
if (!schema) {
|
|
160
|
+
throw new TypeError(
|
|
161
|
+
`Invalid parameter schema: ${inspect(param, { depth: 2 })}`,
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const result = schema.safeParse(error);
|
|
166
|
+
if (!result.success) {
|
|
167
|
+
return result.error;
|
|
143
168
|
}
|
|
144
169
|
},
|
|
145
170
|
),
|
|
146
171
|
createAsyncAssertion(
|
|
147
172
|
[
|
|
148
173
|
WrappedPromiseLikeSchema,
|
|
149
|
-
['to reject with'],
|
|
174
|
+
['to reject with error satisfying'],
|
|
150
175
|
z.union([z.string(), z.instanceof(RegExp), z.looseObject({})]),
|
|
151
176
|
],
|
|
152
177
|
async (subject, param) => {
|
|
153
178
|
const error = await trapPromiseError(subject);
|
|
154
179
|
if (!error) {
|
|
155
|
-
return
|
|
180
|
+
return {
|
|
181
|
+
actual: 'promise fulfilled',
|
|
182
|
+
expect: 'promise to reject',
|
|
183
|
+
message: 'Expected promise to reject, but it fulfilled instead',
|
|
184
|
+
};
|
|
156
185
|
}
|
|
157
|
-
|
|
186
|
+
let schema: undefined | z.ZodType;
|
|
187
|
+
// TODO: can valueToSchema handle the first two conditional branches?
|
|
158
188
|
if (isString(param)) {
|
|
159
|
-
|
|
160
|
-
.
|
|
189
|
+
schema = z
|
|
190
|
+
.looseObject({
|
|
161
191
|
message: z.coerce.string().pipe(z.literal(param)),
|
|
162
192
|
})
|
|
163
|
-
.or(z.coerce.string().pipe(z.literal(param)))
|
|
164
|
-
.safeParse(error).success;
|
|
193
|
+
.or(z.coerce.string().pipe(z.literal(param)));
|
|
165
194
|
} else if (isA(param, RegExp)) {
|
|
166
|
-
|
|
167
|
-
.
|
|
195
|
+
schema = z
|
|
196
|
+
.looseObject({
|
|
168
197
|
message: z.coerce.string().regex(param),
|
|
169
198
|
})
|
|
170
|
-
.or(z.coerce.string().regex(param))
|
|
171
|
-
.safeParse(error).success;
|
|
199
|
+
.or(z.coerce.string().regex(param));
|
|
172
200
|
} else if (isNonNullObject(param)) {
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
|
|
201
|
+
schema = valueToSchema(param, valueToSchemaOptionsForSatisfies);
|
|
202
|
+
}
|
|
203
|
+
/* c8 ignore next 5 */
|
|
204
|
+
if (!schema) {
|
|
205
|
+
throw new TypeError(
|
|
206
|
+
`Invalid parameter schema: ${inspect(param, { depth: 2 })}`,
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
const result = schema.safeParse(error);
|
|
211
|
+
if (!result.success) {
|
|
212
|
+
return result.error;
|
|
176
213
|
}
|
|
177
214
|
},
|
|
178
215
|
),
|
|
@@ -180,7 +217,7 @@ export const AsyncAssertions = [
|
|
|
180
217
|
createAsyncAssertion(
|
|
181
218
|
[
|
|
182
219
|
WrappedPromiseLikeSchema,
|
|
183
|
-
['to fulfill with value satisfying', 'to resolve
|
|
220
|
+
['to fulfill with value satisfying', 'to resolve with value satisfying'],
|
|
184
221
|
z.union([z.string(), z.instanceof(RegExp), z.looseObject({})]),
|
|
185
222
|
],
|
|
186
223
|
async (promise, param) => {
|
|
@@ -196,35 +233,33 @@ export const AsyncAssertions = [
|
|
|
196
233
|
)}`,
|
|
197
234
|
};
|
|
198
235
|
}
|
|
236
|
+
let schema: undefined | z.ZodType;
|
|
237
|
+
// TODO: can valueToSchema handle the first two conditional branches?
|
|
199
238
|
if (isString(param)) {
|
|
200
|
-
|
|
201
|
-
.
|
|
239
|
+
schema = z
|
|
240
|
+
.looseObject({
|
|
202
241
|
message: z.coerce.string().pipe(z.literal(param)),
|
|
203
242
|
})
|
|
204
|
-
.or(z.coerce.string().pipe(z.literal(param)))
|
|
205
|
-
.safeParse(value).success;
|
|
243
|
+
.or(z.coerce.string().pipe(z.literal(param)));
|
|
206
244
|
} else if (isA(param, RegExp)) {
|
|
207
|
-
|
|
208
|
-
.
|
|
245
|
+
schema = z
|
|
246
|
+
.looseObject({
|
|
209
247
|
message: z.coerce.string().regex(param),
|
|
210
248
|
})
|
|
211
|
-
.or(z.coerce.string().regex(param))
|
|
212
|
-
.safeParse(value).success;
|
|
249
|
+
.or(z.coerce.string().regex(param));
|
|
213
250
|
} else if (isNonNullObject(param)) {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
return
|
|
226
|
-
} else {
|
|
227
|
-
throw new TypeError(`Invalid parameter schema: ${inspect(param)}`);
|
|
251
|
+
schema = valueToSchema(param, valueToSchemaOptionsForSatisfies);
|
|
252
|
+
}
|
|
253
|
+
/* c8 ignore next 5 */
|
|
254
|
+
if (!schema) {
|
|
255
|
+
throw new TypeError(
|
|
256
|
+
`Invalid parameter schema: ${inspect(param, { depth: 2 })}`,
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
const result = schema.safeParse(value);
|
|
261
|
+
if (!result.success) {
|
|
262
|
+
return result.error;
|
|
228
263
|
}
|
|
229
264
|
},
|
|
230
265
|
),
|
|
@@ -232,7 +267,7 @@ export const AsyncAssertions = [
|
|
|
232
267
|
createAsyncAssertion(
|
|
233
268
|
[
|
|
234
269
|
FunctionSchema,
|
|
235
|
-
['to fulfill with value satisfying', 'to resolve
|
|
270
|
+
['to fulfill with value satisfying', 'to resolve with value satisfying'],
|
|
236
271
|
z.union([z.string(), z.instanceof(RegExp), z.looseObject({})]),
|
|
237
272
|
],
|
|
238
273
|
async (subject, param) => {
|
|
@@ -241,44 +276,49 @@ export const AsyncAssertions = [
|
|
|
241
276
|
value = await subject();
|
|
242
277
|
} catch (err) {
|
|
243
278
|
return {
|
|
244
|
-
actual:
|
|
245
|
-
expect: 'function to
|
|
246
|
-
message: `Expected function to
|
|
279
|
+
actual: 'function rejected',
|
|
280
|
+
expect: 'function to fulfill',
|
|
281
|
+
message: `Expected function to fulfill, but it rejected with ${inspect(
|
|
247
282
|
err,
|
|
248
283
|
)}`,
|
|
249
284
|
};
|
|
250
285
|
}
|
|
251
286
|
|
|
287
|
+
let schema: undefined | z.ZodType;
|
|
288
|
+
// TODO: can valueToSchema handle the first two conditional branches?
|
|
252
289
|
if (isString(param)) {
|
|
253
|
-
|
|
254
|
-
.
|
|
290
|
+
schema = z
|
|
291
|
+
.looseObject({
|
|
255
292
|
message: z.coerce.string().pipe(z.literal(param)),
|
|
256
293
|
})
|
|
257
|
-
.or(z.coerce.string().pipe(z.literal(param)))
|
|
258
|
-
.safeParse(value).success;
|
|
294
|
+
.or(z.coerce.string().pipe(z.literal(param)));
|
|
259
295
|
} else if (isA(param, RegExp)) {
|
|
260
|
-
|
|
261
|
-
.
|
|
296
|
+
schema = z
|
|
297
|
+
.looseObject({
|
|
262
298
|
message: z.coerce.string().regex(param),
|
|
263
299
|
})
|
|
264
|
-
.or(z.coerce.string().regex(param))
|
|
265
|
-
.safeParse(value).success;
|
|
300
|
+
.or(z.coerce.string().regex(param));
|
|
266
301
|
} else if (isNonNullObject(param)) {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
return
|
|
279
|
-
} else {
|
|
280
|
-
throw new TypeError(`Invalid parameter schema: ${inspect(param)}`);
|
|
302
|
+
schema = valueToSchema(param, valueToSchemaOptionsForSatisfies);
|
|
303
|
+
}
|
|
304
|
+
/* c8 ignore next 5 */
|
|
305
|
+
if (!schema) {
|
|
306
|
+
throw new TypeError(
|
|
307
|
+
`Invalid parameter schema: ${inspect(param, { depth: 2 })}`,
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
const result = schema.safeParse(value);
|
|
312
|
+
if (!result.success) {
|
|
313
|
+
return result.error;
|
|
281
314
|
}
|
|
282
315
|
},
|
|
283
316
|
),
|
|
284
317
|
] as const;
|
|
318
|
+
|
|
319
|
+
export const AsyncAssertions = [
|
|
320
|
+
...PromiseAssertions,
|
|
321
|
+
...CallbackAsyncAssertions,
|
|
322
|
+
] as const;
|
|
323
|
+
|
|
324
|
+
export { CallbackAsyncAssertions };
|