vest 3.3.0-dev-549cb1 → 4.0.0-dev-deabb8
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 +43 -30
- package/dist/cjs/vest.development.js +158 -125
- package/dist/cjs/vest.production.js +1 -1
- package/dist/es/vest.development.js +158 -125
- package/dist/es/vest.production.js +1 -1
- package/dist/umd/vest.development.js +158 -125
- package/dist/umd/vest.production.js +1 -1
- package/docs/migration.md +19 -0
- package/package.json +74 -65
- package/testUtils/itWithContext.ts +5 -1
- package/testUtils/runCreateRef.ts +1 -1
- package/types/vest.d.ts +21 -14
package/CHANGELOG.md
CHANGED
|
@@ -4,47 +4,60 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 4.0.0 - 2021-10-02
|
|
8
|
+
### Changed or removed
|
|
9
|
+
- 0e3af10 major(context): used named export in context (ealush)
|
|
10
|
+
- 1897164 major(vest, enforce): setup next major version (ealush)
|
|
11
|
+
- bf9265e breaking(vest, enforce): prepare next major (ealush)
|
|
12
|
+
|
|
8
13
|
### Added
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
14
|
+
- b0cbb32 feat(vest): Add a parser export (ealush)
|
|
15
|
+
- fc75f1d feat(vest): isValid with field name (ealush)
|
|
16
|
+
- c427e4e feat(vest): handle execution order state refill with memoized tests (ealush)
|
|
17
|
+
- 443c275 feat(vest): Make the state rely on execution order. Add skipWhen. (undefined)
|
|
18
|
+
- 2988655 added(n4s): partial rule modifier (undefined)
|
|
19
|
+
- f41a444 feat(n4s): context propagation within enforce (undefined)
|
|
15
20
|
|
|
16
21
|
### Fixed and improved
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
22
|
+
- deabb8e patch(vest): add cache invalidation for canceled tests (ealush)
|
|
23
|
+
- fd1e31e types(vest): add safeguard around shouldUseErrorAsMessage (ealush)
|
|
24
|
+
- 8321a36 patch(vest): some cleanups (ealush)
|
|
25
|
+
- 8320956 patch(vest): remove duplicate code handling perv test registration (ealush)
|
|
26
|
+
- 7e3fffb vx: use context directly from published package (ealush)
|
|
27
|
+
- ac45a64 patch: run done callbacks via event (ealush)
|
|
28
|
+
- e0f05d6 patch(vest): removed state subscription (ealush)
|
|
29
|
+
- package.json
|
|
30
|
+
- packages/anyone/package.json
|
|
31
|
+
- packages/anyone/package.json
|
|
32
|
+
- packages/vast/types/vast.d.ts
|
|
33
|
+
- 2515275 patch(vest): remove pending and lagging state (ealush)
|
|
34
|
+
- 4c38835 patch(vest): convert boolean flags to a single status key (ealush)
|
|
35
|
+
- e24f0bd patch: simplify fieldname comparison (ealush)
|
|
36
|
+
- b927b5c patch(vest): add useAllIncomplete hook (ealush)
|
|
37
|
+
- a88dd38 patch(vest): invalid accounts for warning tests as well (ealush)
|
|
38
|
+
- eaf9bef patch(vest): isValid counts all required tests per field (ealush)
|
|
39
|
+
- 7a4ba03 chore: cleanups (ealush)
|
|
25
40
|
- .eslintrc.js
|
|
26
|
-
-
|
|
41
|
+
- 1878ffc add(n4s): enforce.condition (ealush)
|
|
27
42
|
- package.json
|
|
28
43
|
- packages/anyone/package.json
|
|
29
|
-
-
|
|
30
|
-
-
|
|
44
|
+
- a89af46 chore: cleanup residue (undefined)
|
|
45
|
+
- be86496 chore: remove duplicate types (undefined)
|
|
31
46
|
- packages/anyone/package.json
|
|
32
|
-
-
|
|
33
|
-
-
|
|
47
|
+
- 44de93f patch: add nodejs exports (undefined)
|
|
48
|
+
- abb0efe patch: remove unused exports (undefined)
|
|
34
49
|
- packages/anyone/package.json
|
|
35
|
-
-
|
|
50
|
+
- a8540de chore: reduce complexity, remove all lint errors (undefined)
|
|
36
51
|
- packages/anyone/.npmignore
|
|
37
52
|
- .github/PULL_REQUEST_TEMPLATE.md
|
|
38
|
-
-
|
|
39
|
-
-
|
|
53
|
+
- f58327f chore: cleanup unused code (ealush)
|
|
54
|
+
- 853cee6 lint: handling lint of all packages (ealush)
|
|
40
55
|
- .gitignore
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
- 3d0393c Vest 4 Infra Setup (ealush)
|
|
47
|
-
- 6ee296e Vest 4 Infra Setup (ealush)
|
|
56
|
+
- d148f6d patch(n4s): add ruleReturn default values (ealush)
|
|
57
|
+
- c722fbd fix(n4s): make enforce compound runners fall back to correct response (ealush)
|
|
58
|
+
- fa65911 fix(n4s): make enforce chaining work (ealush)
|
|
59
|
+
- a2437a3 chore: some lint fixes (ealush)
|
|
60
|
+
- aabb5f4 add cli options support (ealush)
|
|
48
61
|
|
|
49
62
|
## 3.2.7 - 2021-07-17
|
|
50
63
|
|
|
@@ -198,7 +198,7 @@ function compounds() {
|
|
|
198
198
|
return { allOf: allOf, anyOf: anyOf, noneOf: noneOf, oneOf: oneOf, optional: optional$1 };
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
function isStringValue
|
|
201
|
+
function isStringValue(v) {
|
|
202
202
|
return String(v) === v;
|
|
203
203
|
}
|
|
204
204
|
|
|
@@ -609,7 +609,7 @@ function transformResult(result, ruleName, value) {
|
|
|
609
609
|
return ruleReturn(result);
|
|
610
610
|
}
|
|
611
611
|
else {
|
|
612
|
-
return ruleReturn(result.pass, optionalFunctionValue.apply(void 0, __spreadArray([result.message, ruleName, value], args)));
|
|
612
|
+
return ruleReturn(result.pass, optionalFunctionValue.apply(void 0, __spreadArray([result.message, ruleName, value], args, false)));
|
|
613
613
|
}
|
|
614
614
|
}
|
|
615
615
|
function validateResult(result) {
|
|
@@ -643,9 +643,9 @@ function enforceEager(value) {
|
|
|
643
643
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
644
644
|
args[_i] = arguments[_i];
|
|
645
645
|
}
|
|
646
|
-
var transformedResult = transformResult.apply(void 0, __spreadArray([ctx$1.run({ value: value }, function () { return rule.apply(void 0, __spreadArray([value], args)); }),
|
|
646
|
+
var transformedResult = transformResult.apply(void 0, __spreadArray([ctx$1.run({ value: value }, function () { return rule.apply(void 0, __spreadArray([value], args, false)); }),
|
|
647
647
|
ruleName,
|
|
648
|
-
value], args));
|
|
648
|
+
value], args, false));
|
|
649
649
|
if (!transformedResult.pass) {
|
|
650
650
|
if (isEmpty(transformedResult.message)) {
|
|
651
651
|
throwError("enforce/" + ruleName + " failed with " + JSON.stringify(value));
|
|
@@ -675,7 +675,7 @@ function genEnforceLazy(key) {
|
|
|
675
675
|
}
|
|
676
676
|
var rule = getRule(ruleName);
|
|
677
677
|
registeredRules.push(function (value) {
|
|
678
|
-
return transformResult.apply(void 0, __spreadArray([rule.apply(void 0, __spreadArray([value], args)), ruleName, value], args));
|
|
678
|
+
return transformResult.apply(void 0, __spreadArray([rule.apply(void 0, __spreadArray([value], args, false)), ruleName, value], args, false));
|
|
679
679
|
});
|
|
680
680
|
var proxy = {
|
|
681
681
|
run: function (value) {
|
|
@@ -895,10 +895,6 @@ function matchingFieldName(testObject, fieldName) {
|
|
|
895
895
|
function createCache(maxSize) {
|
|
896
896
|
if (maxSize === void 0) { maxSize = 10; }
|
|
897
897
|
var cacheStorage = [];
|
|
898
|
-
/**
|
|
899
|
-
* @param {any[]} deps dependency array.
|
|
900
|
-
* @param {Function} cache action function.
|
|
901
|
-
*/
|
|
902
898
|
var cache = function (deps, cacheAction) {
|
|
903
899
|
var cacheHit = cache.get(deps);
|
|
904
900
|
// cache hit is not null
|
|
@@ -911,10 +907,17 @@ function createCache(maxSize) {
|
|
|
911
907
|
}
|
|
912
908
|
return result;
|
|
913
909
|
};
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
910
|
+
// invalidate an item in the cache by its dependencies
|
|
911
|
+
cache.invalidate = function (deps) {
|
|
912
|
+
var index = cacheStorage.findIndex(function (_a) {
|
|
913
|
+
var cachedDeps = _a[0];
|
|
914
|
+
return lengthEquals(deps, cachedDeps.length) &&
|
|
915
|
+
deps.every(function (dep, i) { return dep === cachedDeps[i]; });
|
|
916
|
+
});
|
|
917
|
+
if (index > -1)
|
|
918
|
+
cacheStorage.splice(index, 1);
|
|
919
|
+
};
|
|
920
|
+
// Retrieves an item from the cache.
|
|
918
921
|
cache.get = function (deps) {
|
|
919
922
|
return cacheStorage[cacheStorage.findIndex(function (_a) {
|
|
920
923
|
var cachedDeps = _a[0];
|
|
@@ -1107,6 +1110,13 @@ function noMatch(testObject, severity, group, fieldName) {
|
|
|
1107
1110
|
return false;
|
|
1108
1111
|
}
|
|
1109
1112
|
|
|
1113
|
+
function getFailuresArrayOrObject(group, fieldName) {
|
|
1114
|
+
if (fieldName) {
|
|
1115
|
+
return group[fieldName];
|
|
1116
|
+
}
|
|
1117
|
+
return group;
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1110
1120
|
function getErrors(fieldName) {
|
|
1111
1121
|
return getFailures('errors', fieldName);
|
|
1112
1122
|
}
|
|
@@ -1121,25 +1131,16 @@ function getFailures(severityKey, fieldName) {
|
|
|
1121
1131
|
var failureMessages = collectFailureMessages(severityKey, testObjects, {
|
|
1122
1132
|
fieldName: fieldName
|
|
1123
1133
|
});
|
|
1124
|
-
|
|
1125
|
-
return failureMessages[fieldName];
|
|
1126
|
-
}
|
|
1127
|
-
return failureMessages;
|
|
1134
|
+
return getFailuresArrayOrObject(failureMessages, fieldName);
|
|
1128
1135
|
}
|
|
1129
1136
|
|
|
1130
1137
|
function getErrorsByGroup(groupName, fieldName) {
|
|
1131
1138
|
var errors = getByGroup('errors', groupName, fieldName);
|
|
1132
|
-
|
|
1133
|
-
return errors[fieldName];
|
|
1134
|
-
}
|
|
1135
|
-
return errors;
|
|
1139
|
+
return getFailuresArrayOrObject(errors, fieldName);
|
|
1136
1140
|
}
|
|
1137
1141
|
function getWarningsByGroup(groupName, fieldName) {
|
|
1138
|
-
var
|
|
1139
|
-
|
|
1140
|
-
return errors[fieldName];
|
|
1141
|
-
}
|
|
1142
|
-
return errors;
|
|
1142
|
+
var warnings = getByGroup('warnings', groupName, fieldName);
|
|
1143
|
+
return getFailuresArrayOrObject(warnings, fieldName);
|
|
1143
1144
|
}
|
|
1144
1145
|
/**
|
|
1145
1146
|
* Gets failure messages by group.
|
|
@@ -1321,22 +1322,90 @@ function deferDoneCallback(doneCallback, fieldName) {
|
|
|
1321
1322
|
});
|
|
1322
1323
|
}
|
|
1323
1324
|
|
|
1325
|
+
function createBus() {
|
|
1326
|
+
var listeners = {};
|
|
1327
|
+
return {
|
|
1328
|
+
emit: function (event, data) {
|
|
1329
|
+
if (!listeners[event]) {
|
|
1330
|
+
return;
|
|
1331
|
+
}
|
|
1332
|
+
listeners[event].forEach(function (listener) {
|
|
1333
|
+
listener(data);
|
|
1334
|
+
});
|
|
1335
|
+
},
|
|
1336
|
+
on: function (event, handler) {
|
|
1337
|
+
if (!listeners[event]) {
|
|
1338
|
+
listeners[event] = [];
|
|
1339
|
+
}
|
|
1340
|
+
listeners[event].push(handler);
|
|
1341
|
+
return {
|
|
1342
|
+
off: function () {
|
|
1343
|
+
listeners[event] = listeners[event].filter(function (h) { return h !== handler; });
|
|
1344
|
+
}
|
|
1345
|
+
};
|
|
1346
|
+
}
|
|
1347
|
+
};
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
function callEach(arr) {
|
|
1351
|
+
return arr.forEach(function (fn) { return fn(); });
|
|
1352
|
+
}
|
|
1353
|
+
|
|
1354
|
+
/**
|
|
1355
|
+
* Runs done callback per field when async tests are finished running.
|
|
1356
|
+
*/
|
|
1357
|
+
function runFieldCallbacks(fieldName) {
|
|
1358
|
+
var fieldCallbacks = useTestCallbacks()[0].fieldCallbacks;
|
|
1359
|
+
if (fieldName) {
|
|
1360
|
+
if (!hasRemainingTests(fieldName) &&
|
|
1361
|
+
Array.isArray(fieldCallbacks[fieldName])) {
|
|
1362
|
+
callEach(fieldCallbacks[fieldName]);
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
1365
|
+
}
|
|
1366
|
+
/**
|
|
1367
|
+
* Runs unlabelled done callback when async tests are finished running.
|
|
1368
|
+
*/
|
|
1369
|
+
function runDoneCallbacks() {
|
|
1370
|
+
var doneCallbacks = useTestCallbacks()[0].doneCallbacks;
|
|
1371
|
+
if (!hasRemainingTests()) {
|
|
1372
|
+
callEach(doneCallbacks);
|
|
1373
|
+
}
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
function initBus() {
|
|
1377
|
+
var bus = createBus();
|
|
1378
|
+
bus.on(Events.TEST_COMPLETED, function (testObject) {
|
|
1379
|
+
if (testObject.isCanceled()) {
|
|
1380
|
+
return;
|
|
1381
|
+
}
|
|
1382
|
+
testObject.done();
|
|
1383
|
+
runFieldCallbacks(testObject.fieldName);
|
|
1384
|
+
runDoneCallbacks();
|
|
1385
|
+
});
|
|
1386
|
+
return bus;
|
|
1387
|
+
}
|
|
1388
|
+
function useBus() {
|
|
1389
|
+
var context = ctx.useX();
|
|
1390
|
+
if (!context.bus) {
|
|
1391
|
+
throwError();
|
|
1392
|
+
}
|
|
1393
|
+
return context.bus;
|
|
1394
|
+
}
|
|
1395
|
+
var Events;
|
|
1396
|
+
(function (Events) {
|
|
1397
|
+
Events["TEST_COMPLETED"] = "test_completed";
|
|
1398
|
+
})(Events || (Events = {}));
|
|
1399
|
+
|
|
1324
1400
|
// eslint-disable-next-line max-lines-per-function
|
|
1325
1401
|
function create(suiteCallback) {
|
|
1326
1402
|
if (!isFunction(suiteCallback)) {
|
|
1327
1403
|
throwError('Suite initialization error. Expected `tests` to be a function.');
|
|
1328
1404
|
}
|
|
1329
|
-
var
|
|
1330
|
-
var state = createState(
|
|
1331
|
-
handlers.forEach(function (fn) {
|
|
1332
|
-
return fn({
|
|
1333
|
-
suiteState: stateRef,
|
|
1334
|
-
type: 'suiteStateUpdate'
|
|
1335
|
-
});
|
|
1336
|
-
});
|
|
1337
|
-
});
|
|
1405
|
+
var bus = initBus();
|
|
1406
|
+
var state = createState();
|
|
1338
1407
|
var stateRef = createStateRef(state, { suiteId: genId() });
|
|
1339
|
-
var suite = assign(ctx.bind({ stateRef: stateRef }, function () {
|
|
1408
|
+
var suite = assign(ctx.bind({ stateRef: stateRef, bus: bus }, function () {
|
|
1340
1409
|
var args = [];
|
|
1341
1410
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
1342
1411
|
args[_i] = arguments[_i];
|
|
@@ -1360,16 +1429,7 @@ function create(suiteCallback) {
|
|
|
1360
1429
|
}
|
|
1361
1430
|
});
|
|
1362
1431
|
}),
|
|
1363
|
-
reset: state.reset
|
|
1364
|
-
subscribe: function (handler) {
|
|
1365
|
-
if (!isFunction(handler))
|
|
1366
|
-
return;
|
|
1367
|
-
handlers.push(handler);
|
|
1368
|
-
handler({
|
|
1369
|
-
type: 'suiteSubscribeInit',
|
|
1370
|
-
suiteState: stateRef
|
|
1371
|
-
});
|
|
1372
|
-
}
|
|
1432
|
+
reset: state.reset
|
|
1373
1433
|
});
|
|
1374
1434
|
return suite;
|
|
1375
1435
|
}
|
|
@@ -1501,16 +1561,16 @@ function skipWhen(conditional, callback) {
|
|
|
1501
1561
|
*/
|
|
1502
1562
|
function group(groupName, tests) {
|
|
1503
1563
|
if (!isStringValue(groupName)) {
|
|
1504
|
-
throwGroupError(
|
|
1564
|
+
throwGroupError('name must be a string');
|
|
1505
1565
|
}
|
|
1506
1566
|
if (!isFunction(tests)) {
|
|
1507
|
-
throwGroupError(
|
|
1567
|
+
throwGroupError('callback must be a function');
|
|
1508
1568
|
}
|
|
1509
1569
|
// Running with the context applied
|
|
1510
|
-
ctx.
|
|
1570
|
+
ctx.run({ groupName: groupName }, tests);
|
|
1511
1571
|
}
|
|
1512
|
-
function throwGroupError(
|
|
1513
|
-
throwError("
|
|
1572
|
+
function throwGroupError(error) {
|
|
1573
|
+
throwError("Wrong arguments passed to group. Group " + error + ".");
|
|
1514
1574
|
}
|
|
1515
1575
|
|
|
1516
1576
|
function optional(optionals) {
|
|
@@ -1547,6 +1607,7 @@ function removeTestFromState (testObject) {
|
|
|
1547
1607
|
}
|
|
1548
1608
|
|
|
1549
1609
|
function shouldUseErrorAsMessage(message, error) {
|
|
1610
|
+
// kind of cheating with this safe guard, but it does the job
|
|
1550
1611
|
return isUndefined(message) && isStringValue(error);
|
|
1551
1612
|
}
|
|
1552
1613
|
|
|
@@ -1621,6 +1682,9 @@ var VestTest = /** @class */ (function () {
|
|
|
1621
1682
|
VestTest.prototype.isTested = function () {
|
|
1622
1683
|
return this.hasFailures() || this.isPassing();
|
|
1623
1684
|
};
|
|
1685
|
+
VestTest.prototype.isUntested = function () {
|
|
1686
|
+
return this.status === STATUS_UNTESTED;
|
|
1687
|
+
};
|
|
1624
1688
|
VestTest.prototype.isFailing = function () {
|
|
1625
1689
|
return this.status === STATUS_FAILED;
|
|
1626
1690
|
};
|
|
@@ -1646,27 +1710,23 @@ var STATUS_PASSING = 'PASSING';
|
|
|
1646
1710
|
var STATUS_PENDING = 'PENDING';
|
|
1647
1711
|
var STATUS_CANCELED = 'CANCELED';
|
|
1648
1712
|
|
|
1713
|
+
function isPromise(value) {
|
|
1714
|
+
return value && isFunction(value.then);
|
|
1715
|
+
}
|
|
1716
|
+
|
|
1649
1717
|
function isSameProfileTest(testObject1, testObject2) {
|
|
1650
1718
|
return (testObject1.fieldName === testObject2.fieldName &&
|
|
1651
1719
|
testObject1.groupName === testObject2.groupName);
|
|
1652
1720
|
}
|
|
1653
1721
|
|
|
1654
1722
|
function cancelOverriddenPendingTest(prevRunTestObject, currentRunTestObject) {
|
|
1655
|
-
if (
|
|
1656
|
-
prevRunTestObject
|
|
1657
|
-
|
|
1723
|
+
if (currentRunTestObject !== prevRunTestObject &&
|
|
1724
|
+
isSameProfileTest(prevRunTestObject, currentRunTestObject) &&
|
|
1725
|
+
prevRunTestObject.isPending()) {
|
|
1658
1726
|
prevRunTestObject.cancel();
|
|
1659
1727
|
}
|
|
1660
1728
|
}
|
|
1661
1729
|
|
|
1662
|
-
function isPromise(value) {
|
|
1663
|
-
return value && isFunction(value.then);
|
|
1664
|
-
}
|
|
1665
|
-
|
|
1666
|
-
function callEach(arr) {
|
|
1667
|
-
return arr.forEach(function (fn) { return fn(); });
|
|
1668
|
-
}
|
|
1669
|
-
|
|
1670
1730
|
/**
|
|
1671
1731
|
* Runs async test.
|
|
1672
1732
|
*/
|
|
@@ -1674,16 +1734,10 @@ function runAsyncTest(testObject) {
|
|
|
1674
1734
|
var asyncTest = testObject.asyncTest, message = testObject.message;
|
|
1675
1735
|
if (!isPromise(asyncTest))
|
|
1676
1736
|
return;
|
|
1737
|
+
var emit = useBus().emit;
|
|
1677
1738
|
var stateRef = useStateRef();
|
|
1678
1739
|
var done = ctx.bind({ stateRef: stateRef }, function () {
|
|
1679
|
-
testObject
|
|
1680
|
-
// This is for cases in which the suite state was already reset
|
|
1681
|
-
if (testObject.isCanceled()) {
|
|
1682
|
-
return;
|
|
1683
|
-
}
|
|
1684
|
-
// Perform required done callback calls and cleanups after the test is finished
|
|
1685
|
-
runFieldCallbacks(testObject.fieldName);
|
|
1686
|
-
runDoneCallbacks();
|
|
1740
|
+
emit(Events.TEST_COMPLETED, testObject);
|
|
1687
1741
|
});
|
|
1688
1742
|
var fail = ctx.bind({ stateRef: stateRef }, function (rejectionMessage) {
|
|
1689
1743
|
if (testObject.isCanceled()) {
|
|
@@ -1704,27 +1758,6 @@ function runAsyncTest(testObject) {
|
|
|
1704
1758
|
fail();
|
|
1705
1759
|
}
|
|
1706
1760
|
}
|
|
1707
|
-
/**
|
|
1708
|
-
* Runs done callback per field when async tests are finished running.
|
|
1709
|
-
*/
|
|
1710
|
-
function runFieldCallbacks(fieldName) {
|
|
1711
|
-
var fieldCallbacks = useTestCallbacks()[0].fieldCallbacks;
|
|
1712
|
-
if (fieldName) {
|
|
1713
|
-
if (!hasRemainingTests(fieldName) &&
|
|
1714
|
-
Array.isArray(fieldCallbacks[fieldName])) {
|
|
1715
|
-
callEach(fieldCallbacks[fieldName]);
|
|
1716
|
-
}
|
|
1717
|
-
}
|
|
1718
|
-
}
|
|
1719
|
-
/**
|
|
1720
|
-
* Runs unlabelled done callback when async tests are finished running.
|
|
1721
|
-
*/
|
|
1722
|
-
function runDoneCallbacks() {
|
|
1723
|
-
var doneCallbacks = useTestCallbacks()[0].doneCallbacks;
|
|
1724
|
-
if (!hasRemainingTests()) {
|
|
1725
|
-
callEach(doneCallbacks);
|
|
1726
|
-
}
|
|
1727
|
-
}
|
|
1728
1761
|
|
|
1729
1762
|
/**
|
|
1730
1763
|
* Runs sync tests - or extracts promise.
|
|
@@ -1752,6 +1785,7 @@ function runSyncTest(testObject) {
|
|
|
1752
1785
|
* Registers test, if async - adds to pending array
|
|
1753
1786
|
*/
|
|
1754
1787
|
function registerTest(testObject) {
|
|
1788
|
+
var emit = useBus().emit;
|
|
1755
1789
|
// Run test callback.
|
|
1756
1790
|
// If a promise is returned, set as async and
|
|
1757
1791
|
// Move to pending list.
|
|
@@ -1765,7 +1799,7 @@ function registerTest(testObject) {
|
|
|
1765
1799
|
runAsyncTest(testObject);
|
|
1766
1800
|
}
|
|
1767
1801
|
else {
|
|
1768
|
-
testObject
|
|
1802
|
+
emit(Events.TEST_COMPLETED, testObject);
|
|
1769
1803
|
}
|
|
1770
1804
|
}
|
|
1771
1805
|
catch (_a) {
|
|
@@ -1773,6 +1807,29 @@ function registerTest(testObject) {
|
|
|
1773
1807
|
}
|
|
1774
1808
|
}
|
|
1775
1809
|
|
|
1810
|
+
function registerPrevRunTest(testObject) {
|
|
1811
|
+
var prevRunTest = useTestAtCursor(testObject);
|
|
1812
|
+
if (isExcluded(testObject)) {
|
|
1813
|
+
testObject.skip();
|
|
1814
|
+
useSetNextCursorAt();
|
|
1815
|
+
return prevRunTest;
|
|
1816
|
+
}
|
|
1817
|
+
cancelOverriddenPendingTest(prevRunTest, testObject);
|
|
1818
|
+
useSetTestAtCursor(testObject);
|
|
1819
|
+
useSetNextCursorAt();
|
|
1820
|
+
registerTestObjectByTier(testObject);
|
|
1821
|
+
return testObject;
|
|
1822
|
+
}
|
|
1823
|
+
function registerTestObjectByTier(testObject) {
|
|
1824
|
+
if (testObject.isUntested()) {
|
|
1825
|
+
registerTest(testObject);
|
|
1826
|
+
}
|
|
1827
|
+
else if (isPromise(testObject.asyncTest)) {
|
|
1828
|
+
testObject.setPending();
|
|
1829
|
+
runAsyncTest(testObject);
|
|
1830
|
+
}
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1776
1833
|
function bindTestEach(test) {
|
|
1777
1834
|
/**
|
|
1778
1835
|
* Run multiple tests using a parameter table
|
|
@@ -1789,7 +1846,7 @@ function bindTestEach(test) {
|
|
|
1789
1846
|
var _a = args.reverse(), testFn = _a[0], message = _a[1];
|
|
1790
1847
|
return table.map(function (item) {
|
|
1791
1848
|
item = asArray(item);
|
|
1792
|
-
return test(optionalFunctionValue.apply(void 0, __spreadArray([fieldName], item)), optionalFunctionValue.apply(void 0, __spreadArray([message], item)), function () { return testFn.apply(void 0, item); });
|
|
1849
|
+
return test(optionalFunctionValue.apply(void 0, __spreadArray([fieldName], item, false)), optionalFunctionValue.apply(void 0, __spreadArray([message], item, false)), function () { return testFn.apply(void 0, item); });
|
|
1793
1850
|
});
|
|
1794
1851
|
}
|
|
1795
1852
|
return eachReturn;
|
|
@@ -1812,32 +1869,20 @@ function bindTestMemo(test) {
|
|
|
1812
1869
|
// Implicit dependency for more specificity
|
|
1813
1870
|
var dependencies = [suiteId, fieldName, cursorAt].concat(deps);
|
|
1814
1871
|
var cached = cache.get(dependencies);
|
|
1815
|
-
// Cache miss. Start fresh
|
|
1816
1872
|
if (isNull(cached)) {
|
|
1873
|
+
// cache miss
|
|
1817
1874
|
return cache(dependencies, function () { return test(fieldName, msg, testFn); });
|
|
1818
1875
|
}
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
return prevRunTest;
|
|
1876
|
+
if (cached[1].isCanceled()) {
|
|
1877
|
+
// cache hit, but test is canceled
|
|
1878
|
+
cache.invalidate(dependencies);
|
|
1879
|
+
return cache(dependencies, function () { return test(fieldName, msg, testFn); });
|
|
1824
1880
|
}
|
|
1825
|
-
|
|
1826
|
-
useSetTestAtCursor(testObject);
|
|
1827
|
-
useSetNextCursorAt();
|
|
1828
|
-
handleAsyncTest(testObject);
|
|
1829
|
-
return testObject;
|
|
1881
|
+
return registerPrevRunTest(cached[1]);
|
|
1830
1882
|
}
|
|
1831
1883
|
return memo;
|
|
1832
1884
|
}
|
|
1833
|
-
function handleAsyncTest(testObject) {
|
|
1834
|
-
if (testObject && isPromise(testObject.asyncTest)) {
|
|
1835
|
-
testObject.setPending();
|
|
1836
|
-
runAsyncTest(testObject);
|
|
1837
|
-
}
|
|
1838
|
-
}
|
|
1839
1885
|
|
|
1840
|
-
// eslint-disable-next-line max-statements
|
|
1841
1886
|
function testBase(fieldName) {
|
|
1842
1887
|
var args = [];
|
|
1843
1888
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
@@ -1849,26 +1894,14 @@ function testBase(fieldName) {
|
|
|
1849
1894
|
message: message,
|
|
1850
1895
|
groupName: context === null || context === void 0 ? void 0 : context.groupName
|
|
1851
1896
|
});
|
|
1852
|
-
|
|
1853
|
-
if (isExcluded(testObject)) {
|
|
1854
|
-
testObject.skip();
|
|
1855
|
-
useSetNextCursorAt();
|
|
1856
|
-
return prevRunTest;
|
|
1857
|
-
}
|
|
1858
|
-
cancelOverriddenPendingTest(prevRunTest, testObject);
|
|
1859
|
-
useSetTestAtCursor(testObject);
|
|
1860
|
-
useSetNextCursorAt(); // maybe somehow do this only in one place?
|
|
1861
|
-
if (!isFunction(testFn))
|
|
1862
|
-
return testObject;
|
|
1863
|
-
registerTest(testObject);
|
|
1864
|
-
return testObject;
|
|
1897
|
+
return registerPrevRunTest(testObject);
|
|
1865
1898
|
}
|
|
1866
1899
|
var test = assign(testBase, {
|
|
1867
1900
|
each: bindTestEach(testBase),
|
|
1868
1901
|
memo: bindTestMemo(testBase)
|
|
1869
1902
|
});
|
|
1870
1903
|
|
|
1871
|
-
var VERSION = "
|
|
1904
|
+
var VERSION = "4.0.0-dev-deabb8";
|
|
1872
1905
|
|
|
1873
1906
|
exports.VERSION = VERSION;
|
|
1874
1907
|
exports.create = create;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=function(){return(n=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)};function t(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||t)}var r=Object.assign;function e(n){return"function"==typeof n}function u(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function i(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return e(n)?n.apply(void 0,t):n}function o(n,t){var r;return null!==(r=i(n))&&void 0!==r?r:t}function s(n,t){return n={pass:n},t&&(n.message=t),n}function a(){return s(!1)}function f(){return s(!0)}function c(n){return o(n,a())}function l(n){return o(n,f())}function p(n,t){try{return n.run(t)}catch(n){return a()}}function v(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){(t=p(t,n)).pass||r(t)})))}function g(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return c(u(t,(function(t,r){(t=p(t,n)).pass&&r(t)})))}function d(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){p(t,n).pass&&r(a())})))}function h(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function y(n,t){return n.length===Number(t)}var m=h(y);function N(n,t){return n.length>Number(t)}function b(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(N(e,1))return!1;(t=p(t,n)).pass&&e.push(t)})),s(y(e,1))}function E(n){return null===n}var x=h(E);function C(n){return void 0===n}var w=h(C);function O(n,t){return C(n)||E(n)?f():p(t,n)}function S(n){return String(n)===n}function k(n,t){return S(n)&&S(t)&&n.endsWith(t)}var P=h(k);function T(n,t){return n===t}var F=h(T);function A(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var W=h(A);function j(n,t){return A(n)&&A(t)&&Number(n)>Number(t)}function I(n,t){return A(n)&&A(t)&&Number(n)>=Number(t)}function R(n,t){return!!(Array.isArray(t)||S(t)&&S(n))&&-1!==t.indexOf(n)}var q=h(R);function B(n){return!!Array.isArray(n)}var G=h(B);function K(n,t){return A(n)&&A(t)&&Number(n)<=Number(t)}function X(n,t,r){return I(n,t)&&K(n,r)}var D=h(X);function U(n){return!!n===n}var z=h(U);function J(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function L(n){return"number"==typeof n}var M=h(L);function V(n){if(n){if(L(n))return 0===n;if(J(n,"length"))return y(n,0);if("object"==typeof n)return y(Object.keys(n),0)}return!0}var _=h(V),Y=function(n){return!!A(n)&&0==n%2};function H(n){return Number.isNaN(n)}var Q=h(H);function Z(n){return!!A(n)&&0>Number(n)}var $=h(Z),nn=function(n){return!!A(n)&&0!=n%2},tn=h(S);function rn(n){return!!n}var en=h(rn);function un(n,t){return A(n)&&A(t)&&Number(n)<Number(t)}function on(n,t){return n.length>=Number(t)}function sn(n,t){return t instanceof RegExp?t.test(n):!!S(t)&&new RegExp(t).test(n)}var an=h(sn);function fn(n,t){return A(n)&&A(t)&&Number(n)===Number(t)}var cn=h(fn);function ln(n,t){try{return t(n)}catch(n){return!1}}function pn(n,t){return n.length<Number(t)}function vn(n,t){return n.length<=Number(t)}function gn(n,t){return S(n)&&S(t)&&n.startsWith(t)}var dn=h(gn);function hn(n,t){throw Error(o(t,n))}function yn(n){function t(t,i){var o,s,a=e();return t=r({},a||{},null!==(o=null==n?void 0:n(t,a))&&void 0!==o?o:t),o=u.ctx=Object.freeze(t),u.ancestry.unshift(o),i=i(o),u.ancestry.shift(),u.ctx=null!==(s=u.ancestry[0])&&void 0!==s?s:null,i}function e(){return u.ctx}var u={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:e,useX:function(n){var t;return null!==(t=u.ctx)&&void 0!==t?t:hn(o(n,"Context was used after it was closed"))}}}var mn=yn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return function(n){return n?{value:n.value,meta:n.meta,parent:n.parent}:n}(t)}}):t:r(e,{parent:Nn})}));function Nn(){return null}function bn(n,t){return l(u(n,(function(n,r,e){(e=mn.run({value:n,set:!0,meta:{index:e}},(function(){return p(t,n)}))).pass||r(e)})))}function En(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=mn.run({value:e,set:!0,meta:{key:r}},(function(){return p(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return f()}function xn(n,t){var r=En(n,t);if(!r.pass)return r;for(var e in n)if(!J(t,e))return a();return f()}var Cn=r({condition:ln,doesNotEndWith:P,doesNotStartWith:dn,endsWith:k,equals:T,greaterThan:j,greaterThanOrEquals:I,gt:j,gte:I,inside:R,isArray:B,isBetween:X,isBoolean:U,isEmpty:V,isEven:Y,isFalsy:en,isNaN:H,isNegative:Z,isNotArray:G,isNotBetween:D,isNotBoolean:z,isNotEmpty:_,isNotNaN:Q,isNotNull:x,isNotNumber:M,isNotNumeric:W,isNotString:tn,isNotUndefined:w,isNull:E,isNumber:L,isNumeric:A,isOdd:nn,isPositive:$,isString:S,isTruthy:rn,isUndefined:C,lengthEquals:y,lengthNotEquals:m,lessThan:un,lessThanOrEquals:K,longerThan:N,longerThanOrEquals:on,lt:un,lte:K,matches:sn,notEquals:F,notInside:q,notMatches:an,numberEquals:fn,numberNotEquals:cn,shorterThan:pn,shorterThanOrEquals:vn,startsWith:gn},{allOf:v,anyOf:g,noneOf:d,oneOf:b,optional:O},{shape:xn,loose:En,isArrayOf:bn});function wn(n){return Cn[n]}function On(n){for(var t in Cn){var r=wn(t);e(r)&&n(t,r)}}function Sn(){return"function"==typeof Proxy}function kn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return Pn(n),U(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u)))}function Pn(n){U(n)||n&&U(n.pass)||hn("Incorrect return value for rule: "+JSON.stringify(n))}function Tn(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=kn.apply(void 0,t([mn.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!V(o.message))throw o.message;hn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!Sn())return On((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=wn(t))return r(u,n,t)}});return u}function Fn(n){var r,e=[];return function n(o){return function(){for(var a=[],f=0;f<arguments.length;f++)a[f]=arguments[f];var c=wn(o);e.push((function(n){return kn.apply(void 0,t([c.apply(void 0,t([n],a)),o,n],a))}));var p={run:function(n){return l(u(e,(function(t,e){var u,o=mn.run({value:n},(function(){return t(n)}));o.pass||e(s(!!o.pass,null!==(u=i(r,n,o.message))&&void 0!==u?u:o.message))})))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return Sn()?p=new Proxy(p,{get:function(t,r){return wn(r)?n(r):t[r]}}):(On((function(t){p[t]=n(t)})),p)}}(n)}function An(n){var t,r={};for(t in n)r[t]=jn.optional(n[t]);return r}var Wn,jn=(Wn=n({context:function(){return mn.useX()},extend:function(n){r(Cn,n)}},{partial:An}),Sn()?new Proxy(r(Tn,Wn),{get:function(n,t){return t in n?n[t]:wn(t)?Fn(t):void 0}}):(On((function(n){Wn[n]=Fn(n)})),Wn));function In(n){return[].concat(n)}var Rn=function(n){return function(){return""+n++}}(0);var qn=yn((function(n,t){return t?null:r({},{exclusion:{tests:{},groups:{}}},n)}));function Bn(n,t){return!!t&&!Gn(n,t)}function Gn(n,t){return!(!t||n.fieldName!==t)}function Kn(n){void 0===n&&(n=10);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),t.length>n&&(t.length=n),u)};return r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return y(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function Xn(){return zn().suiteId()}function Dn(){return zn().testCallbacks()}function Un(){return zn().optionalFields()}function zn(){return qn.useX().stateRef}function Jn(){return zn().testObjects()}function Ln(){return zn().prevTestObjects()}function Mn(n){var t=Yn()[0];return Vn(n=o(Ln()[0][t],n)),n}function Vn(n){var t=Yn()[0],r=Jn();n!==r[0][t]&&(0,r[1])((function(r){return(r=r.slice(0))[t]=n,r}))}function _n(){(0,Yn()[1])((function(n){return n+1}))}function Yn(){return zn().testObjectsCursor()}function Hn(n){return!!Un()[0][n]}function Qn(){return Jn()[0].filter((function(n){return n.isPending()}))}function Zn(n){var t=Qn();return!V(t)&&(n?t.some((function(t){return Gn(t,n)})):_(t))}function $n(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function nt(n,t){return function(n,t){return!!n!=!!t}("warnings"===n,t.warns)}function tt(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return function(n,t,r,e){return!!(function(n,t){return!(!t||n.groupName===t)}(n,r)||Bn(n,e)||nt(t,n))}(r,t,i,o)||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function rt(n){return ut("errors",n)}function et(n){return ut("warnings",n)}function ut(n,t){return n=tt(n,Jn()[0],{fieldName:t}),t?n[t]:n}function it(n,t){return n=st("errors",n,t),t?n[t]:n}function ot(n,t){return n=st("warnings",n,t),t?n[t]:n}function st(n,t,r){return t||hn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),tt(n,Jn()[0],{group:t,fieldName:r})}function at(n,t,r){return!(!n.hasFailures()||Bn(n,r)||nt(t,n))}function ft(n){return lt("errors",n)}function ct(n){return lt("warnings",n)}function lt(n,t){return Jn()[0].some((function(r){return at(r,n,t)}))}function pt(n,t){return gt("errors",n,t)}function vt(n,t){return gt("warnings",n,t)}function gt(n,t,r){return Jn()[0].some((function(e){return t===e.groupName&&at(e,n,r)}))}function dt(n,t){return!n.hasErrors(t)&&(!(V(Jn()[0])||function(n,t){return!!t&&V(n.tests[t])}(n,t)||_(Qn().filter((function(n){return!Bn(n,t)&&!Hn(n.fieldName)}))))&&function(n){return Jn()[0].every((function(t){return!(!Bn(t,n)&&!Hn(t.fieldName))||t.isTested()}))}(t))}var ht=Kn(20);function yt(){var n=Jn()[0],t={stateRef:zn()};return ht([n],qn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return Jn()[0].forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=$n(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=$n(n.groups[e],t))})),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}(n)}(),{getErrors:qn.bind(t,rt),getErrorsByGroup:qn.bind(t,it),getWarnings:qn.bind(t,et),getWarningsByGroup:qn.bind(t,ot),hasErrors:qn.bind(t,ft),hasErrorsByGroup:qn.bind(t,pt),hasWarnings:qn.bind(t,ct),hasWarningsByGroup:qn.bind(t,vt),isValid:qn.bind(t,(function(n){return dt(yt(),n)}))})})))}var mt=Kn(20);function Nt(){var n=Jn()[0],t={stateRef:zn()};return mt([n],qn.bind(t,(function(){return r({},yt(),{done:qn.bind(t,xt)})})))}function bt(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function Et(n){return!(Zn()&&(!n||Zn(n)))}var xt=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=Nt(),bt(r,n,t))return t;var e=function(){return r(yt())};return Et(n)?(e(),t):(Ct(e,n),t)};function Ct(n,t){var r=qn.bind({},n);(0,Dn()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function wt(n){return kt("only","tests",n)}function Ot(n){return kt("skip","tests",n)}function St(n){var t=n.fieldName;n=n.groupName;var r=qn.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){if(function(n){var t=qn.useX().exclusion.groups;if(J(t,n))return!1===t[n];for(var r in t)if(!0===t[r])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!u&&(!!Pt(e)||!1===e[t])}return!u&&Pt(e)}function kt(n,t,r){var e=qn.useX("hook called outside of a running suite.");r&&In(r).forEach((function(r){S(r)&&(e.exclusion[t][r]="only"===n)}))}function Pt(n){for(var t in n)if(!0===n[t])return!0;return!1}wt.group=function(n){return kt("only","groups",n)},Ot.group=function(n){return kt("skip","groups",n)};function Tt(n){hn('group initialization error. Expected "'+n+'" to be a string.',"group name must be a string")}function Ft(n,t){return C(n)&&S(t)}var At=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=Rn(),this.warns=!1,this.status=Wt,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){Ft(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isCanceled()||(this.status=n)},n.prototype.setPending=function(){this.setStatus(Bt)},n.prototype.fail=function(){this.setStatus(this.warns?Rt:It)},n.prototype.done=function(){this.isWarning()||this.isCanceled()||this.isFailing()||this.setStatus(qt)},n.prototype.warn=function(){this.warns=!0},n.prototype.skip=function(){this.setStatus(jt)},n.prototype.cancel=function(){this.setStatus(Gt),function(n){(0,Jn()[1])((function(t){return In(function(n,t){return-1!==(t=n.indexOf(t))&&n.splice(t,1),n}(t,n))}))}(this)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===Bt},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isFailing=function(){return this.status===It},n.prototype.isCanceled=function(){return this.status===Gt},n.prototype.isSkipped=function(){return this.status===jt},n.prototype.isPassing=function(){return this.status===qt},n.prototype.isWarning=function(){return this.status===Rt},n}(),Wt="UNTESTED",jt="SKIPPED",It="FAILED",Rt="WARNING",qt="PASSING",Bt="PENDING",Gt="CANCELED";function Kt(n,t){(function(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName})(n,t)&&n.isPending()&&t!==n&&n.cancel()}function Xt(n){return n&&e(n.then)}function Dt(n){return n.forEach((function(n){return n()}))}function Ut(n){var t=n.asyncTest,r=n.message;if(Xt(t)){var e=zn(),u=qn.bind({stateRef:e},(function(){n.done(),n.isCanceled()||(function(n){var t=Dn()[0].fieldCallbacks;n&&!Zn(n)&&Array.isArray(t[n])&&Dt(t[n])}(n.fieldName),function(){var n=Dn()[0].doneCallbacks;Zn()||Dt(n)}())}));e=qn.bind({stateRef:e},(function(t){n.isCanceled()||(n.message=S(t)?t:r,n.fail(),(0,Jn()[1])((function(n){return n.slice(0)})),u())}));try{t.then(u,e)}catch(n){e()}}}function zt(n){var t=function(n){return qn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){Ft(n.message,r)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{Xt(t)?(n.asyncTest=t,n.setPending(),Ut(n)):n.done()}catch(r){hn("Your test function "+n.fieldName+" returned "+JSON.stringify(t)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}function Jt(n){n&&Xt(n.asyncTest)&&(n.setPending(),Ut(n))}function Lt(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var u=qn.useX();return u=Mn(r=new At(n,t,{message:r,groupName:null==u?void 0:u.groupName})),St(r)?(r.skip(),_n(),u):(Kt(u,r),Vn(r),_n(),e(t)?(zt(r),r):r)}var Mt=r(Lt,{each:function(n){return function(r){return Array.isArray(r)||hn("test.each: Expected table to be an array."),function(e){for(var u=[],o=1;o<arguments.length;o++)u[o-1]=arguments[o];var s=(u=u.reverse())[0],a=u[1];return r.map((function(r){return r=In(r),n(i.apply(void 0,t([e],r)),i.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}}}(Lt),memo:function(n){var t=Kn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Xn()[0];var i=Yn()[0],o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),E(u=t.get(e))?t(e,(function(){return n(r,s,o)})):(u=Mn(e=u[1]),St(e)?(_n(),u):(Kt(u,e),Vn(e),_n(),Jt(e),e))}}(Lt)});exports.VERSION="3.3.0-dev-549cb1",exports.create=function(n){e(n)||hn("Suite initialization error. Expected `tests` to be a function.");var t=[],u=function(n){function t(n,t){return u.references.push(),r(n,i(t)),function(){return[u.references[n],function(t){return r(n,i(t,u.references[n]))}]}}function r(t,r){var i=u.references[t];u.references[t]=r,e(t=o[t][1])&&t(r,i),e(n)&&n()}var u={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){u.references=[],o.forEach((function(n,r){return t(r,n[0])}))}}}((function(){t.forEach((function(n){return n({suiteState:o,type:"suiteStateUpdate"})}))})),o=function(n,t){var r=t.suiteId;return{optionalFields:n.registerStateKey((function(){return{}})),prevTestObjects:n.registerStateKey((function(){return[]})),suiteId:n.registerStateKey((function(){return r})),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(){return[]})),testObjectsCursor:n.registerStateKey((function(){return 0}))}}(u,{suiteId:Rn()});return r(qn.bind({stateRef:o},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=Jn()[0];return r=Ln()[1],u.reset(),r((function(){return e})),n.apply(void 0,t),Nt()})),{get:qn.bind({stateRef:o},yt),remove:qn.bind({stateRef:o},(function(n){In(Jn()[0]).forEach((function(t){Gn(t,n)&&t.cancel()}))})),reset:u.reset,subscribe:function(n){e(n)&&(t.push(n),n({type:"suiteSubscribeInit",suiteState:o}))}})},exports.enforce=jn,exports.group=function(n,t){S(n)||Tt(n),e(t)||Tt(t),qn.bind({groupName:n},t)()},exports.only=wt,exports.optional=function(n){(0,Un()[1])((function(t){return In(n).forEach((function(n){t[n]=!0})),t}))},exports.skip=Ot,exports.skipWhen=function(n,t){qn.run({skipped:i(n)},(function(){return t()}))},exports.test=Mt,exports.warn=function(){var n=qn.useX("warn hook called outside of a running suite.");n.currentTest||hn("warn called outside of a test."),n.currentTest.warn()};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=function(){return n=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n},n.apply(this,arguments)};function t(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||t)}var r=Object.assign;function e(n){return"function"==typeof n}function u(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function i(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return e(n)?n.apply(void 0,t):n}function o(n,t){var r;return null!==(r=i(n))&&void 0!==r?r:t}function s(n,t){return n={pass:n},t&&(n.message=t),n}function a(){return s(!1)}function f(){return s(!0)}function c(n){return o(n,a())}function l(n){return o(n,f())}function p(n,t){try{return n.run(t)}catch(n){return a()}}function v(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){(t=p(t,n)).pass||r(t)})))}function g(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return c(u(t,(function(t,r){(t=p(t,n)).pass&&r(t)})))}function d(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){p(t,n).pass&&r(a())})))}function h(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function y(n,t){return n.length===Number(t)}var m=h(y);function N(n,t){return n.length>Number(t)}function b(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(N(e,1))return!1;(t=p(t,n)).pass&&e.push(t)})),s(y(e,1))}function E(n){return null===n}var C=h(E);function O(n){return void 0===n}var x=h(O);function w(n,t){return O(n)||E(n)?f():p(t,n)}function S(n){return String(n)===n}function T(n,t){return S(n)&&S(t)&&n.endsWith(t)}var P=h(T);function k(n,t){return n===t}var F=h(k);function W(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var A=h(W);function j(n,t){return W(n)&&W(t)&&Number(n)>Number(t)}function I(n,t){return W(n)&&W(t)&&Number(n)>=Number(t)}function R(n,t){return!!(Array.isArray(t)||S(t)&&S(n))&&-1!==t.indexOf(n)}var q=h(R);function B(n){return!!Array.isArray(n)}var D=h(B);function G(n,t){return W(n)&&W(t)&&Number(n)<=Number(t)}function X(n,t,r){return I(n,t)&&G(n,r)}var K=h(X);function _(n){return!!n===n}var L=h(_);function M(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function U(n){return"number"==typeof n}var J=h(U);function z(n){if(n){if(U(n))return 0===n;if(M(n,"length"))return y(n,0);if("object"==typeof n)return y(Object.keys(n),0)}return!0}var V=h(z),Y=function(n){return!!W(n)&&0==n%2};function H(n){return Number.isNaN(n)}var Q=h(H);function Z(n){return!!W(n)&&0>Number(n)}var $=h(Z),nn=function(n){return!!W(n)&&0!=n%2},tn=h(S);function rn(n){return!!n}var en=h(rn);function un(n,t){return W(n)&&W(t)&&Number(n)<Number(t)}function on(n,t){return n.length>=Number(t)}function sn(n,t){return t instanceof RegExp?t.test(n):!!S(t)&&new RegExp(t).test(n)}var an=h(sn);function fn(n,t){return W(n)&&W(t)&&Number(n)===Number(t)}var cn=h(fn);function ln(n,t){try{return t(n)}catch(n){return!1}}function pn(n,t){return n.length<Number(t)}function vn(n,t){return n.length<=Number(t)}function gn(n,t){return S(n)&&S(t)&&n.startsWith(t)}var dn=h(gn);function hn(n,t){throw Error(o(t,n))}function yn(n){function t(t,i){var o,s,a=e();return t=r({},a||{},null!==(o=null==n?void 0:n(t,a))&&void 0!==o?o:t),o=u.ctx=Object.freeze(t),u.ancestry.unshift(o),i=i(o),u.ancestry.shift(),u.ctx=null!==(s=u.ancestry[0])&&void 0!==s?s:null,i}function e(){return u.ctx}var u={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:e,useX:function(n){var t;return null!==(t=u.ctx)&&void 0!==t?t:hn(o(n,"Context was used after it was closed"))}}}var mn=yn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return function(n){return n?{value:n.value,meta:n.meta,parent:n.parent}:n}(t)}}):t:r(e,{parent:Nn})}));function Nn(){return null}function bn(n,t){return l(u(n,(function(n,r,e){(e=mn.run({value:n,set:!0,meta:{index:e}},(function(){return p(t,n)}))).pass||r(e)})))}function En(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=mn.run({value:e,set:!0,meta:{key:r}},(function(){return p(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return f()}function Cn(n,t){var r=En(n,t);if(!r.pass)return r;for(var e in n)if(!M(t,e))return a();return f()}var On=r({condition:ln,doesNotEndWith:P,doesNotStartWith:dn,endsWith:T,equals:k,greaterThan:j,greaterThanOrEquals:I,gt:j,gte:I,inside:R,isArray:B,isBetween:X,isBoolean:_,isEmpty:z,isEven:Y,isFalsy:en,isNaN:H,isNegative:Z,isNotArray:D,isNotBetween:K,isNotBoolean:L,isNotEmpty:V,isNotNaN:Q,isNotNull:C,isNotNumber:J,isNotNumeric:A,isNotString:tn,isNotUndefined:x,isNull:E,isNumber:U,isNumeric:W,isOdd:nn,isPositive:$,isString:S,isTruthy:rn,isUndefined:O,lengthEquals:y,lengthNotEquals:m,lessThan:un,lessThanOrEquals:G,longerThan:N,longerThanOrEquals:on,lt:un,lte:G,matches:sn,notEquals:F,notInside:q,notMatches:an,numberEquals:fn,numberNotEquals:cn,shorterThan:pn,shorterThanOrEquals:vn,startsWith:gn},{allOf:v,anyOf:g,noneOf:d,oneOf:b,optional:w},{shape:Cn,loose:En,isArrayOf:bn});function xn(n){return On[n]}function wn(n){for(var t in On){var r=xn(t);e(r)&&n(t,r)}}function Sn(){return"function"==typeof Proxy}function Tn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return Pn(n),_(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u,!1)))}function Pn(n){_(n)||n&&_(n.pass)||hn("Incorrect return value for rule: "+JSON.stringify(n))}function kn(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=Tn.apply(void 0,t([mn.run({value:n},(function(){return e.apply(void 0,t([n],i,!1))})),u,n],i,!1))).pass){if(!z(o.message))throw o.message;hn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!Sn())return wn((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=xn(t))return r(u,n,t)}});return u}function Fn(n){var r,e=[];return function n(o){return function(){for(var a=[],f=0;f<arguments.length;f++)a[f]=arguments[f];var c=xn(o);e.push((function(n){return Tn.apply(void 0,t([c.apply(void 0,t([n],a,!1)),o,n],a,!1))}));var p={run:function(n){return l(u(e,(function(t,e){var u,o=mn.run({value:n},(function(){return t(n)}));o.pass||e(s(!!o.pass,null!==(u=i(r,n,o.message))&&void 0!==u?u:o.message))})))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return Sn()?p=new Proxy(p,{get:function(t,r){return xn(r)?n(r):t[r]}}):(wn((function(t){p[t]=n(t)})),p)}}(n)}function Wn(n){var t,r={};for(t in n)r[t]=jn.optional(n[t]);return r}var An,jn=(An=n({context:function(){return mn.useX()},extend:function(n){r(On,n)}},{partial:Wn}),Sn()?new Proxy(r(kn,An),{get:function(n,t){return t in n?n[t]:xn(t)?Fn(t):void 0}}):(wn((function(n){An[n]=Fn(n)})),An));function In(n){return[].concat(n)}var Rn=function(n){return function(){return""+n++}}(0);var qn=yn((function(n,t){return t?null:r({},{exclusion:{tests:{},groups:{}}},n)}));function Bn(n,t){return!!t&&!Dn(n,t)}function Dn(n,t){return!(!t||n.fieldName!==t)}function Gn(n){void 0===n&&(n=10);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),t.length>n&&(t.length=n),u)};return r.invalidate=function(n){var r=t.findIndex((function(t){var r=t[0];return y(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<r&&t.splice(r,1)},r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return y(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function Xn(){return Ln().suiteId()}function Kn(){return Ln().testCallbacks()}function _n(){return Ln().optionalFields()}function Ln(){return qn.useX().stateRef}function Mn(){return Ln().testObjects()}function Un(){return Ln().prevTestObjects()}function Jn(n){var t=Vn()[0],r=Mn();n!==r[0][t]&&(0,r[1])((function(r){return(r=r.slice(0))[t]=n,r}))}function zn(){(0,Vn()[1])((function(n){return n+1}))}function Vn(){return Ln().testObjectsCursor()}function Yn(n){return!!_n()[0][n]}function Hn(){return Mn()[0].filter((function(n){return n.isPending()}))}function Qn(n){var t=Hn();return!z(t)&&(n?t.some((function(t){return Dn(t,n)})):V(t))}function Zn(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function $n(n,t){return function(n,t){return!!n!=!!t}("warnings"===n,t.warns)}function nt(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return function(n,t,r,e){return!!(function(n,t){return!(!t||n.groupName===t)}(n,r)||Bn(n,e)||$n(t,n))}(r,t,i,o)||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function tt(n,t){return t?n[t]:n}function rt(n){return ut("errors",n)}function et(n){return ut("warnings",n)}function ut(n,t){return tt(n=nt(n,Mn()[0],{fieldName:t}),t)}function it(n,t){return tt(n=st("errors",n,t),t)}function ot(n,t){return tt(n=st("warnings",n,t),t)}function st(n,t,r){return t||hn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),nt(n,Mn()[0],{group:t,fieldName:r})}function at(n,t,r){return!(!n.hasFailures()||Bn(n,r)||$n(t,n))}function ft(n){return lt("errors",n)}function ct(n){return lt("warnings",n)}function lt(n,t){return Mn()[0].some((function(r){return at(r,n,t)}))}function pt(n,t){return gt("errors",n,t)}function vt(n,t){return gt("warnings",n,t)}function gt(n,t,r){return Mn()[0].some((function(e){return t===e.groupName&&at(e,n,r)}))}function dt(n,t){return!n.hasErrors(t)&&(!(z(Mn()[0])||function(n,t){return!!t&&z(n.tests[t])}(n,t)||V(Hn().filter((function(n){return!Bn(n,t)&&!Yn(n.fieldName)}))))&&function(n){return Mn()[0].every((function(t){return!(!Bn(t,n)&&!Yn(t.fieldName))||t.isTested()}))}(t))}var ht=Gn(20);function yt(){var n=Mn()[0],t={stateRef:Ln()};return ht([n],qn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return Mn()[0].forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Zn(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Zn(n.groups[e],t))})),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}(n)}(),{getErrors:qn.bind(t,rt),getErrorsByGroup:qn.bind(t,it),getWarnings:qn.bind(t,et),getWarningsByGroup:qn.bind(t,ot),hasErrors:qn.bind(t,ft),hasErrorsByGroup:qn.bind(t,pt),hasWarnings:qn.bind(t,ct),hasWarningsByGroup:qn.bind(t,vt),isValid:qn.bind(t,(function(n){return dt(yt(),n)}))})})))}var mt=Gn(20);function Nt(){var n=Mn()[0],t={stateRef:Ln()};return mt([n],qn.bind(t,(function(){return r({},yt(),{done:qn.bind(t,Ot)})})))}function bt(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function Et(n){return!(Qn()&&(!n||Qn(n)))}var Ct,Ot=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=Nt(),bt(r,n,t))return t;var e=function(){return r(yt())};return Et(n)?(e(),t):(xt(e,n),t)};function xt(n,t){var r=qn.bind({},n);(0,Kn()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function wt(n){return n.forEach((function(n){return n()}))}function St(){var n=function(){var n={};return{emit:function(t,r){n[t]&&n[t].forEach((function(n){n(r)}))},on:function(t,r){return n[t]||(n[t]=[]),n[t].push(r),{off:function(){n[t]=n[t].filter((function(n){return n!==r}))}}}}}();return n.on(Ct.TEST_COMPLETED,(function(n){n.isCanceled()||(n.done(),function(n){var t=Kn()[0].fieldCallbacks;n&&!Qn(n)&&Array.isArray(t[n])&&wt(t[n])}(n.fieldName),function(){var n=Kn()[0].doneCallbacks;Qn()||wt(n)}())})),n}function Tt(){var n=qn.useX();return n.bus||hn(),n.bus}(Ct||(Ct={})).TEST_COMPLETED="test_completed";function Pt(n){return Wt("only","tests",n)}function kt(n){return Wt("skip","tests",n)}function Ft(n){var t=n.fieldName;n=n.groupName;var r=qn.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){if(function(n){var t=qn.useX().exclusion.groups;if(M(t,n))return!1===t[n];for(var r in t)if(!0===t[r])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!u&&(!!At(e)||!1===e[t])}return!u&&At(e)}function Wt(n,t,r){var e=qn.useX("hook called outside of a running suite.");r&&In(r).forEach((function(r){S(r)&&(e.exclusion[t][r]="only"===n)}))}function At(n){for(var t in n)if(!0===n[t])return!0;return!1}Pt.group=function(n){return Wt("only","groups",n)},kt.group=function(n){return Wt("skip","groups",n)};function jt(n){hn("Wrong arguments passed to group. Group "+n+".")}function It(n,t){return O(n)&&S(t)}var Rt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=Rn(),this.warns=!1,this.status=qt,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){It(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isCanceled()||(this.status=n)},n.prototype.setPending=function(){this.setStatus(Kt)},n.prototype.fail=function(){this.setStatus(this.warns?Gt:Dt)},n.prototype.done=function(){this.isWarning()||this.isCanceled()||this.isFailing()||this.setStatus(Xt)},n.prototype.warn=function(){this.warns=!0},n.prototype.skip=function(){this.setStatus(Bt)},n.prototype.cancel=function(){this.setStatus(_t),function(n){(0,Mn()[1])((function(t){return In(function(n,t){return-1!==(t=n.indexOf(t))&&n.splice(t,1),n}(t,n))}))}(this)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===Kt},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isUntested=function(){return this.status===qt},n.prototype.isFailing=function(){return this.status===Dt},n.prototype.isCanceled=function(){return this.status===_t},n.prototype.isSkipped=function(){return this.status===Bt},n.prototype.isPassing=function(){return this.status===Xt},n.prototype.isWarning=function(){return this.status===Gt},n}(),qt="UNTESTED",Bt="SKIPPED",Dt="FAILED",Gt="WARNING",Xt="PASSING",Kt="PENDING",_t="CANCELED";function Lt(n){return n&&e(n.then)}function Mt(n){var t=n.asyncTest,r=n.message;if(Lt(t)){var e=Tt().emit,u=Ln(),i=qn.bind({stateRef:u},(function(){e(Ct.TEST_COMPLETED,n)}));u=qn.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=S(t)?t:r,n.fail(),(0,Mn()[1])((function(n){return n.slice(0)})),i())}));try{t.then(i,u)}catch(n){u()}}}function Ut(n){var t=Tt().emit,r=function(n){return qn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){It(n.message,r)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{Lt(r)?(n.asyncTest=r,n.setPending(),Mt(n)):t(Ct.TEST_COMPLETED,n)}catch(t){hn("Your test function "+n.fieldName+" returned "+JSON.stringify(r)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}function Jt(n){var t=function(n){var t=Vn()[0];return Jn(n=o(Un()[0][t],n)),n}(n);return Ft(n)?(n.skip(),zn(),t):(function(n,t){t!==n&&function(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}(n,t)&&n.isPending()&&n.cancel()}(t,n),Jn(n),zn(),function(n){n.isUntested()?Ut(n):Lt(n.asyncTest)&&(n.setPending(),Mt(n))}(n),n)}function zt(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var e=qn.useX();return Jt(t=new Rt(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var Vt=r(zt,{each:function(n){return function(r){return Array.isArray(r)||hn("test.each: Expected table to be an array."),function(e){for(var u=[],o=1;o<arguments.length;o++)u[o-1]=arguments[o];var s=(u=u.reverse())[0],a=u[1];return r.map((function(r){return r=In(r),n(i.apply(void 0,t([e],r,!1)),i.apply(void 0,t([a],r,!1)),(function(){return s.apply(void 0,r)}))}))}}}(zt),memo:function(n){var t=Gn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Xn()[0];var i=Vn()[0],o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),E(u=t.get(e))?t(e,(function(){return n(r,s,o)})):u[1].isCanceled()?(t.invalidate(e),t(e,(function(){return n(r,s,o)}))):Jt(u[1])}}(zt)});exports.VERSION="4.0.0-dev-deabb8",exports.create=function(n){e(n)||hn("Suite initialization error. Expected `tests` to be a function.");var t=St(),u=function(n){function t(n,t){return u.references.push(),r(n,i(t)),function(){return[u.references[n],function(t){return r(n,i(t,u.references[n]))}]}}function r(t,r){var i=u.references[t];u.references[t]=r,e(t=o[t][1])&&t(r,i),e(n)&&n()}var u={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){u.references=[],o.forEach((function(n,r){return t(r,n[0])}))}}}(),o=function(n,t){var r=t.suiteId;return{optionalFields:n.registerStateKey((function(){return{}})),prevTestObjects:n.registerStateKey((function(){return[]})),suiteId:n.registerStateKey((function(){return r})),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(){return[]})),testObjectsCursor:n.registerStateKey((function(){return 0}))}}(u,{suiteId:Rn()});return r(qn.bind({stateRef:o,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=Mn()[0];return r=Un()[1],u.reset(),r((function(){return e})),n.apply(void 0,t),Nt()})),{get:qn.bind({stateRef:o},yt),remove:qn.bind({stateRef:o},(function(n){In(Mn()[0]).forEach((function(t){Dn(t,n)&&t.cancel()}))})),reset:u.reset})},exports.enforce=jn,exports.group=function(n,t){S(n)||jt("name must be a string"),e(t)||jt("callback must be a function"),qn.run({groupName:n},t)},exports.only=Pt,exports.optional=function(n){(0,_n()[1])((function(t){return In(n).forEach((function(n){t[n]=!0})),t}))},exports.skip=kt,exports.skipWhen=function(n,t){qn.run({skipped:i(n)},(function(){return t()}))},exports.test=Vt,exports.warn=function(){var n=qn.useX("warn hook called outside of a running suite.");n.currentTest||hn("warn called outside of a test."),n.currentTest.warn()};
|