vest 4.3.4 → 4.4.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/dist/cjs/vest.development.js +177 -110
- package/dist/cjs/vest.production.js +1 -1
- package/dist/es/vest.development.js +177 -110
- package/dist/es/vest.production.js +1 -1
- package/dist/umd/enforce/compose.development.js +1 -1
- package/dist/umd/enforce/compounds.development.js +1 -1
- package/dist/umd/enforce/schema.development.js +1 -1
- package/dist/umd/vest.development.js +177 -110
- package/dist/umd/vest.production.js +1 -1
- package/package.json +1 -1
- package/testUtils/testObjects.ts +4 -11
- package/types/classnames.d.ts +3 -5
- package/types/parser.d.ts +3 -5
- package/types/promisify.d.ts +7 -6
- package/types/vest.d.ts +37 -45
|
@@ -438,7 +438,7 @@
|
|
|
438
438
|
return null;
|
|
439
439
|
}
|
|
440
440
|
|
|
441
|
-
|
|
441
|
+
/******************************************************************************
|
|
442
442
|
Copyright (c) Microsoft Corporation.
|
|
443
443
|
|
|
444
444
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
@@ -775,40 +775,6 @@
|
|
|
775
775
|
return current;
|
|
776
776
|
}
|
|
777
777
|
|
|
778
|
-
function createCursor() {
|
|
779
|
-
var storage = {
|
|
780
|
-
cursor: []
|
|
781
|
-
};
|
|
782
|
-
function addLevel() {
|
|
783
|
-
storage.cursor.push(0);
|
|
784
|
-
}
|
|
785
|
-
function removeLevel() {
|
|
786
|
-
storage.cursor.pop();
|
|
787
|
-
}
|
|
788
|
-
function cursorAt() {
|
|
789
|
-
return last(storage.cursor);
|
|
790
|
-
}
|
|
791
|
-
function getCursor() {
|
|
792
|
-
return asArray(storage.cursor);
|
|
793
|
-
}
|
|
794
|
-
function next() {
|
|
795
|
-
storage.cursor[storage.cursor.length - 1]++;
|
|
796
|
-
return last(storage.cursor);
|
|
797
|
-
}
|
|
798
|
-
function reset() {
|
|
799
|
-
storage.cursor = [0];
|
|
800
|
-
}
|
|
801
|
-
reset();
|
|
802
|
-
return {
|
|
803
|
-
addLevel: addLevel,
|
|
804
|
-
cursorAt: cursorAt,
|
|
805
|
-
getCursor: getCursor,
|
|
806
|
-
next: next,
|
|
807
|
-
removeLevel: removeLevel,
|
|
808
|
-
reset: reset
|
|
809
|
-
};
|
|
810
|
-
}
|
|
811
|
-
|
|
812
778
|
var IsolateTypes;
|
|
813
779
|
(function (IsolateTypes) {
|
|
814
780
|
IsolateTypes[IsolateTypes["DEFAULT"] = 0] = "DEFAULT";
|
|
@@ -825,6 +791,41 @@
|
|
|
825
791
|
Modes[Modes["EAGER"] = 1] = "EAGER";
|
|
826
792
|
})(Modes || (Modes = {}));
|
|
827
793
|
|
|
794
|
+
function createIsolateCursor() {
|
|
795
|
+
var cursor = {
|
|
796
|
+
value: 0
|
|
797
|
+
};
|
|
798
|
+
return {
|
|
799
|
+
current: current,
|
|
800
|
+
next: next
|
|
801
|
+
};
|
|
802
|
+
/**
|
|
803
|
+
* @returns {number} The current value of the cursor
|
|
804
|
+
*/
|
|
805
|
+
function current() {
|
|
806
|
+
return cursor.value;
|
|
807
|
+
}
|
|
808
|
+
/**
|
|
809
|
+
* Moves the isolate cursor forward by 1
|
|
810
|
+
*/
|
|
811
|
+
function next() {
|
|
812
|
+
cursor.value++;
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
function generateIsolate(type, path) {
|
|
817
|
+
if (path === void 0) { path = []; }
|
|
818
|
+
return {
|
|
819
|
+
cursor: createIsolateCursor(),
|
|
820
|
+
keys: {
|
|
821
|
+
current: {},
|
|
822
|
+
prev: {}
|
|
823
|
+
},
|
|
824
|
+
path: path,
|
|
825
|
+
type: type
|
|
826
|
+
};
|
|
827
|
+
}
|
|
828
|
+
|
|
828
829
|
var context = createContext(function (ctxRef, parentContext) {
|
|
829
830
|
return parentContext
|
|
830
831
|
? null
|
|
@@ -834,15 +835,8 @@
|
|
|
834
835
|
groups: {}
|
|
835
836
|
},
|
|
836
837
|
inclusion: {},
|
|
837
|
-
isolate:
|
|
838
|
-
|
|
839
|
-
keys: {
|
|
840
|
-
current: {},
|
|
841
|
-
prev: {}
|
|
842
|
-
}
|
|
843
|
-
},
|
|
844
|
-
mode: [Modes.ALL],
|
|
845
|
-
testCursor: createCursor()
|
|
838
|
+
isolate: generateIsolate(IsolateTypes.DEFAULT),
|
|
839
|
+
mode: [Modes.ALL]
|
|
846
840
|
}, ctxRef);
|
|
847
841
|
});
|
|
848
842
|
|
|
@@ -1150,30 +1144,9 @@
|
|
|
1150
1144
|
}, 0);
|
|
1151
1145
|
}
|
|
1152
1146
|
|
|
1153
|
-
function usePath() {
|
|
1154
|
-
var context$1 = context.useX();
|
|
1155
|
-
return context$1.testCursor.getCursor();
|
|
1156
|
-
}
|
|
1157
|
-
function useCursorAt() {
|
|
1158
|
-
var context$1 = context.useX();
|
|
1159
|
-
return context$1.testCursor.cursorAt();
|
|
1160
|
-
}
|
|
1161
|
-
function moveForward() {
|
|
1162
|
-
var context$1 = context.useX();
|
|
1163
|
-
return context$1.testCursor.next();
|
|
1164
|
-
}
|
|
1165
|
-
function addLevel() {
|
|
1166
|
-
var context$1 = context.useX();
|
|
1167
|
-
context$1.testCursor.addLevel();
|
|
1168
|
-
}
|
|
1169
|
-
function removeLevel() {
|
|
1170
|
-
var context$1 = context.useX();
|
|
1171
|
-
context$1.testCursor.removeLevel();
|
|
1172
|
-
}
|
|
1173
|
-
|
|
1174
1147
|
function usePrevKeys() {
|
|
1175
1148
|
var prev = useTestObjects()[0].prev;
|
|
1176
|
-
return asArray(getCurrent(prev,
|
|
1149
|
+
return asArray(getCurrent(prev, useCurrentPath())).reduce(function (prevKeys, testObject) {
|
|
1177
1150
|
if (!(testObject instanceof VestTest)) {
|
|
1178
1151
|
return prevKeys;
|
|
1179
1152
|
}
|
|
@@ -1185,12 +1158,11 @@
|
|
|
1185
1158
|
}, {});
|
|
1186
1159
|
}
|
|
1187
1160
|
function usePrevTestByKey(key) {
|
|
1188
|
-
var prev =
|
|
1161
|
+
var prev = useIsolate().keys.prev;
|
|
1189
1162
|
return prev[key];
|
|
1190
1163
|
}
|
|
1191
1164
|
function useRetainTestKey(key, testObject) {
|
|
1192
|
-
var
|
|
1193
|
-
var current = context$1.isolate.keys.current;
|
|
1165
|
+
var current = useIsolate().keys.current;
|
|
1194
1166
|
if (isNullish(current[key])) {
|
|
1195
1167
|
current[key] = testObject;
|
|
1196
1168
|
}
|
|
@@ -1202,23 +1174,42 @@
|
|
|
1202
1174
|
function isolate(_a, callback) {
|
|
1203
1175
|
var _b = _a.type, type = _b === void 0 ? IsolateTypes.DEFAULT : _b;
|
|
1204
1176
|
invariant(isFunction(callback));
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
return context.run({ isolate: { type: type, keys: keys } }, function () {
|
|
1211
|
-
addLevel();
|
|
1212
|
-
keys.prev = usePrevKeys();
|
|
1213
|
-
useSetTests(function (tests) { return setValueAtPath(tests, path, []); });
|
|
1177
|
+
// Generate a new Isolate layer, with its own cursor
|
|
1178
|
+
var isolate = generateIsolate(type, useCurrentPath());
|
|
1179
|
+
var output = context.run({ isolate: isolate }, function () {
|
|
1180
|
+
isolate.keys.prev = usePrevKeys();
|
|
1181
|
+
useSetTests(function (tests) { return setValueAtPath(tests, isolate.path, []); });
|
|
1214
1182
|
var res = callback();
|
|
1215
|
-
removeLevel();
|
|
1216
|
-
moveForward();
|
|
1217
1183
|
return res;
|
|
1218
1184
|
});
|
|
1185
|
+
// Move the parent cursor forward once we're done
|
|
1186
|
+
useCursor().next();
|
|
1187
|
+
return output;
|
|
1188
|
+
}
|
|
1189
|
+
/**
|
|
1190
|
+
* @returns {Isolate} The current isolate layer
|
|
1191
|
+
*/
|
|
1192
|
+
function useIsolate() {
|
|
1193
|
+
return context.useX().isolate;
|
|
1219
1194
|
}
|
|
1195
|
+
/**
|
|
1196
|
+
* @returns {boolean} Whether or not the current isolate allows tests to be reordered
|
|
1197
|
+
*/
|
|
1220
1198
|
function shouldAllowReorder() {
|
|
1221
|
-
return
|
|
1199
|
+
return useIsolate().type === IsolateTypes.EACH;
|
|
1200
|
+
}
|
|
1201
|
+
/**
|
|
1202
|
+
* @returns {number[]} The current cursor path of the isolate tree
|
|
1203
|
+
*/
|
|
1204
|
+
function useCurrentPath() {
|
|
1205
|
+
var isolate = useIsolate();
|
|
1206
|
+
return isolate.path.concat(isolate.cursor.current());
|
|
1207
|
+
}
|
|
1208
|
+
/**
|
|
1209
|
+
* @returns {IsolateCursor} The cursor object for the current isolate
|
|
1210
|
+
*/
|
|
1211
|
+
function useCursor() {
|
|
1212
|
+
return useIsolate().cursor;
|
|
1222
1213
|
}
|
|
1223
1214
|
|
|
1224
1215
|
var Severity;
|
|
@@ -1244,6 +1235,11 @@
|
|
|
1244
1235
|
return !!(fieldName && testObject.fieldName === fieldName);
|
|
1245
1236
|
}
|
|
1246
1237
|
|
|
1238
|
+
var nonMatchingGroupName = bindNot(matchingGroupName);
|
|
1239
|
+
function matchingGroupName(testObject, groupName) {
|
|
1240
|
+
return testObject.groupName === groupName;
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1247
1243
|
function either(a, b) {
|
|
1248
1244
|
return !!a !== !!b;
|
|
1249
1245
|
}
|
|
@@ -1268,6 +1264,15 @@
|
|
|
1268
1264
|
return hasFailuresByTestObject(testObject, severityKey, fieldName);
|
|
1269
1265
|
});
|
|
1270
1266
|
}
|
|
1267
|
+
function hasGroupFailuresByTestObjects(severityKey, groupName, fieldName) {
|
|
1268
|
+
var testObjects = useTestsFlat();
|
|
1269
|
+
return testObjects.some(function (testObject) {
|
|
1270
|
+
if (nonMatchingGroupName(testObject, groupName)) {
|
|
1271
|
+
return false;
|
|
1272
|
+
}
|
|
1273
|
+
return hasFailuresByTestObject(testObject, severityKey, fieldName);
|
|
1274
|
+
});
|
|
1275
|
+
}
|
|
1271
1276
|
/**
|
|
1272
1277
|
* Determines whether a certain test profile has failures.
|
|
1273
1278
|
*/
|
|
@@ -1285,7 +1290,7 @@
|
|
|
1285
1290
|
}
|
|
1286
1291
|
|
|
1287
1292
|
// eslint-disable-next-line max-statements, complexity
|
|
1288
|
-
function
|
|
1293
|
+
function shouldAddValidProperty(fieldName) {
|
|
1289
1294
|
if (fieldIsOmitted(fieldName)) {
|
|
1290
1295
|
return true;
|
|
1291
1296
|
}
|
|
@@ -1296,36 +1301,78 @@
|
|
|
1296
1301
|
if (isEmpty(testObjects)) {
|
|
1297
1302
|
return false;
|
|
1298
1303
|
}
|
|
1304
|
+
// Does the given field have any pending tests that are not optional?
|
|
1299
1305
|
if (hasNonOptionalIncomplete(fieldName)) {
|
|
1300
1306
|
return false;
|
|
1301
1307
|
}
|
|
1302
1308
|
return noMissingTests(fieldName);
|
|
1303
1309
|
}
|
|
1310
|
+
function shouldAddValidPropertyInGroup(groupName, fieldName) {
|
|
1311
|
+
if (fieldIsOmitted(fieldName)) {
|
|
1312
|
+
return true;
|
|
1313
|
+
}
|
|
1314
|
+
if (hasGroupFailuresByTestObjects(Severity.ERRORS, groupName, fieldName)) {
|
|
1315
|
+
return false;
|
|
1316
|
+
}
|
|
1317
|
+
// Do the given group/field have any pending tests that are not optional?
|
|
1318
|
+
if (hasNonOptionalIncompleteByGroup(groupName, fieldName)) {
|
|
1319
|
+
return false;
|
|
1320
|
+
}
|
|
1321
|
+
return noMissingTestsByGroup(groupName, fieldName);
|
|
1322
|
+
}
|
|
1304
1323
|
function fieldIsOmitted(fieldName) {
|
|
1305
1324
|
if (!fieldName) {
|
|
1306
1325
|
return false;
|
|
1307
1326
|
}
|
|
1308
1327
|
return useOptionalFieldApplied(fieldName) === true;
|
|
1309
1328
|
}
|
|
1329
|
+
// Does the given field have any pending tests that are not optional?
|
|
1310
1330
|
function hasNonOptionalIncomplete(fieldName) {
|
|
1311
1331
|
return isNotEmpty(useAllIncomplete().filter(function (testObject) {
|
|
1312
|
-
|
|
1332
|
+
return isOptionalFieldIncomplete(testObject, fieldName);
|
|
1333
|
+
}));
|
|
1334
|
+
}
|
|
1335
|
+
// Do the given group/field have any pending tests that are not optional?
|
|
1336
|
+
function hasNonOptionalIncompleteByGroup(groupName, fieldName) {
|
|
1337
|
+
return isNotEmpty(useAllIncomplete().filter(function (testObject) {
|
|
1338
|
+
if (nonMatchingGroupName(testObject, groupName)) {
|
|
1313
1339
|
return false;
|
|
1314
1340
|
}
|
|
1315
|
-
return
|
|
1341
|
+
return isOptionalFieldIncomplete(testObject, fieldName);
|
|
1316
1342
|
}));
|
|
1317
1343
|
}
|
|
1344
|
+
function isOptionalFieldIncomplete(testObject, fieldName) {
|
|
1345
|
+
if (nonMatchingFieldName(testObject, fieldName)) {
|
|
1346
|
+
return false;
|
|
1347
|
+
}
|
|
1348
|
+
return useOptionalFieldConfig(testObject.fieldName) !== true;
|
|
1349
|
+
}
|
|
1318
1350
|
function noMissingTests(fieldName) {
|
|
1319
1351
|
var testObjects = useTestsFlat();
|
|
1320
1352
|
return testObjects.every(function (testObject) {
|
|
1321
1353
|
if (nonMatchingFieldName(testObject, fieldName)) {
|
|
1322
1354
|
return true;
|
|
1323
1355
|
}
|
|
1324
|
-
return (
|
|
1325
|
-
testObject.isTested() ||
|
|
1326
|
-
testObject.isOmitted());
|
|
1356
|
+
return missingTestsLogic(testObject, fieldName);
|
|
1327
1357
|
});
|
|
1328
1358
|
}
|
|
1359
|
+
function noMissingTestsByGroup(groupName, fieldName) {
|
|
1360
|
+
var testObjects = useTestsFlat();
|
|
1361
|
+
return testObjects.every(function (testObject) {
|
|
1362
|
+
if (nonMatchingGroupName(testObject, groupName)) {
|
|
1363
|
+
return true;
|
|
1364
|
+
}
|
|
1365
|
+
return missingTestsLogic(testObject, fieldName);
|
|
1366
|
+
});
|
|
1367
|
+
}
|
|
1368
|
+
function missingTestsLogic(testObject, fieldName) {
|
|
1369
|
+
if (nonMatchingFieldName(testObject, fieldName)) {
|
|
1370
|
+
return true;
|
|
1371
|
+
}
|
|
1372
|
+
return (useOptionalFieldConfig(testObject.fieldName) === true ||
|
|
1373
|
+
testObject.isTested() ||
|
|
1374
|
+
testObject.isOmitted());
|
|
1375
|
+
}
|
|
1329
1376
|
|
|
1330
1377
|
function useSummary() {
|
|
1331
1378
|
var summary = context.useX().summary;
|
|
@@ -1347,7 +1394,7 @@
|
|
|
1347
1394
|
appendToGroup(summary.groups, testObject);
|
|
1348
1395
|
return summary;
|
|
1349
1396
|
}, summary);
|
|
1350
|
-
summary.valid =
|
|
1397
|
+
summary.valid = shouldAddValidProperty();
|
|
1351
1398
|
return countFailures(summary);
|
|
1352
1399
|
}
|
|
1353
1400
|
function appendToTest(tests, testObject) {
|
|
@@ -1356,7 +1403,7 @@
|
|
|
1356
1403
|
tests[testObject.fieldName].valid =
|
|
1357
1404
|
tests[testObject.fieldName].valid === false
|
|
1358
1405
|
? false
|
|
1359
|
-
:
|
|
1406
|
+
: shouldAddValidProperty(testObject.fieldName);
|
|
1360
1407
|
}
|
|
1361
1408
|
/**
|
|
1362
1409
|
* Appends to a group object if within a group
|
|
@@ -1368,6 +1415,10 @@
|
|
|
1368
1415
|
}
|
|
1369
1416
|
groups[groupName] = groups[groupName] || {};
|
|
1370
1417
|
groups[groupName][testObject.fieldName] = appendTestObject(groups[groupName], testObject);
|
|
1418
|
+
groups[groupName][testObject.fieldName].valid =
|
|
1419
|
+
groups[groupName][testObject.fieldName].valid === false
|
|
1420
|
+
? false
|
|
1421
|
+
: shouldAddValidPropertyInGroup(groupName, testObject.fieldName);
|
|
1371
1422
|
}
|
|
1372
1423
|
/**
|
|
1373
1424
|
* Counts the failed tests and adds global counters
|
|
@@ -1506,9 +1557,30 @@
|
|
|
1506
1557
|
}
|
|
1507
1558
|
|
|
1508
1559
|
function isValid(fieldName) {
|
|
1509
|
-
var _a;
|
|
1510
1560
|
var summary = useSummary();
|
|
1511
|
-
return fieldName
|
|
1561
|
+
return fieldName
|
|
1562
|
+
? Boolean(isFieldValid(summary.tests, fieldName))
|
|
1563
|
+
: summary.valid;
|
|
1564
|
+
}
|
|
1565
|
+
function isValidByGroup(groupName, fieldName) {
|
|
1566
|
+
var summary = useSummary();
|
|
1567
|
+
var group = summary.groups[groupName];
|
|
1568
|
+
if (!group) {
|
|
1569
|
+
return false;
|
|
1570
|
+
}
|
|
1571
|
+
if (fieldName) {
|
|
1572
|
+
return isFieldValid(group, fieldName);
|
|
1573
|
+
}
|
|
1574
|
+
for (var fieldName_1 in group) {
|
|
1575
|
+
if (!isFieldValid(group, fieldName_1)) {
|
|
1576
|
+
return false;
|
|
1577
|
+
}
|
|
1578
|
+
}
|
|
1579
|
+
return true;
|
|
1580
|
+
}
|
|
1581
|
+
function isFieldValid(testContainer, fieldName) {
|
|
1582
|
+
var _a;
|
|
1583
|
+
return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
|
|
1512
1584
|
}
|
|
1513
1585
|
|
|
1514
1586
|
var cache$1 = createCache(1);
|
|
@@ -1529,6 +1601,7 @@
|
|
|
1529
1601
|
hasWarnings: context.bind(ref, hasWarnings),
|
|
1530
1602
|
hasWarningsByGroup: context.bind(ref, hasWarningsByGroup),
|
|
1531
1603
|
isValid: context.bind(ref, isValid),
|
|
1604
|
+
isValidByGroup: context.bind(ref, isValidByGroup),
|
|
1532
1605
|
suiteName: suiteName
|
|
1533
1606
|
});
|
|
1534
1607
|
}));
|
|
@@ -2244,30 +2317,23 @@
|
|
|
2244
2317
|
return nextTest;
|
|
2245
2318
|
}
|
|
2246
2319
|
function removeAllNextTestsInIsolate() {
|
|
2247
|
-
var
|
|
2248
|
-
var prevTests = testObjects.prev;
|
|
2249
|
-
var current = getCurrent(prevTests, usePath());
|
|
2250
|
-
var cursorAt = useCursorAt();
|
|
2251
|
-
current.splice(cursorAt);
|
|
2320
|
+
var cursorAt = useCursor().current();
|
|
2252
2321
|
// We actually don't mind mutating the state directly (as can be seen above). There is no harm in it
|
|
2253
2322
|
// since we're only touching the "prev" state. The reason we still use the setter function is
|
|
2254
2323
|
// to prevent future headaches if we ever do need to rely on prev-state immutability.
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
return
|
|
2258
|
-
prev: prevTests,
|
|
2259
|
-
current: current
|
|
2260
|
-
});
|
|
2324
|
+
useSetTests(function (current) {
|
|
2325
|
+
current.splice(cursorAt);
|
|
2326
|
+
return current;
|
|
2261
2327
|
});
|
|
2262
2328
|
}
|
|
2263
2329
|
function useSetTestAtCursor(testObject) {
|
|
2264
|
-
var cursorPath =
|
|
2330
|
+
var cursorPath = useCurrentPath();
|
|
2265
2331
|
useSetTests(function (tests) {
|
|
2266
2332
|
return setValueAtPath(tests, cursorPath, testObject);
|
|
2267
2333
|
});
|
|
2268
2334
|
}
|
|
2269
2335
|
function useGetTestAtCursor(tests) {
|
|
2270
|
-
var cursorPath =
|
|
2336
|
+
var cursorPath = useCurrentPath();
|
|
2271
2337
|
return valueAtPath(tests, cursorPath);
|
|
2272
2338
|
}
|
|
2273
2339
|
function testReorderDetected(prevTest, newTest) {
|
|
@@ -2291,16 +2357,17 @@
|
|
|
2291
2357
|
|
|
2292
2358
|
// eslint-disable-next-line max-statements
|
|
2293
2359
|
function registerPrevRunTest(testObject) {
|
|
2360
|
+
var cursor = useCursor();
|
|
2294
2361
|
if (shouldSkipBasedOnMode(testObject)) {
|
|
2295
2362
|
testObject.skip();
|
|
2296
2363
|
useTestAtCursor(testObject);
|
|
2297
|
-
|
|
2364
|
+
cursor.next();
|
|
2298
2365
|
return testObject;
|
|
2299
2366
|
}
|
|
2300
2367
|
var prevRunTest = useTestAtCursor(testObject);
|
|
2301
2368
|
if (isOmitted()) {
|
|
2302
2369
|
prevRunTest.omit();
|
|
2303
|
-
|
|
2370
|
+
cursor.next();
|
|
2304
2371
|
return prevRunTest;
|
|
2305
2372
|
}
|
|
2306
2373
|
if (isExcluded(testObject)) {
|
|
@@ -2309,13 +2376,13 @@
|
|
|
2309
2376
|
// This mostly means that we're probably giving
|
|
2310
2377
|
// up on this async test intentionally.
|
|
2311
2378
|
prevRunTest.skip(isExcludedIndividually());
|
|
2312
|
-
|
|
2379
|
+
cursor.next();
|
|
2313
2380
|
return prevRunTest;
|
|
2314
2381
|
}
|
|
2315
2382
|
cancelOverriddenPendingTest(prevRunTest, testObject);
|
|
2316
2383
|
useSetTestAtCursor(testObject);
|
|
2317
|
-
moveForward();
|
|
2318
2384
|
registerTestObjectByTier(testObject);
|
|
2385
|
+
cursor.next();
|
|
2319
2386
|
return testObject;
|
|
2320
2387
|
}
|
|
2321
2388
|
function registerTestObjectByTier(testObject) {
|
|
@@ -2338,7 +2405,7 @@
|
|
|
2338
2405
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
2339
2406
|
args[_i - 1] = arguments[_i];
|
|
2340
2407
|
}
|
|
2341
|
-
var cursorAt =
|
|
2408
|
+
var cursorAt = useCursor().current();
|
|
2342
2409
|
var _a = args.reverse(), deps = _a[0], testFn = _a[1], msg = _a[2];
|
|
2343
2410
|
// Implicit dependency for more specificity
|
|
2344
2411
|
var dependencies = [useSuiteId(), fieldName, cursorAt].concat(deps);
|
|
@@ -2400,7 +2467,7 @@
|
|
|
2400
2467
|
ctx.currentTest.warn();
|
|
2401
2468
|
}
|
|
2402
2469
|
|
|
2403
|
-
var VERSION = "4.
|
|
2470
|
+
var VERSION = "4.4.1";
|
|
2404
2471
|
|
|
2405
2472
|
exports.VERSION = VERSION;
|
|
2406
2473
|
exports.context = context;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).vest={})}(this,(function(n){function t(n){return"function"==typeof n}function e(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function r(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function a(n,t){return n===t}function c(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return c(n)&&c(t)&&Number(n)>Number(t)}function l(n,t){return c(n)&&c(t)&&Number(n)===Number(t)}function d(n,t){return l(n,t)||f(n,t)}function p(n){return!!Array.isArray(n)}function v(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function h(n,t){return c(n)&&c(t)&&Number(n)<Number(t)}function g(n,t){return l(n,t)||h(n,t)}function N(n,t,e){return d(n,t)&&g(n,e)}function E(n){return i(n)||o(n)&&!n.trim()}function m(n){return!!n===n}function y(n){return"number"==typeof n}function b(n,t){return l(n.length,t)}function O(n){return!n||(y(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?b(n,0):"object"==typeof n&&b(Object.keys(n),0))}function S(n,t){return n in t}function R(n){return Number.isNaN(n)}function T(n){return f(n,0)}function C(n){return!!n}function I(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function _(n,t){return f(n.length,t)}function A(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function k(n,t){return o(n)&&o(t)&&n.startsWith(t)}function L(n){for(var e in Rt){var r=Rt[e];t(r)&&n(e,r)}}function w(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return t(n)?n.apply(void 0,e):n}function W(n,t){var e;return null!==(e=w(n))&&void 0!==e?e:t}function F(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?w(t):t)}function P(n){function t(t,u){var i,o,s=e();return t=et({},s||{},null!==(i=w(n,t,s))&&void 0!==i?i:t),i=r.ctx=Object.freeze(t),r.ancestry.unshift(i),u=u(i),r.ancestry.shift(),r.ctx=null!==(o=r.ancestry[0])&&void 0!==o?o:null,u}function e(){return r.ctx}var r={ancestry:[]};return{bind:function(n,e){return function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return t(n,(function(){return e.apply(void 0,r)}))}},run:t,use:e,useX:function(n){return F(r.ctx,W(n,"Context was used after it was closed")),r.ctx}}}function x(){return null}function U(n,t,e){if(e||2===arguments.length)for(var r,u=0,i=t.length;u<i;u++)!r&&u in t||(r||(r=Array.prototype.slice.call(t,0,u)),r[u]=t[u]);return n.concat(r||Array.prototype.slice.call(t))}function X(){try{return t(Proxy)}catch(n){return!1}}function G(n,t){return n={pass:n},t&&(n.message=t),n}function D(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return F(m(n)||n&&m(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),m(n)?G(n):G(n.pass,w.apply(void 0,U([n.message,t,e],r,!1)))}function q(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return F((i=D.apply(void 0,U([Tt.run({value:n},(function(){return e.apply(void 0,U([n],u,!1))})),r,n],u,!1))).pass,O(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var e={};if(!X())return L((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=Rt[e])return t(r,n,e)}});return r}function j(n,t){function e(n){r=!0,u=n}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function K(n){var t,e=[];return function n(r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=Rt[r];e.push((function(n){return D.apply(void 0,U([o.apply(void 0,U([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return W(j(e,(function(e,r){var u,i=Tt.run({value:n},(function(){return e(n)}));i.pass||r(G(!!i.pass,null!==(u=w(t,n,i.message))&&void 0!==u?u:i.message))})),G(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return X()?s=new Proxy(s,{get:function(t,e){return Rt[e]?n(e):t[e]}}):(L((function(t){s[t]=n(t)})),s)}}(n)}function B(n){function t(n){return e.findIndex((function(t){var e=t[0];return b(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))}void 0===n&&(n=1);var e=[],r=function(t,u){var i=r.get(t);return i?i[1]:(u=u(),e.unshift([t.concat(),u]),_(e,n)&&(e.length=n),u)};return r.invalidate=function(n){-1<(n=t(n))&&e.splice(n,1)},r.get=function(n){return e[t(n)]||null},r}function H(n){return(n=[].concat(n))[n.length-1]}function M(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];p(u)?e.push(M(u,t)):(u=t(u),rt(u)&&e.push(u))}return e}function V(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(V(t)):[].concat(n).concat(t)}),[])}function J(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=W(n[r],[]),n=n[r]}return n}function Y(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return H(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,H(t)},removeLevel:function(){t.pop()},reset:n}}function z(){return At.useX().stateRef}function Q(n){return z().optionalFields()[0][n]}function Z(n,t){(0,z().optionalFields()[1])((function(e){var r;return et(e,((r={})[n]=w(t,e[n]),r))}))}function $(n){var t;return null===(t=Q(n))||void 0===t?void 0:t[0]}function nn(){tn((function(n){return n}))}function tn(n){(0,z().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function en(){return rn().filter((function(n){return n.isPending()}))}function rn(){var n=z().testObjects()[0].current;return kt([n],(function(){return V(n)}))}function un(n){function e(n,t,e){return u.references.push(),r(n,w(t,e)),function(){return[u.references[n],function(t){return r(n,w(t,u.references[n]))}]}}function r(e,r){var o=u.references[e];u.references[e]=r,t(e=i[e][1])&&e(r,o),t(n)&&n()}var u={references:[]},i=[];return{registerStateKey:function(n,t){var r=i.length;return i.push([n,t]),e(r,n)},reset:function(){var n=u.references;u.references=[],i.forEach((function(t,r){return e(r,t[0],n[r])}))}}}function on(n,t){var e=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(e),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function sn(n){setTimeout((function(){throw Error(n)}),0)}function an(){return At.useX().testCursor.getCursor()}function cn(){return At.useX().testCursor.next()}function fn(n,e){n=void 0===(n=n.type)?$n.DEFAULT:n,F(t(e));var r={current:{},prev:{}},u=an();return At.run({isolate:{type:n,keys:r}},(function(){At.useX().testCursor.addLevel(),r.prev=function(){var n=z().testObjects()[0].prev;return[].concat(J(n,an())).reduce((function(n,t){return t instanceof Wt&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),tn((function(n){return J(n,u)[H(u)]=[],n}));var n=e();return At.useX().testCursor.removeLevel(),cn(),n}))}function ln(n){return n===Lt.ERRORS?wt.ERROR_COUNT:wt.WARN_COUNT}function dn(n,t){return!(!t||n.fieldName!==t)}function pn(n,t){return rn().some((function(e){return e.hasFailures()?t&&!dn(e,t)?e=!1:(e=e.warns(),e=n===Lt.WARNINGS==!!e):e=!1,e}))}function vn(n){if(n)var t,e=!0===(null===(t=Q(n))||void 0===t?void 0:t[1]);else e=!1;return!!e||!pn(Lt.ERRORS,n)&&(!O(e=rn())&&!function(n){return Nt(en().filter((function(t){return!(n&&!dn(t,n))&&!0!==$(t.fieldName)})))}(n)&&function(n){return rn().every((function(t){return!(!n||dn(t,n))||(!0===$(t.fieldName)||t.isTested()||t.isOmitted())}))}(n))}function hn(){var n=At.useX().summary;return F(n),n}function gn(n,t){function e(n){var t=ln(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||et({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(Lt.ERRORS):t.isWarning()&&e(Lt.WARNINGS)),i}function Nn(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}function En(n,t){var e,r={},u=ln(t);for(e in n)T(n[e][u])&&(r[e]=n[e][t]||[]);return r}function mn(n){return bn(Lt.ERRORS,n)}function yn(n){return bn(Lt.WARNINGS,n)}function bn(n,t){var e=hn().tests;return t?Nn(e,n,t):En(e,n)}function On(n,t){return Rn(n,Lt.ERRORS,t)}function Sn(n,t){return Rn(n,Lt.WARNINGS,t)}function Rn(n,t,e){return n=hn().groups[n],e?Nn(n,t,e):En(n,t)}function Tn(n){return In(wt.ERROR_COUNT,n)}function Cn(n){return In(wt.WARN_COUNT,n)}function In(n,t){var e,r=hn();return T(t?null===(e=r.tests[t])||void 0===e?void 0:e[n]:r[n])}function _n(n,t){return kn(Lt.ERRORS,n,t)}function An(n,t){return kn(Lt.WARNINGS,n,t)}function kn(n,t,e){var r,u,i=hn();if(n=ln(n),!(t=i.groups[t]))return!1;if(e)return T(null===(r=t[e])||void 0===r?void 0:r[n]);for(var o in t)if(T(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function Ln(n){var t,e=hn();return n?!(null===(t=e.tests[n])||void 0===t||!t.valid):e.valid}function wn(){var n=rn(),t={stateRef:z()};return Kt([n],At.bind(t,(function(){var n=function(){var n=rn(),t=et({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=gn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&vn(t.fieldName),e=n.groups;var r=t.groupName;return r&&(e[r]=e[r]||{},e[r][t.fieldName]=gn(e[r],t)),n}),t),t.valid=vn(),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}(),t=z().suiteName()[0],e={summary:n};return et(n,{getErrors:At.bind(e,mn),getErrorsByGroup:At.bind(e,On),getWarnings:At.bind(e,yn),getWarningsByGroup:At.bind(e,Sn),hasErrors:At.bind(e,Tn),hasErrorsByGroup:At.bind(e,_n),hasWarnings:At.bind(e,Cn),hasWarningsByGroup:At.bind(e,An),isValid:At.bind(e,Ln),suiteName:t})})))}function Wn(n){var t=en();return!O(t)&&(n?t.some((function(t){return dn(t,n)})):Nt(t))}function Fn(){var n=rn(),t={stateRef:z()};return Bt([n],At.bind(t,(function(){return et({},wn(),{done:At.bind(t,Ht)})})))}function Pn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!O(r.tests[e].testCount)))}function xn(n){return!(Wn()&&(!n||Wn(n)))}function Un(n,t){(0,z().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Xn(n){return n.forEach((function(n){return n()}))}function Gn(){var n=function(){var n={};return{emit:function(t,e){(n[t]||[]).forEach((function(n){n(e)}))},on:function(t,e){return n[t]=(n[t]||[]).concat(e),{off:function(){n[t]=(n[t]||[]).filter((function(n){return n!==e}))}}}}}();return n.on(jt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=z().testCallbacks()[0].fieldCallbacks;t&&!Wn(t)&&p(e[t])&&Xn(e[t]),Wn()||n.emit(jt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(jt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){e[n.fieldName]&&(n.omit(),Z(n.fieldName,(function(n){return[n[0],!0]})))}if(!O(z().optionalFields()[0])){var e={};tn((function(r){return M(r,(function(r){if(Object.prototype.hasOwnProperty.call(e,r.fieldName))n(r);else{var u=$(r.fieldName);t(u)&&(e[r.fieldName]=u(),n(r))}return r}))}))}}()})),n.on(jt.ALL_RUNNING_TESTS_FINISHED,(function(){Xn(z().testCallbacks()[0].doneCallbacks)})),n.on(jt.REMOVE_FIELD,(function(n){rn().forEach((function(t){dn(t,n)&&(t.cancel(),function(n){tn((function(t){return M(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(jt.RESET_FIELD,(function(n){rn().forEach((function(t){dn(t,n)&&t.reset()}))})),n}function Dn(){var n=At.useX();return F(n.bus),n.bus}function qn(n){return Kn(0,"tests",n)}function jn(n){return Kn(1,"tests",n)}function Kn(n,t,e){var r=At.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(e)&&(r.exclusion[t][e]=0===n)}))}function Bn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Hn(){var n,t=At.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function Mn(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function Vn(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Dn().emit,i=z(),s=At.bind({stateRef:i},(function(){nn(),u(jt.TEST_COMPLETED,n)}));i=At.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=o(t)?t:r,n.fail(),s())}));try{e.then(s,i)}catch(n){i()}}}function Jn(n){var t=z().testObjects()[0].prev;if(O(t))return Yn(n),n;var e=an();if(t=J(t,e)[H(e)],!i(n.key)){t=n.key,(e=At.useX().isolate.keys.prev[t])&&(n=e),e=n;var r=At.useX().isolate.keys.current;return i(r[t])?r[t]=e:sn('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Yn(n),n}return!Nt(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(At.useX().isolate.type===$n.EACH||sn("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(t.fieldName,"\n received: ").concat(n.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var n=z().testObjects(),t=n[1],e=n[0].prev;n=J(e,an());var r=At.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),Yn(n=W(t,n)),n}function Yn(n){var t=an();tn((function(e){return J(e,t)[H(t)]=n,e}))}function zn(n){var e=tt.EAGER;if(e=!(At.useX().mode[0]!==e||!pn(Lt.ERRORS,n.fieldName)))return n.skip(),Jn(n),cn(),n;if(e=Jn(n),At.useX().omitted)return e.omit(),cn(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,At.useX().skipped)return!0;var e=At.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){var o=At.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,n)?!1===o[n]:Hn())return!0;if(!0===r.groups[n])return!(i||!Bn(u)&&!1!==u[t])}return!!(n=!!Hn()&&!n)||!i&&!!Bn(u)&&!w(e[t])}(n))return e.skip(!!At.useX().skipped),cn(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),Yn(n),cn(),n.isUntested()){e=Dn();var r=function(n){return At.run({currentTest:n},(function(){return n.run()}))}(n);try{r&&t(r.then)?(n.asyncTest=r,n.setPending(),Vn(n)):e.emit(jt.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}else(e=n.asyncTest)&&t(e.then)&&(n.setPending(),Vn(n));return n}function Qn(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:U([void 0],e,!0);e=u[0],r=u[1],u=u[2],F(o(n),Zn("fieldName","string")),F(t(r),Zn("Test callback","function"));var i=At.useX();return zn(e=new Wt(n,r,{message:e,groupName:i.groupName,key:u}))}function Zn(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var $n,nt,tt,et=Object.assign,rt=e(r),ut=e(u),it=e(i),ot=e(s),st=e(a),at=e(c),ct=e(l),ft=e(p),lt=e(v),dt=e(N),pt=e(E),vt=e(m),ht=e(y),gt=e(b),Nt=e(O),Et=e(S),mt=e(R),yt=e(o),bt=e(C),Ot=e(I),St=e(A),Rt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:ot,doesNotStartWith:e(k),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:d,gt:f,gte:d,inside:v,isArray:p,isBetween:N,isBlank:E,isBoolean:m,isEmpty:O,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:bt,isKeyOf:S,isNaN:R,isNegative:function(n){return h(n,0)},isNotArray:ft,isNotBetween:dt,isNotBlank:pt,isNotBoolean:vt,isNotEmpty:Nt,isNotKeyOf:Et,isNotNaN:mt,isNotNull:rt,isNotNullish:it,isNotNumber:ht,isNotNumeric:at,isNotString:yt,isNotUndefined:ut,isNotValueOf:Ot,isNull:r,isNullish:i,isNumber:y,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:T,isString:o,isTruthy:C,isUndefined:u,isValueOf:I,lengthEquals:b,lengthNotEquals:gt,lessThan:h,lessThanOrEquals:g,longerThan:_,longerThanOrEquals:function(n,t){return d(n.length,t)},lt:h,lte:g,matches:A,notEquals:st,notInside:lt,notMatches:St,numberEquals:l,numberNotEquals:ct,shorterThan:function(n,t){return h(n.length,t)},shorterThanOrEquals:function(n,t){return g(n.length,t)},startsWith:k},Tt=P((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?et(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:et(e,{parent:x})})),Ct=function(){function n(){if(!X())return L((function(n){t[n]=K(n)})),et(q,t)}var t={context:function(){return Tt.useX()},extend:function(t){et(Rt,t),n()}};return n(),new Proxy(et(q,t),{get:function(n,t){return t in n?n[t]:Rt[t]?K(t):void 0}})}(),It=(nt=0,function(){return"".concat(nt++)});!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}($n||($n={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(tt||(tt={}));var _t,At=P((function(n,t){return t?null:et({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:$n.DEFAULT,keys:{current:{},prev:{}}},mode:[tt.ALL],testCursor:Y()},n)})),kt=B();!function(n){n.Error="error",n.Warning="warning"}(_t||(_t={}));var Lt,wt,Wt=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=It(),this.severity=_t.Error,this.status=Ft,this.fieldName=n,this.testFn=t,u&&(this.groupName=u),e&&(this.message=e),r&&(this.key=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,u(this.message)&&o(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==qt||(this.status=n)},n.prototype.warns=function(){return this.severity===_t.Warning},n.prototype.setPending=function(){this.setStatus(Gt)},n.prototype.fail=function(){this.setStatus(this.warns()?Ut:xt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Xt)},n.prototype.warn=function(){this.severity=_t.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(Pt)},n.prototype.cancel=function(){this.setStatus(Dt),nn()},n.prototype.reset=function(){this.status=Ft,nn()},n.prototype.omit=function(){this.setStatus(qt)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},n.prototype.isPending=function(){return this.statusEquals(Gt)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(qt)},n.prototype.isUntested=function(){return this.statusEquals(Ft)},n.prototype.isFailing=function(){return this.statusEquals(xt)},n.prototype.isCanceled=function(){return this.statusEquals(Dt)},n.prototype.isSkipped=function(){return this.statusEquals(Pt)},n.prototype.isPassing=function(){return this.statusEquals(Xt)},n.prototype.isWarning=function(){return this.statusEquals(Ut)},n.prototype.statusEquals=function(n){return this.status===n},n}(),Ft="UNTESTED",Pt="SKIPPED",xt="FAILED",Ut="WARNING",Xt="PASSING",Gt="PENDING",Dt="CANCELED",qt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Lt||(Lt={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(wt||(wt={}));var jt,Kt=B(1),Bt=B(20),Ht=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];if(n=n[1],t=Fn(),Pn(e,n,t))return t;var r=function(){return e(wn())};return xn(n)?(r(),t):(Un(r,n),t)};!function(n){n.TEST_COMPLETED="test_completed",n.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running"}(jt||(jt={})),qn.group=function(n){return Kn(0,"groups",n)},jn.group=function(n){return Kn(1,"groups",n)};var Mt=et(Qn,{memo:function(n){var t=B(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=At.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[z().suiteId()[0],e,u].concat(i),null===(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):zn(r[1])}}(Qn)});n.VERSION="4.3.4",n.context=At,n.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],F(t(r),"vest.create: Expected callback to be a function.");var u=Gn(),i=un();return n={stateRef:on(i,{suiteId:It(),suiteName:n}),bus:u},et(At.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),fn({type:$n.SUITE},(function(){r.apply(void 0,n)})),u.emit(jt.SUITE_CALLBACK_DONE_RUNNING),Fn()})),{get:At.bind(n,wn),remove:At.bind(n,(function(n){u.emit(jt.REMOVE_FIELD,n)})),reset:i.reset,resetField:At.bind(n,(function(n){u.emit(jt.RESET_FIELD,n)}))})},n.each=function(n,e){F(t(e),"each callback must be a function"),fn({type:$n.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=tt.EAGER;At.useX().mode[0]=n},n.enforce=Ct,n.group=function(n,e){F(o(n),Mn("name must be a string")),F(t(e),Mn("callback must be a function")),fn({type:$n.GROUP},(function(){At.run({groupName:n},e)}))},n.include=function(n){var t=At.useX(),e=t.inclusion;return t=t.exclusion,F(o(n)),e[n]=W(t.tests[n],!0),{when:function(t){var e=At.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?W(r.tests[n],!0):o(t)?!!r.tests[t]:w(t,w(wn))}}}},n.omitWhen=function(n,t){fn({type:$n.OMIT_WHEN},(function(){At.run({omitted:!!At.useX().omitted||w(n,w(wn))},(function(){return t()}))}))},n.only=qn,n.optional=function(n){if(p(n)||o(n))[].concat(n).forEach((function(n){Z(n,[!0,!1])}));else for(var t in n)Z(t,[n[t],!1])},n.skip=jn,n.skipWhen=function(n,t){fn({type:$n.SKIP_WHEN},(function(){At.run({skipped:!!At.useX().skipped||w(n,w(wn))},(function(){return t()}))}))},n.test=Mt,n.warn=function(){var n=At.useX("warn hook called outside of a running suite.");F(n.currentTest,"warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
|
|
1
|
+
"use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).vest={})}(this,(function(n){function t(n){return"function"==typeof n}function e(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function r(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function c(n,t){return n===t}function a(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return a(n)&&a(t)&&Number(n)>Number(t)}function l(n,t){return a(n)&&a(t)&&Number(n)===Number(t)}function d(n,t){return l(n,t)||f(n,t)}function p(n){return!!Array.isArray(n)}function v(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function h(n,t){return a(n)&&a(t)&&Number(n)<Number(t)}function N(n,t){return l(n,t)||h(n,t)}function g(n,t,e){return d(n,t)&&N(n,e)}function E(n){return i(n)||o(n)&&!n.trim()}function m(n){return!!n===n}function y(n){return"number"==typeof n}function b(n,t){return l(n.length,t)}function R(n){return!n||(y(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?b(n,0):"object"==typeof n&&b(Object.keys(n),0))}function S(n,t){return n in t}function O(n){return Number.isNaN(n)}function T(n){return f(n,0)}function C(n){return!!n}function I(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function _(n,t){return f(n.length,t)}function k(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function A(n,t){return o(n)&&o(t)&&n.startsWith(t)}function w(n){for(var e in xt){var r=xt[e];t(r)&&n(e,r)}}function x(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return t(n)?n.apply(void 0,e):n}function W(n,t){var e;return null!==(e=x(n))&&void 0!==e?e:t}function F(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?x(t):t)}function L(n){function t(t,u){var i,o,s=e();return t=ft({},s||{},null!==(i=x(n,t,s))&&void 0!==i?i:t),i=r.ctx=Object.freeze(t),r.ancestry.unshift(i),u=u(i),r.ancestry.shift(),r.ctx=null!==(o=r.ancestry[0])&&void 0!==o?o:null,u}function e(){return r.ctx}var r={ancestry:[]};return{bind:function(n,e){return function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return t(n,(function(){return e.apply(void 0,r)}))}},run:t,use:e,useX:function(n){return F(r.ctx,W(n,"Context was used after it was closed")),r.ctx}}}function P(){return null}function U(n,t,e){if(e||2===arguments.length)for(var r,u=0,i=t.length;u<i;u++)!r&&u in t||(r||(r=Array.prototype.slice.call(t,0,u)),r[u]=t[u]);return n.concat(r||Array.prototype.slice.call(t))}function G(){try{return t(Proxy)}catch(n){return!1}}function D(n,t){return n={pass:n},t&&(n.message=t),n}function X(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return F(m(n)||n&&m(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),m(n)?D(n):D(n.pass,x.apply(void 0,U([n.message,t,e],r,!1)))}function q(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return F((i=X.apply(void 0,U([Wt.run({value:n},(function(){return e.apply(void 0,U([n],u,!1))})),r,n],u,!1))).pass,R(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var e={};if(!G())return w((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=xt[e])return t(r,n,e)}});return r}function j(n,t){function e(n){r=!0,u=n}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function K(n){var t,e=[];return function n(r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=xt[r];e.push((function(n){return X.apply(void 0,U([o.apply(void 0,U([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return W(j(e,(function(e,r){var u,i=Wt.run({value:n},(function(){return e(n)}));i.pass||r(D(!!i.pass,null!==(u=x(t,n,i.message))&&void 0!==u?u:i.message))})),D(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return G()?s=new Proxy(s,{get:function(t,e){return xt[e]?n(e):t[e]}}):(w((function(t){s[t]=n(t)})),s)}}(n)}function B(n){function t(n){return e.findIndex((function(t){var e=t[0];return b(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))}void 0===n&&(n=1);var e=[],r=function(t,u){var i=r.get(t);return i?i[1]:(u=u(),e.unshift([t.concat(),u]),_(e,n)&&(e.length=n),u)};return r.invalidate=function(n){-1<(n=t(n))&&e.splice(n,1)},r.get=function(n){return e[t(n)]||null},r}function H(n){return(n=[].concat(n))[n.length-1]}function M(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];p(u)?e.push(M(u,t)):(u=t(u),lt(u)&&e.push(u))}return e}function V(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(V(t)):[].concat(n).concat(t)}),[])}function J(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=W(n[r],[]),n=n[r]}return n}function Y(){var n=0;return{current:function(){return n},next:function(){n++}}}function z(n,t){return void 0===t&&(t=[]),{cursor:Y(),keys:{current:{},prev:{}},path:t,type:n}}function Q(){return Ut.useX().stateRef}function Z(n){return Q().optionalFields()[0][n]}function $(n,t){(0,Q().optionalFields()[1])((function(e){var r;return ft(e,((r={})[n]=x(t,e[n]),r))}))}function nn(n){var t;return null===(t=Z(n))||void 0===t?void 0:t[0]}function tn(){en((function(n){return n}))}function en(n){(0,Q().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function rn(){return un().filter((function(n){return n.isPending()}))}function un(){var n=Q().testObjects()[0].current;return Gt([n],(function(){return V(n)}))}function on(n){function e(n,t,e){return u.references.push(),r(n,x(t,e)),function(){return[u.references[n],function(t){return r(n,x(t,u.references[n]))}]}}function r(e,r){var o=u.references[e];u.references[e]=r,t(e=i[e][1])&&e(r,o),t(n)&&n()}var u={references:[]},i=[];return{registerStateKey:function(n,t){var r=i.length;return i.push([n,t]),e(r,n)},reset:function(){var n=u.references;u.references=[],i.forEach((function(t,r){return e(r,t[0],n[r])}))}}}function sn(n,t){var e=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(e),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function cn(n){setTimeout((function(){throw Error(n)}),0)}function an(n,e){n=void 0===(n=n.type)?st.DEFAULT:n,F(t(e));var r=z(n,ln());return n=Ut.run({isolate:r},(function(){return r.keys.prev=function(){var n=Q().testObjects()[0].prev;return[].concat(J(n,ln())).reduce((function(n,t){return t instanceof qt&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),en((function(n){var t=r.path;return J(n,t)[H(t)]=[],n})),e()})),fn().cursor.next(),n}function fn(){return Ut.useX().isolate}function ln(){var n=fn();return n.path.concat(n.cursor.current())}function dn(n){return n===Dt.ERRORS?Xt.ERROR_COUNT:Xt.WARN_COUNT}function pn(n,t){return!(!t||n.fieldName!==t)}function vn(n,t){return un().some((function(e){return hn(e,n,t)}))}function hn(n,t,e){return(e=!n.hasFailures()||e&&!pn(n,e))||(n=n.warns(),e=t===Dt.WARNINGS!=!!n),!e}function Nn(n){return!!gn(n)||!vn(Dt.ERRORS,n)&&(!R(un())&&!function(n){return Tt(rn().filter((function(t){return En(t,n)})))}(n)&&function(n){return un().every((function(t){return!(!n||pn(t,n))||mn(t,n)}))}(n))}function gn(n){return!!n&&!0===(null===(t=Z(n))||void 0===t?void 0:t[1]);var t}function En(n,t){return!(t&&!pn(n,t))&&!0!==nn(n.fieldName)}function mn(n,t){return!(!t||pn(n,t))||(!0===nn(n.fieldName)||n.isTested()||n.isOmitted())}function yn(){var n=Ut.useX().summary;return F(n),n}function bn(){var n=un(),t=ft({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=Rn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&Nn(t.fieldName);var r=n.groups,u=t.groupName;return u&&(r[u]=r[u]||{},r[u][t.fieldName]=Rn(r[u],t),e=r[u][t.fieldName],!1===r[u][t.fieldName].valid?t=!1:t=!!gn(t=t.fieldName)||!function(n,t,e){return un().some((function(r){return!Qt(r,t)&&hn(r,n,e)}))}(Dt.ERRORS,u,t)&&!function(n,t){return Tt(rn().filter((function(e){return!Qt(e,n)&&En(e,t)})))}(u,t)&&function(n,t){return un().every((function(e){return!!Qt(e,n)||mn(e,t)}))}(u,t),e.valid=t),n}),t),t.valid=Nn(),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}function Rn(n,t){function e(n){var t=dn(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||ft({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(Dt.ERRORS):t.isWarning()&&e(Dt.WARNINGS)),i}function Sn(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}function On(n,t){var e,r={},u=dn(t);for(e in n)T(n[e][u])&&(r[e]=n[e][t]||[]);return r}function Tn(n){return In(Dt.ERRORS,n)}function Cn(n){return In(Dt.WARNINGS,n)}function In(n,t){var e=yn().tests;return t?Sn(e,n,t):On(e,n)}function _n(n,t){return An(n,Dt.ERRORS,t)}function kn(n,t){return An(n,Dt.WARNINGS,t)}function An(n,t,e){return n=yn().groups[n],e?Sn(n,t,e):On(n,t)}function wn(n){return Wn(Xt.ERROR_COUNT,n)}function xn(n){return Wn(Xt.WARN_COUNT,n)}function Wn(n,t){var e,r=yn();return T(t?null===(e=r.tests[t])||void 0===e?void 0:e[n]:r[n])}function Fn(n,t){return Pn(Dt.ERRORS,n,t)}function Ln(n,t){return Pn(Dt.WARNINGS,n,t)}function Pn(n,t,e){var r,u,i=yn();if(n=dn(n),!(t=i.groups[t]))return!1;if(e)return T(null===(r=t[e])||void 0===r?void 0:r[n]);for(var o in t)if(T(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function Un(n){var t=yn();return n?!!Dn(t.tests,n):t.valid}function Gn(n,t){if(!(n=yn().groups[n]))return!1;if(t)return Dn(n,t);for(var e in n)if(!Dn(n,e))return!1;return!0}function Dn(n,t){var e;return!(null===(e=n[t])||void 0===e||!e.valid)}function Xn(){var n=un(),t={stateRef:Q()};return Zt([n],Ut.bind(t,(function(){var n=bn(),t=Q().suiteName()[0],e={summary:n};return ft(n,{getErrors:Ut.bind(e,Tn),getErrorsByGroup:Ut.bind(e,_n),getWarnings:Ut.bind(e,Cn),getWarningsByGroup:Ut.bind(e,kn),hasErrors:Ut.bind(e,wn),hasErrorsByGroup:Ut.bind(e,Fn),hasWarnings:Ut.bind(e,xn),hasWarningsByGroup:Ut.bind(e,Ln),isValid:Ut.bind(e,Un),isValidByGroup:Ut.bind(e,Gn),suiteName:t})})))}function qn(n){var t=rn();return!R(t)&&(n?t.some((function(t){return pn(t,n)})):Tt(t))}function jn(){var n=un(),t={stateRef:Q()};return $t([n],Ut.bind(t,(function(){return ft({},Xn(),{done:Ut.bind(t,ne)})})))}function Kn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!R(r.tests[e].testCount)))}function Bn(n){return!(qn()&&(!n||qn(n)))}function Hn(n,t){(0,Q().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Mn(n){return n.forEach((function(n){return n()}))}function Vn(){var n=function(){var n={};return{emit:function(t,e){(n[t]||[]).forEach((function(n){n(e)}))},on:function(t,e){return n[t]=(n[t]||[]).concat(e),{off:function(){n[t]=(n[t]||[]).filter((function(n){return n!==e}))}}}}}();return n.on(zt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=Q().testCallbacks()[0].fieldCallbacks;t&&!qn(t)&&p(e[t])&&Mn(e[t]),qn()||n.emit(zt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(zt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){e[n.fieldName]&&(n.omit(),$(n.fieldName,(function(n){return[n[0],!0]})))}if(!R(Q().optionalFields()[0])){var e={};en((function(r){return M(r,(function(r){if(Object.prototype.hasOwnProperty.call(e,r.fieldName))n(r);else{var u=nn(r.fieldName);t(u)&&(e[r.fieldName]=u(),n(r))}return r}))}))}}()})),n.on(zt.ALL_RUNNING_TESTS_FINISHED,(function(){Mn(Q().testCallbacks()[0].doneCallbacks)})),n.on(zt.REMOVE_FIELD,(function(n){un().forEach((function(t){pn(t,n)&&(t.cancel(),function(n){en((function(t){return M(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(zt.RESET_FIELD,(function(n){un().forEach((function(t){pn(t,n)&&t.reset()}))})),n}function Jn(){var n=Ut.useX();return F(n.bus),n.bus}function Yn(n){return Qn(0,"tests",n)}function zn(n){return Qn(1,"tests",n)}function Qn(n,t,e){var r=Ut.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(e)&&(r.exclusion[t][e]=0===n)}))}function Zn(n){for(var t in n)if(!0===n[t])return!0;return!1}function $n(){var n,t=Ut.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function nt(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function tt(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Jn().emit,i=Q(),s=Ut.bind({stateRef:i},(function(){tn(),u(zt.TEST_COMPLETED,n)}));i=Ut.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=o(t)?t:r,n.fail(),s())}));try{e.then(s,i)}catch(n){i()}}}function et(n){var t=Q().testObjects()[0].prev;if(R(t))return rt(n),n;var e=ln();if(t=J(t,e)[H(e)],!i(n.key)){t=n.key,(e=fn().keys.prev[t])&&(n=e),e=n;var r=fn().keys.current;return i(r[t])?r[t]=e:cn('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),rt(n),n}return!Tt(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(fn().type===st.EACH||cn("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(t.fieldName,"\n received: ").concat(n.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var n=fn().cursor.current();en((function(t){return t.splice(n),t}))}(),t=null),rt(n=W(t,n)),n}function rt(n){var t=ln();en((function(e){return J(e,t)[H(t)]=n,e}))}function ut(n){var e=fn().cursor,r=at.EAGER;if(r=!(Ut.useX().mode[0]!==r||!vn(Dt.ERRORS,n.fieldName)))return n.skip(),et(n),e.next(),n;if(r=et(n),Ut.useX().omitted)return r.omit(),e.next(),r;if(function(n){var t=n.fieldName;if(n=n.groupName,Ut.useX().skipped)return!0;var e=Ut.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){var o=Ut.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,n)?!1===o[n]:$n())return!0;if(!0===r.groups[n])return!(i||!Zn(u)&&!1!==u[t])}return!!(n=!!$n()&&!n)||!i&&!!Zn(u)&&!x(e[t])}(n))return r.skip(!!Ut.useX().skipped),e.next(),r;if(n!==r&&r.fieldName===n.fieldName&&r.groupName===n.groupName&&r.isPending()&&r.cancel(),rt(n),n.isUntested()){r=Jn();var u=function(n){return Ut.run({currentTest:n},(function(){return n.run()}))}(n);try{u&&t(u.then)?(n.asyncTest=u,n.setPending(),tt(n)):r.emit(zt.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}else(r=n.asyncTest)&&t(r.then)&&(n.setPending(),tt(n));return e.next(),n}function it(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:U([void 0],e,!0);e=u[0],r=u[1],u=u[2],F(o(n),ot("fieldName","string")),F(t(r),ot("Test callback","function"));var i=Ut.useX();return ut(e=new qt(n,r,{message:e,groupName:i.groupName,key:u}))}function ot(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var st,ct,at,ft=Object.assign,lt=e(r),dt=e(u),pt=e(i),vt=e(s),ht=e(c),Nt=e(a),gt=e(l),Et=e(p),mt=e(v),yt=e(g),bt=e(E),Rt=e(m),St=e(y),Ot=e(b),Tt=e(R),Ct=e(S),It=e(O),_t=e(o),kt=e(C),At=e(I),wt=e(k),xt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:vt,doesNotStartWith:e(A),endsWith:s,equals:c,greaterThan:f,greaterThanOrEquals:d,gt:f,gte:d,inside:v,isArray:p,isBetween:g,isBlank:E,isBoolean:m,isEmpty:R,isEven:function(n){return!!a(n)&&0==n%2},isFalsy:kt,isKeyOf:S,isNaN:O,isNegative:function(n){return h(n,0)},isNotArray:Et,isNotBetween:yt,isNotBlank:bt,isNotBoolean:Rt,isNotEmpty:Tt,isNotKeyOf:Ct,isNotNaN:It,isNotNull:lt,isNotNullish:pt,isNotNumber:St,isNotNumeric:Nt,isNotString:_t,isNotUndefined:dt,isNotValueOf:At,isNull:r,isNullish:i,isNumber:y,isNumeric:a,isOdd:function(n){return!!a(n)&&0!=n%2},isPositive:T,isString:o,isTruthy:C,isUndefined:u,isValueOf:I,lengthEquals:b,lengthNotEquals:Ot,lessThan:h,lessThanOrEquals:N,longerThan:_,longerThanOrEquals:function(n,t){return d(n.length,t)},lt:h,lte:N,matches:k,notEquals:ht,notInside:mt,notMatches:wt,numberEquals:l,numberNotEquals:gt,shorterThan:function(n,t){return h(n.length,t)},shorterThanOrEquals:function(n,t){return N(n.length,t)},startsWith:A},Wt=L((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?ft(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:ft(e,{parent:P})})),Ft=function(){function n(){if(!G())return w((function(n){t[n]=K(n)})),ft(q,t)}var t={context:function(){return Wt.useX()},extend:function(t){ft(xt,t),n()}};return n(),new Proxy(ft(q,t),{get:function(n,t){return t in n?n[t]:xt[t]?K(t):void 0}})}(),Lt=(ct=0,function(){return"".concat(ct++)});!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(st||(st={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(at||(at={}));var Pt,Ut=L((function(n,t){return t?null:ft({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:z(st.DEFAULT),mode:[at.ALL]},n)})),Gt=B();!function(n){n.Error="error",n.Warning="warning"}(Pt||(Pt={}));var Dt,Xt,qt=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=Lt(),this.severity=Pt.Error,this.status=jt,this.fieldName=n,this.testFn=t,u&&(this.groupName=u),e&&(this.message=e),r&&(this.key=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,u(this.message)&&o(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Yt||(this.status=n)},n.prototype.warns=function(){return this.severity===Pt.Warning},n.prototype.setPending=function(){this.setStatus(Vt)},n.prototype.fail=function(){this.setStatus(this.warns()?Ht:Bt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Mt)},n.prototype.warn=function(){this.severity=Pt.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(Kt)},n.prototype.cancel=function(){this.setStatus(Jt),tn()},n.prototype.reset=function(){this.status=jt,tn()},n.prototype.omit=function(){this.setStatus(Yt)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},n.prototype.isPending=function(){return this.statusEquals(Vt)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(Yt)},n.prototype.isUntested=function(){return this.statusEquals(jt)},n.prototype.isFailing=function(){return this.statusEquals(Bt)},n.prototype.isCanceled=function(){return this.statusEquals(Jt)},n.prototype.isSkipped=function(){return this.statusEquals(Kt)},n.prototype.isPassing=function(){return this.statusEquals(Mt)},n.prototype.isWarning=function(){return this.statusEquals(Ht)},n.prototype.statusEquals=function(n){return this.status===n},n}(),jt="UNTESTED",Kt="SKIPPED",Bt="FAILED",Ht="WARNING",Mt="PASSING",Vt="PENDING",Jt="CANCELED",Yt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Dt||(Dt={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(Xt||(Xt={}));var zt,Qt=e((function(n,t){return n.groupName===t})),Zt=B(1),$t=B(20),ne=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];if(n=n[1],t=jn(),Kn(e,n,t))return t;var r=function(){return e(Xn())};return Bn(n)?(r(),t):(Hn(r,n),t)};!function(n){n.TEST_COMPLETED="test_completed",n.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running"}(zt||(zt={})),Yn.group=function(n){return Qn(0,"groups",n)},zn.group=function(n){return Qn(1,"groups",n)};var te=ft(it,{memo:function(n){var t=B(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=fn().cursor.current();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[Q().suiteId()[0],e,u].concat(i),null===(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):ut(r[1])}}(it)});n.VERSION="4.4.1",n.context=Ut,n.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],F(t(r),"vest.create: Expected callback to be a function.");var u=Vn(),i=on();return n={stateRef:sn(i,{suiteId:Lt(),suiteName:n}),bus:u},ft(Ut.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),an({type:st.SUITE},(function(){r.apply(void 0,n)})),u.emit(zt.SUITE_CALLBACK_DONE_RUNNING),jn()})),{get:Ut.bind(n,Xn),remove:Ut.bind(n,(function(n){u.emit(zt.REMOVE_FIELD,n)})),reset:i.reset,resetField:Ut.bind(n,(function(n){u.emit(zt.RESET_FIELD,n)}))})},n.each=function(n,e){F(t(e),"each callback must be a function"),an({type:st.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=at.EAGER;Ut.useX().mode[0]=n},n.enforce=Ft,n.group=function(n,e){F(o(n),nt("name must be a string")),F(t(e),nt("callback must be a function")),an({type:st.GROUP},(function(){Ut.run({groupName:n},e)}))},n.include=function(n){var t=Ut.useX(),e=t.inclusion;return t=t.exclusion,F(o(n)),e[n]=W(t.tests[n],!0),{when:function(t){var e=Ut.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?W(r.tests[n],!0):o(t)?!!r.tests[t]:x(t,x(Xn))}}}},n.omitWhen=function(n,t){an({type:st.OMIT_WHEN},(function(){Ut.run({omitted:!!Ut.useX().omitted||x(n,x(Xn))},(function(){return t()}))}))},n.only=Yn,n.optional=function(n){if(p(n)||o(n))[].concat(n).forEach((function(n){$(n,[!0,!1])}));else for(var t in n)$(t,[n[t],!1])},n.skip=zn,n.skipWhen=function(n,t){an({type:st.SKIP_WHEN},(function(){Ut.run({skipped:!!Ut.useX().skipped||x(n,x(Xn))},(function(){return t()}))}))},n.test=te,n.warn=function(){var n=Ut.useX("warn hook called outside of a running suite.");F(n.currentTest,"warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
|
package/package.json
CHANGED
package/testUtils/testObjects.ts
CHANGED
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
import VestTest from 'VestTest';
|
|
2
|
-
import {
|
|
2
|
+
import { useSetTests } from 'stateHooks';
|
|
3
3
|
|
|
4
4
|
export function emptyTestObjects(): void {
|
|
5
|
-
|
|
6
|
-
setTestObjects(({ prev }) => ({ prev, current: [] }));
|
|
5
|
+
useSetTests(() => []);
|
|
7
6
|
}
|
|
8
7
|
|
|
9
8
|
export function setTestObjects(...args: VestTest[]): void {
|
|
10
|
-
|
|
11
|
-
setTestObjects(({ prev }) => ({ prev, current: [...args] }));
|
|
9
|
+
useSetTests(() => [...args]);
|
|
12
10
|
}
|
|
13
11
|
|
|
14
12
|
export function addTestObject(addedTests: VestTest[] | VestTest): void {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
setTestObjects(({ prev, current }) => ({
|
|
18
|
-
prev,
|
|
19
|
-
current: current.concat(addedTests),
|
|
20
|
-
}));
|
|
13
|
+
useSetTests(tests => tests.concat(addedTests));
|
|
21
14
|
}
|
package/types/classnames.d.ts
CHANGED
|
@@ -3,16 +3,14 @@ type SuiteSummary = {
|
|
|
3
3
|
tests: Tests;
|
|
4
4
|
valid: boolean;
|
|
5
5
|
} & SummaryBase;
|
|
6
|
-
type GroupTestSummary =
|
|
6
|
+
type GroupTestSummary = SingleTestSummary;
|
|
7
7
|
type Groups = Record<string, Group>;
|
|
8
8
|
type Group = Record<string, GroupTestSummary>;
|
|
9
9
|
type Tests = Record<string, SingleTestSummary>;
|
|
10
|
-
type SingleTestSummary =
|
|
11
|
-
valid: boolean;
|
|
12
|
-
};
|
|
13
|
-
type BaseTestSummary = SummaryBase & {
|
|
10
|
+
type SingleTestSummary = SummaryBase & {
|
|
14
11
|
errors: string[];
|
|
15
12
|
warnings: string[];
|
|
13
|
+
valid: boolean;
|
|
16
14
|
};
|
|
17
15
|
type SummaryBase = {
|
|
18
16
|
errorCount: number;
|
package/types/parser.d.ts
CHANGED
|
@@ -3,16 +3,14 @@ type SuiteSummary = {
|
|
|
3
3
|
tests: Tests;
|
|
4
4
|
valid: boolean;
|
|
5
5
|
} & SummaryBase;
|
|
6
|
-
type GroupTestSummary =
|
|
6
|
+
type GroupTestSummary = SingleTestSummary;
|
|
7
7
|
type Groups = Record<string, Group>;
|
|
8
8
|
type Group = Record<string, GroupTestSummary>;
|
|
9
9
|
type Tests = Record<string, SingleTestSummary>;
|
|
10
|
-
type SingleTestSummary =
|
|
11
|
-
valid: boolean;
|
|
12
|
-
};
|
|
13
|
-
type BaseTestSummary = SummaryBase & {
|
|
10
|
+
type SingleTestSummary = SummaryBase & {
|
|
14
11
|
errors: string[];
|
|
15
12
|
warnings: string[];
|
|
13
|
+
valid: boolean;
|
|
16
14
|
};
|
|
17
15
|
type SummaryBase = {
|
|
18
16
|
errorCount: number;
|