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
|
@@ -194,7 +194,7 @@ function compounds() {
|
|
|
194
194
|
return { allOf: allOf, anyOf: anyOf, noneOf: noneOf, oneOf: oneOf, optional: optional$1 };
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
function isStringValue
|
|
197
|
+
function isStringValue(v) {
|
|
198
198
|
return String(v) === v;
|
|
199
199
|
}
|
|
200
200
|
|
|
@@ -605,7 +605,7 @@ function transformResult(result, ruleName, value) {
|
|
|
605
605
|
return ruleReturn(result);
|
|
606
606
|
}
|
|
607
607
|
else {
|
|
608
|
-
return ruleReturn(result.pass, optionalFunctionValue.apply(void 0, __spreadArray([result.message, ruleName, value], args)));
|
|
608
|
+
return ruleReturn(result.pass, optionalFunctionValue.apply(void 0, __spreadArray([result.message, ruleName, value], args, false)));
|
|
609
609
|
}
|
|
610
610
|
}
|
|
611
611
|
function validateResult(result) {
|
|
@@ -639,9 +639,9 @@ function enforceEager(value) {
|
|
|
639
639
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
640
640
|
args[_i] = arguments[_i];
|
|
641
641
|
}
|
|
642
|
-
var transformedResult = transformResult.apply(void 0, __spreadArray([ctx$1.run({ value: value }, function () { return rule.apply(void 0, __spreadArray([value], args)); }),
|
|
642
|
+
var transformedResult = transformResult.apply(void 0, __spreadArray([ctx$1.run({ value: value }, function () { return rule.apply(void 0, __spreadArray([value], args, false)); }),
|
|
643
643
|
ruleName,
|
|
644
|
-
value], args));
|
|
644
|
+
value], args, false));
|
|
645
645
|
if (!transformedResult.pass) {
|
|
646
646
|
if (isEmpty(transformedResult.message)) {
|
|
647
647
|
throwError("enforce/" + ruleName + " failed with " + JSON.stringify(value));
|
|
@@ -671,7 +671,7 @@ function genEnforceLazy(key) {
|
|
|
671
671
|
}
|
|
672
672
|
var rule = getRule(ruleName);
|
|
673
673
|
registeredRules.push(function (value) {
|
|
674
|
-
return transformResult.apply(void 0, __spreadArray([rule.apply(void 0, __spreadArray([value], args)), ruleName, value], args));
|
|
674
|
+
return transformResult.apply(void 0, __spreadArray([rule.apply(void 0, __spreadArray([value], args, false)), ruleName, value], args, false));
|
|
675
675
|
});
|
|
676
676
|
var proxy = {
|
|
677
677
|
run: function (value) {
|
|
@@ -891,10 +891,6 @@ function matchingFieldName(testObject, fieldName) {
|
|
|
891
891
|
function createCache(maxSize) {
|
|
892
892
|
if (maxSize === void 0) { maxSize = 10; }
|
|
893
893
|
var cacheStorage = [];
|
|
894
|
-
/**
|
|
895
|
-
* @param {any[]} deps dependency array.
|
|
896
|
-
* @param {Function} cache action function.
|
|
897
|
-
*/
|
|
898
894
|
var cache = function (deps, cacheAction) {
|
|
899
895
|
var cacheHit = cache.get(deps);
|
|
900
896
|
// cache hit is not null
|
|
@@ -907,10 +903,17 @@ function createCache(maxSize) {
|
|
|
907
903
|
}
|
|
908
904
|
return result;
|
|
909
905
|
};
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
906
|
+
// invalidate an item in the cache by its dependencies
|
|
907
|
+
cache.invalidate = function (deps) {
|
|
908
|
+
var index = cacheStorage.findIndex(function (_a) {
|
|
909
|
+
var cachedDeps = _a[0];
|
|
910
|
+
return lengthEquals(deps, cachedDeps.length) &&
|
|
911
|
+
deps.every(function (dep, i) { return dep === cachedDeps[i]; });
|
|
912
|
+
});
|
|
913
|
+
if (index > -1)
|
|
914
|
+
cacheStorage.splice(index, 1);
|
|
915
|
+
};
|
|
916
|
+
// Retrieves an item from the cache.
|
|
914
917
|
cache.get = function (deps) {
|
|
915
918
|
return cacheStorage[cacheStorage.findIndex(function (_a) {
|
|
916
919
|
var cachedDeps = _a[0];
|
|
@@ -1103,6 +1106,13 @@ function noMatch(testObject, severity, group, fieldName) {
|
|
|
1103
1106
|
return false;
|
|
1104
1107
|
}
|
|
1105
1108
|
|
|
1109
|
+
function getFailuresArrayOrObject(group, fieldName) {
|
|
1110
|
+
if (fieldName) {
|
|
1111
|
+
return group[fieldName];
|
|
1112
|
+
}
|
|
1113
|
+
return group;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1106
1116
|
function getErrors(fieldName) {
|
|
1107
1117
|
return getFailures('errors', fieldName);
|
|
1108
1118
|
}
|
|
@@ -1117,25 +1127,16 @@ function getFailures(severityKey, fieldName) {
|
|
|
1117
1127
|
var failureMessages = collectFailureMessages(severityKey, testObjects, {
|
|
1118
1128
|
fieldName: fieldName
|
|
1119
1129
|
});
|
|
1120
|
-
|
|
1121
|
-
return failureMessages[fieldName];
|
|
1122
|
-
}
|
|
1123
|
-
return failureMessages;
|
|
1130
|
+
return getFailuresArrayOrObject(failureMessages, fieldName);
|
|
1124
1131
|
}
|
|
1125
1132
|
|
|
1126
1133
|
function getErrorsByGroup(groupName, fieldName) {
|
|
1127
1134
|
var errors = getByGroup('errors', groupName, fieldName);
|
|
1128
|
-
|
|
1129
|
-
return errors[fieldName];
|
|
1130
|
-
}
|
|
1131
|
-
return errors;
|
|
1135
|
+
return getFailuresArrayOrObject(errors, fieldName);
|
|
1132
1136
|
}
|
|
1133
1137
|
function getWarningsByGroup(groupName, fieldName) {
|
|
1134
|
-
var
|
|
1135
|
-
|
|
1136
|
-
return errors[fieldName];
|
|
1137
|
-
}
|
|
1138
|
-
return errors;
|
|
1138
|
+
var warnings = getByGroup('warnings', groupName, fieldName);
|
|
1139
|
+
return getFailuresArrayOrObject(warnings, fieldName);
|
|
1139
1140
|
}
|
|
1140
1141
|
/**
|
|
1141
1142
|
* Gets failure messages by group.
|
|
@@ -1317,22 +1318,90 @@ function deferDoneCallback(doneCallback, fieldName) {
|
|
|
1317
1318
|
});
|
|
1318
1319
|
}
|
|
1319
1320
|
|
|
1321
|
+
function createBus() {
|
|
1322
|
+
var listeners = {};
|
|
1323
|
+
return {
|
|
1324
|
+
emit: function (event, data) {
|
|
1325
|
+
if (!listeners[event]) {
|
|
1326
|
+
return;
|
|
1327
|
+
}
|
|
1328
|
+
listeners[event].forEach(function (listener) {
|
|
1329
|
+
listener(data);
|
|
1330
|
+
});
|
|
1331
|
+
},
|
|
1332
|
+
on: function (event, handler) {
|
|
1333
|
+
if (!listeners[event]) {
|
|
1334
|
+
listeners[event] = [];
|
|
1335
|
+
}
|
|
1336
|
+
listeners[event].push(handler);
|
|
1337
|
+
return {
|
|
1338
|
+
off: function () {
|
|
1339
|
+
listeners[event] = listeners[event].filter(function (h) { return h !== handler; });
|
|
1340
|
+
}
|
|
1341
|
+
};
|
|
1342
|
+
}
|
|
1343
|
+
};
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1346
|
+
function callEach(arr) {
|
|
1347
|
+
return arr.forEach(function (fn) { return fn(); });
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
/**
|
|
1351
|
+
* Runs done callback per field when async tests are finished running.
|
|
1352
|
+
*/
|
|
1353
|
+
function runFieldCallbacks(fieldName) {
|
|
1354
|
+
var fieldCallbacks = useTestCallbacks()[0].fieldCallbacks;
|
|
1355
|
+
if (fieldName) {
|
|
1356
|
+
if (!hasRemainingTests(fieldName) &&
|
|
1357
|
+
Array.isArray(fieldCallbacks[fieldName])) {
|
|
1358
|
+
callEach(fieldCallbacks[fieldName]);
|
|
1359
|
+
}
|
|
1360
|
+
}
|
|
1361
|
+
}
|
|
1362
|
+
/**
|
|
1363
|
+
* Runs unlabelled done callback when async tests are finished running.
|
|
1364
|
+
*/
|
|
1365
|
+
function runDoneCallbacks() {
|
|
1366
|
+
var doneCallbacks = useTestCallbacks()[0].doneCallbacks;
|
|
1367
|
+
if (!hasRemainingTests()) {
|
|
1368
|
+
callEach(doneCallbacks);
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
function initBus() {
|
|
1373
|
+
var bus = createBus();
|
|
1374
|
+
bus.on(Events.TEST_COMPLETED, function (testObject) {
|
|
1375
|
+
if (testObject.isCanceled()) {
|
|
1376
|
+
return;
|
|
1377
|
+
}
|
|
1378
|
+
testObject.done();
|
|
1379
|
+
runFieldCallbacks(testObject.fieldName);
|
|
1380
|
+
runDoneCallbacks();
|
|
1381
|
+
});
|
|
1382
|
+
return bus;
|
|
1383
|
+
}
|
|
1384
|
+
function useBus() {
|
|
1385
|
+
var context = ctx.useX();
|
|
1386
|
+
if (!context.bus) {
|
|
1387
|
+
throwError();
|
|
1388
|
+
}
|
|
1389
|
+
return context.bus;
|
|
1390
|
+
}
|
|
1391
|
+
var Events;
|
|
1392
|
+
(function (Events) {
|
|
1393
|
+
Events["TEST_COMPLETED"] = "test_completed";
|
|
1394
|
+
})(Events || (Events = {}));
|
|
1395
|
+
|
|
1320
1396
|
// eslint-disable-next-line max-lines-per-function
|
|
1321
1397
|
function create(suiteCallback) {
|
|
1322
1398
|
if (!isFunction(suiteCallback)) {
|
|
1323
1399
|
throwError('Suite initialization error. Expected `tests` to be a function.');
|
|
1324
1400
|
}
|
|
1325
|
-
var
|
|
1326
|
-
var state = createState(
|
|
1327
|
-
handlers.forEach(function (fn) {
|
|
1328
|
-
return fn({
|
|
1329
|
-
suiteState: stateRef,
|
|
1330
|
-
type: 'suiteStateUpdate'
|
|
1331
|
-
});
|
|
1332
|
-
});
|
|
1333
|
-
});
|
|
1401
|
+
var bus = initBus();
|
|
1402
|
+
var state = createState();
|
|
1334
1403
|
var stateRef = createStateRef(state, { suiteId: genId() });
|
|
1335
|
-
var suite = assign(ctx.bind({ stateRef: stateRef }, function () {
|
|
1404
|
+
var suite = assign(ctx.bind({ stateRef: stateRef, bus: bus }, function () {
|
|
1336
1405
|
var args = [];
|
|
1337
1406
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
1338
1407
|
args[_i] = arguments[_i];
|
|
@@ -1356,16 +1425,7 @@ function create(suiteCallback) {
|
|
|
1356
1425
|
}
|
|
1357
1426
|
});
|
|
1358
1427
|
}),
|
|
1359
|
-
reset: state.reset
|
|
1360
|
-
subscribe: function (handler) {
|
|
1361
|
-
if (!isFunction(handler))
|
|
1362
|
-
return;
|
|
1363
|
-
handlers.push(handler);
|
|
1364
|
-
handler({
|
|
1365
|
-
type: 'suiteSubscribeInit',
|
|
1366
|
-
suiteState: stateRef
|
|
1367
|
-
});
|
|
1368
|
-
}
|
|
1428
|
+
reset: state.reset
|
|
1369
1429
|
});
|
|
1370
1430
|
return suite;
|
|
1371
1431
|
}
|
|
@@ -1497,16 +1557,16 @@ function skipWhen(conditional, callback) {
|
|
|
1497
1557
|
*/
|
|
1498
1558
|
function group(groupName, tests) {
|
|
1499
1559
|
if (!isStringValue(groupName)) {
|
|
1500
|
-
throwGroupError(
|
|
1560
|
+
throwGroupError('name must be a string');
|
|
1501
1561
|
}
|
|
1502
1562
|
if (!isFunction(tests)) {
|
|
1503
|
-
throwGroupError(
|
|
1563
|
+
throwGroupError('callback must be a function');
|
|
1504
1564
|
}
|
|
1505
1565
|
// Running with the context applied
|
|
1506
|
-
ctx.
|
|
1566
|
+
ctx.run({ groupName: groupName }, tests);
|
|
1507
1567
|
}
|
|
1508
|
-
function throwGroupError(
|
|
1509
|
-
throwError("
|
|
1568
|
+
function throwGroupError(error) {
|
|
1569
|
+
throwError("Wrong arguments passed to group. Group " + error + ".");
|
|
1510
1570
|
}
|
|
1511
1571
|
|
|
1512
1572
|
function optional(optionals) {
|
|
@@ -1543,6 +1603,7 @@ function removeTestFromState (testObject) {
|
|
|
1543
1603
|
}
|
|
1544
1604
|
|
|
1545
1605
|
function shouldUseErrorAsMessage(message, error) {
|
|
1606
|
+
// kind of cheating with this safe guard, but it does the job
|
|
1546
1607
|
return isUndefined(message) && isStringValue(error);
|
|
1547
1608
|
}
|
|
1548
1609
|
|
|
@@ -1617,6 +1678,9 @@ var VestTest = /** @class */ (function () {
|
|
|
1617
1678
|
VestTest.prototype.isTested = function () {
|
|
1618
1679
|
return this.hasFailures() || this.isPassing();
|
|
1619
1680
|
};
|
|
1681
|
+
VestTest.prototype.isUntested = function () {
|
|
1682
|
+
return this.status === STATUS_UNTESTED;
|
|
1683
|
+
};
|
|
1620
1684
|
VestTest.prototype.isFailing = function () {
|
|
1621
1685
|
return this.status === STATUS_FAILED;
|
|
1622
1686
|
};
|
|
@@ -1642,27 +1706,23 @@ var STATUS_PASSING = 'PASSING';
|
|
|
1642
1706
|
var STATUS_PENDING = 'PENDING';
|
|
1643
1707
|
var STATUS_CANCELED = 'CANCELED';
|
|
1644
1708
|
|
|
1709
|
+
function isPromise(value) {
|
|
1710
|
+
return value && isFunction(value.then);
|
|
1711
|
+
}
|
|
1712
|
+
|
|
1645
1713
|
function isSameProfileTest(testObject1, testObject2) {
|
|
1646
1714
|
return (testObject1.fieldName === testObject2.fieldName &&
|
|
1647
1715
|
testObject1.groupName === testObject2.groupName);
|
|
1648
1716
|
}
|
|
1649
1717
|
|
|
1650
1718
|
function cancelOverriddenPendingTest(prevRunTestObject, currentRunTestObject) {
|
|
1651
|
-
if (
|
|
1652
|
-
prevRunTestObject
|
|
1653
|
-
|
|
1719
|
+
if (currentRunTestObject !== prevRunTestObject &&
|
|
1720
|
+
isSameProfileTest(prevRunTestObject, currentRunTestObject) &&
|
|
1721
|
+
prevRunTestObject.isPending()) {
|
|
1654
1722
|
prevRunTestObject.cancel();
|
|
1655
1723
|
}
|
|
1656
1724
|
}
|
|
1657
1725
|
|
|
1658
|
-
function isPromise(value) {
|
|
1659
|
-
return value && isFunction(value.then);
|
|
1660
|
-
}
|
|
1661
|
-
|
|
1662
|
-
function callEach(arr) {
|
|
1663
|
-
return arr.forEach(function (fn) { return fn(); });
|
|
1664
|
-
}
|
|
1665
|
-
|
|
1666
1726
|
/**
|
|
1667
1727
|
* Runs async test.
|
|
1668
1728
|
*/
|
|
@@ -1670,16 +1730,10 @@ function runAsyncTest(testObject) {
|
|
|
1670
1730
|
var asyncTest = testObject.asyncTest, message = testObject.message;
|
|
1671
1731
|
if (!isPromise(asyncTest))
|
|
1672
1732
|
return;
|
|
1733
|
+
var emit = useBus().emit;
|
|
1673
1734
|
var stateRef = useStateRef();
|
|
1674
1735
|
var done = ctx.bind({ stateRef: stateRef }, function () {
|
|
1675
|
-
testObject
|
|
1676
|
-
// This is for cases in which the suite state was already reset
|
|
1677
|
-
if (testObject.isCanceled()) {
|
|
1678
|
-
return;
|
|
1679
|
-
}
|
|
1680
|
-
// Perform required done callback calls and cleanups after the test is finished
|
|
1681
|
-
runFieldCallbacks(testObject.fieldName);
|
|
1682
|
-
runDoneCallbacks();
|
|
1736
|
+
emit(Events.TEST_COMPLETED, testObject);
|
|
1683
1737
|
});
|
|
1684
1738
|
var fail = ctx.bind({ stateRef: stateRef }, function (rejectionMessage) {
|
|
1685
1739
|
if (testObject.isCanceled()) {
|
|
@@ -1700,27 +1754,6 @@ function runAsyncTest(testObject) {
|
|
|
1700
1754
|
fail();
|
|
1701
1755
|
}
|
|
1702
1756
|
}
|
|
1703
|
-
/**
|
|
1704
|
-
* Runs done callback per field when async tests are finished running.
|
|
1705
|
-
*/
|
|
1706
|
-
function runFieldCallbacks(fieldName) {
|
|
1707
|
-
var fieldCallbacks = useTestCallbacks()[0].fieldCallbacks;
|
|
1708
|
-
if (fieldName) {
|
|
1709
|
-
if (!hasRemainingTests(fieldName) &&
|
|
1710
|
-
Array.isArray(fieldCallbacks[fieldName])) {
|
|
1711
|
-
callEach(fieldCallbacks[fieldName]);
|
|
1712
|
-
}
|
|
1713
|
-
}
|
|
1714
|
-
}
|
|
1715
|
-
/**
|
|
1716
|
-
* Runs unlabelled done callback when async tests are finished running.
|
|
1717
|
-
*/
|
|
1718
|
-
function runDoneCallbacks() {
|
|
1719
|
-
var doneCallbacks = useTestCallbacks()[0].doneCallbacks;
|
|
1720
|
-
if (!hasRemainingTests()) {
|
|
1721
|
-
callEach(doneCallbacks);
|
|
1722
|
-
}
|
|
1723
|
-
}
|
|
1724
1757
|
|
|
1725
1758
|
/**
|
|
1726
1759
|
* Runs sync tests - or extracts promise.
|
|
@@ -1748,6 +1781,7 @@ function runSyncTest(testObject) {
|
|
|
1748
1781
|
* Registers test, if async - adds to pending array
|
|
1749
1782
|
*/
|
|
1750
1783
|
function registerTest(testObject) {
|
|
1784
|
+
var emit = useBus().emit;
|
|
1751
1785
|
// Run test callback.
|
|
1752
1786
|
// If a promise is returned, set as async and
|
|
1753
1787
|
// Move to pending list.
|
|
@@ -1761,7 +1795,7 @@ function registerTest(testObject) {
|
|
|
1761
1795
|
runAsyncTest(testObject);
|
|
1762
1796
|
}
|
|
1763
1797
|
else {
|
|
1764
|
-
testObject
|
|
1798
|
+
emit(Events.TEST_COMPLETED, testObject);
|
|
1765
1799
|
}
|
|
1766
1800
|
}
|
|
1767
1801
|
catch (_a) {
|
|
@@ -1769,6 +1803,29 @@ function registerTest(testObject) {
|
|
|
1769
1803
|
}
|
|
1770
1804
|
}
|
|
1771
1805
|
|
|
1806
|
+
function registerPrevRunTest(testObject) {
|
|
1807
|
+
var prevRunTest = useTestAtCursor(testObject);
|
|
1808
|
+
if (isExcluded(testObject)) {
|
|
1809
|
+
testObject.skip();
|
|
1810
|
+
useSetNextCursorAt();
|
|
1811
|
+
return prevRunTest;
|
|
1812
|
+
}
|
|
1813
|
+
cancelOverriddenPendingTest(prevRunTest, testObject);
|
|
1814
|
+
useSetTestAtCursor(testObject);
|
|
1815
|
+
useSetNextCursorAt();
|
|
1816
|
+
registerTestObjectByTier(testObject);
|
|
1817
|
+
return testObject;
|
|
1818
|
+
}
|
|
1819
|
+
function registerTestObjectByTier(testObject) {
|
|
1820
|
+
if (testObject.isUntested()) {
|
|
1821
|
+
registerTest(testObject);
|
|
1822
|
+
}
|
|
1823
|
+
else if (isPromise(testObject.asyncTest)) {
|
|
1824
|
+
testObject.setPending();
|
|
1825
|
+
runAsyncTest(testObject);
|
|
1826
|
+
}
|
|
1827
|
+
}
|
|
1828
|
+
|
|
1772
1829
|
function bindTestEach(test) {
|
|
1773
1830
|
/**
|
|
1774
1831
|
* Run multiple tests using a parameter table
|
|
@@ -1785,7 +1842,7 @@ function bindTestEach(test) {
|
|
|
1785
1842
|
var _a = args.reverse(), testFn = _a[0], message = _a[1];
|
|
1786
1843
|
return table.map(function (item) {
|
|
1787
1844
|
item = asArray(item);
|
|
1788
|
-
return test(optionalFunctionValue.apply(void 0, __spreadArray([fieldName], item)), optionalFunctionValue.apply(void 0, __spreadArray([message], item)), function () { return testFn.apply(void 0, item); });
|
|
1845
|
+
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); });
|
|
1789
1846
|
});
|
|
1790
1847
|
}
|
|
1791
1848
|
return eachReturn;
|
|
@@ -1808,32 +1865,20 @@ function bindTestMemo(test) {
|
|
|
1808
1865
|
// Implicit dependency for more specificity
|
|
1809
1866
|
var dependencies = [suiteId, fieldName, cursorAt].concat(deps);
|
|
1810
1867
|
var cached = cache.get(dependencies);
|
|
1811
|
-
// Cache miss. Start fresh
|
|
1812
1868
|
if (isNull(cached)) {
|
|
1869
|
+
// cache miss
|
|
1813
1870
|
return cache(dependencies, function () { return test(fieldName, msg, testFn); });
|
|
1814
1871
|
}
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
return prevRunTest;
|
|
1872
|
+
if (cached[1].isCanceled()) {
|
|
1873
|
+
// cache hit, but test is canceled
|
|
1874
|
+
cache.invalidate(dependencies);
|
|
1875
|
+
return cache(dependencies, function () { return test(fieldName, msg, testFn); });
|
|
1820
1876
|
}
|
|
1821
|
-
|
|
1822
|
-
useSetTestAtCursor(testObject);
|
|
1823
|
-
useSetNextCursorAt();
|
|
1824
|
-
handleAsyncTest(testObject);
|
|
1825
|
-
return testObject;
|
|
1877
|
+
return registerPrevRunTest(cached[1]);
|
|
1826
1878
|
}
|
|
1827
1879
|
return memo;
|
|
1828
1880
|
}
|
|
1829
|
-
function handleAsyncTest(testObject) {
|
|
1830
|
-
if (testObject && isPromise(testObject.asyncTest)) {
|
|
1831
|
-
testObject.setPending();
|
|
1832
|
-
runAsyncTest(testObject);
|
|
1833
|
-
}
|
|
1834
|
-
}
|
|
1835
1881
|
|
|
1836
|
-
// eslint-disable-next-line max-statements
|
|
1837
1882
|
function testBase(fieldName) {
|
|
1838
1883
|
var args = [];
|
|
1839
1884
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
@@ -1845,25 +1890,13 @@ function testBase(fieldName) {
|
|
|
1845
1890
|
message: message,
|
|
1846
1891
|
groupName: context === null || context === void 0 ? void 0 : context.groupName
|
|
1847
1892
|
});
|
|
1848
|
-
|
|
1849
|
-
if (isExcluded(testObject)) {
|
|
1850
|
-
testObject.skip();
|
|
1851
|
-
useSetNextCursorAt();
|
|
1852
|
-
return prevRunTest;
|
|
1853
|
-
}
|
|
1854
|
-
cancelOverriddenPendingTest(prevRunTest, testObject);
|
|
1855
|
-
useSetTestAtCursor(testObject);
|
|
1856
|
-
useSetNextCursorAt(); // maybe somehow do this only in one place?
|
|
1857
|
-
if (!isFunction(testFn))
|
|
1858
|
-
return testObject;
|
|
1859
|
-
registerTest(testObject);
|
|
1860
|
-
return testObject;
|
|
1893
|
+
return registerPrevRunTest(testObject);
|
|
1861
1894
|
}
|
|
1862
1895
|
var test = assign(testBase, {
|
|
1863
1896
|
each: bindTestEach(testBase),
|
|
1864
1897
|
memo: bindTestMemo(testBase)
|
|
1865
1898
|
});
|
|
1866
1899
|
|
|
1867
|
-
var VERSION = "
|
|
1900
|
+
var VERSION = "4.0.0-dev-deabb8";
|
|
1868
1901
|
|
|
1869
1902
|
export { VERSION, create, enforce, group, only, optional, skip, skipWhen, test, warn };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function n(){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(n,t){try{return n.run(t)}catch(n){return s(!1)}}function c(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function f(n,t){return n.length===Number(t)}var l=c(f);function p(n,t){return n.length>Number(t)}function v(n){return null===n}var g=c(v);function d(n){return void 0===n}var h=c(d);function y(n){return String(n)===n}function m(n,t){return y(n)&&y(t)&&n.endsWith(t)}var b=c(m);function N(n,t){return n===t}var C=c(N);function O(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var E=c(O);function w(n,t){return O(n)&&O(t)&&Number(n)>Number(t)}function S(n,t){return O(n)&&O(t)&&Number(n)>=Number(t)}function x(n,t){return!!(Array.isArray(t)||y(t)&&y(n))&&-1!==t.indexOf(n)}var k=c(x);function P(n){return!!Array.isArray(n)}var T=c(P);function j(n,t){return O(n)&&O(t)&&Number(n)<=Number(t)}function F(n,t,r){return S(n,t)&&j(n,r)}var A=c(F);function W(n){return!!n===n}var I=c(W);function R(n){return"number"==typeof n}var q=c(R);function B(n){if(n){if(R(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return f(n,0);if("object"==typeof n)return f(Object.keys(n),0)}return!0}var G=c(B);function K(n){return Number.isNaN(n)}var X=c(K);function D(n){return!!O(n)&&0>Number(n)}var U=c(D),z=c(y);function J(n){return!!n}var L=c(J);function M(n,t){return O(n)&&O(t)&&Number(n)<Number(t)}function V(n,t){return t instanceof RegExp?t.test(n):!!y(t)&&new RegExp(t).test(n)}var Y=c(V);function H(n,t){return O(n)&&O(t)&&Number(n)===Number(t)}var Q=c(H);function Z(n,t){return y(n)&&y(t)&&n.startsWith(t)}var $=c(Z);function _(n,t){throw Error(o(t,n))}function nn(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:_(o(n,"Context was used after it was closed"))}}}var tn=nn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:r(e,{parent:rn})}));function rn(){return null}function en(n,t){function r(r){var e=n[r],u=t[r];if(!(r=tn.run({value:e,set:!0,meta:{key:r}},(function(){return a(u,e)}))).pass)return{value:r}}for(var e in t){var u=r(e);if("object"==typeof u)return u.value}return s(!0)}var un=r({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:b,doesNotStartWith:$,endsWith:m,equals:N,greaterThan:w,greaterThanOrEquals:S,gt:w,gte:S,inside:x,isArray:P,isBetween:F,isBoolean:W,isEmpty:B,isEven:function(n){return!!O(n)&&0==n%2},isFalsy:L,isNaN:K,isNegative:D,isNotArray:T,isNotBetween:A,isNotBoolean:I,isNotEmpty:G,isNotNaN:X,isNotNull:g,isNotNumber:q,isNotNumeric:E,isNotString:z,isNotUndefined:h,isNull:v,isNumber:R,isNumeric:O,isOdd:function(n){return!!O(n)&&0!=n%2},isPositive:U,isString:y,isTruthy:J,isUndefined:d,lengthEquals:f,lengthNotEquals:l,lessThan:M,lessThanOrEquals:j,longerThan:p,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:M,lte:j,matches:V,notEquals:C,notInside:k,notMatches:Y,numberEquals:H,numberNotEquals:Q,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:Z},{allOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass||r(t)})),s(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass&&r(t)})),s(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){a(t,n).pass&&r(s(!1))})),s(!0))},oneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(p(e,1))return!1;(t=a(t,n)).pass&&e.push(t)})),s(f(e,1))},optional:function(n,t){return d(n)||null===n?s(!0):a(t,n)}},{shape:function(n,t){var r=en(n,t);if(!r.pass)return r;for(var e in n)if(!Object.prototype.hasOwnProperty.call(t,e))return s(!1);return s(!0)},loose:en,isArrayOf:function(n,t){return o(u(n,(function(n,r,e){(e=tn.run({value:n,set:!0,meta:{index:e}},(function(){return a(t,n)}))).pass||r(e)})),s(!0))}});function on(n){for(var t in un){var r=un[t];e(r)&&n(t,r)}}function sn(){return"function"==typeof Proxy}function an(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return W(n)||n&&W(n.pass)||_("Incorrect return value for rule: "+JSON.stringify(n)),W(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u)))}function cn(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=an.apply(void 0,t([tn.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!B(o.message))throw o.message;_("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=un[t])return r(u,n,t)}});return u}function fn(n){var r,e=[];return function n(a){return function(){for(var c=[],f=0;f<arguments.length;f++)c[f]=arguments[f];var l=un[a];e.push((function(n){return an.apply(void 0,t([l.apply(void 0,t([n],c)),a,n],c))}));var p={run:function(n){return o(u(e,(function(t,e){var u,o=tn.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))})),s(!0))},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 un[r]?n(r):t[r]}}):(on((function(t){p[t]=n(t)})),p)}}(n)}function ln(n){var t,r={};for(t in n)r[t]=vn.optional(n[t]);return r}var pn,vn=(pn=n({context:function(){return tn.useX()},extend:function(n){r(un,n)}},{partial:ln}),sn()?new Proxy(r(cn,pn),{get:function(n,t){return t in n?n[t]:un[t]?fn(t):void 0}}):(on((function(n){pn[n]=fn(n)})),pn)),gn=function(n){return function(){return""+n++}}(0);var dn=nn((function(n,t){return t?null:r({},{exclusion:{tests:{},groups:{}}},n)}));function hn(n,t){return!(!t||n.fieldName!==t)}function yn(n){function t(e,u){var i=t.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),r.length>n&&(r.length=n),u)}void 0===n&&(n=10);var r=[];return t.get=function(n){return r[r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},t}function mn(){return dn.useX().stateRef}function bn(){return mn().testObjects()}function Nn(n){var t=mn().testObjectsCursor()[0];return Cn(n=o(mn().prevTestObjects()[0][t],n)),n}function Cn(n){var t=mn().testObjectsCursor()[0],r=bn();n!==r[0][t]&&(0,r[1])((function(r){return(r=r.slice(0))[t]=n,r}))}function On(){(0,mn().testObjectsCursor()[1])((function(n){return n+1}))}function En(n){return!!mn().optionalFields()[0][n]}function wn(){return bn()[0].filter((function(n){return n.isPending()}))}function Sn(n){var t=wn();return!B(t)&&(n?t.some((function(t){return hn(t,n)})):G(t))}function xn(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 kn(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return i&&r.groupName!==i||o&&!hn(r,o)||"warnings"===t!=!!r.warns||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function Pn(n){return jn("errors",n)}function Tn(n){return jn("warnings",n)}function jn(n,t){return n=kn(n,bn()[0],{fieldName:t}),t?n[t]:n}function Fn(n,t){return n=Wn("errors",n,t),t?n[t]:n}function An(n,t){return n=Wn("warnings",n,t),t?n[t]:n}function Wn(n,t,r){return t||_("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),kn(n,bn()[0],{group:t,fieldName:r})}function In(n,t,r){return!(!n.hasFailures()||r&&!hn(n,r)||"warnings"===t!=!!n.warns)}function Rn(n){return Bn("errors",n)}function qn(n){return Bn("warnings",n)}function Bn(n,t){return bn()[0].some((function(r){return In(r,n,t)}))}function Gn(n,t){return Xn("errors",n,t)}function Kn(n,t){return Xn("warnings",n,t)}function Xn(n,t,r){return bn()[0].some((function(e){return t===e.groupName&&In(e,n,r)}))}function Dn(n,t){return!n.hasErrors(t)&&(!(B(bn()[0])||t&&B(n.tests[t])||G(wn().filter((function(n){return!(t&&!hn(n,t))&&!En(n.fieldName)}))))&&function(n){return bn()[0].every((function(t){return!!(n&&!hn(t,n)||En(t.fieldName))||t.isTested()}))}(t))}var Un=yn(20);function zn(){var n=bn()[0],t={stateRef:mn()};return Un([n],dn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return bn()[0].forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=xn(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=xn(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:dn.bind(t,Pn),getErrorsByGroup:dn.bind(t,Fn),getWarnings:dn.bind(t,Tn),getWarningsByGroup:dn.bind(t,An),hasErrors:dn.bind(t,Rn),hasErrorsByGroup:dn.bind(t,Gn),hasWarnings:dn.bind(t,qn),hasWarningsByGroup:dn.bind(t,Kn),isValid:dn.bind(t,(function(n){return Dn(zn(),n)}))})})))}var Jn=yn(20);function Ln(){var n=bn()[0],t={stateRef:mn()};return Jn([n],dn.bind(t,(function(){return r({},zn(),{done:dn.bind(t,Yn)})})))}function Mn(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function Vn(n){return!(Sn()&&(!n||Sn(n)))}function Yn(){function n(){return e(zn())}for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=(t=t.reverse())[0];return t=t[1],r=Ln(),Mn(e,t,r)?r:Vn(t)?(n(),r):(Hn(n,t),r)}function Hn(n,t){var r=dn.bind({},n);(0,mn().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function Qn(n){return _n("only","tests",n)}function Zn(n){return _n("skip","tests",n)}function $n(n){var t=n.fieldName;n=n.groupName;var r=dn.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){n:{var i=dn.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(i,n))var o=!1===i[n];else{for(o in i)if(!0===i[o]){o=!0;break n}o=!1}}if(o)return!0;if(!0===r.groups[n])return!u&&(!!nt(e)||!1===e[t])}return!u&&nt(e)}function _n(n,t,r){var e=dn.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){y(r)&&(e.exclusion[t][r]="only"===n)}))}function nt(n){for(var t in n)if(!0===n[t])return!0;return!1}function tt(n){_('group initialization error. Expected "'+n+'" to be a string.',"group name must be a string")}Qn.group=function(n){return _n("only","groups",n)},Zn.group=function(n){return _n("skip","groups",n)};var rt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=gn(),this.warns=!1,this.status=et,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){n=t,d(this.message)&&y(n)&&(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(at)},n.prototype.fail=function(){this.setStatus(this.warns?ot:it)},n.prototype.done=function(){this.isWarning()||this.isCanceled()||this.isFailing()||this.setStatus(st)},n.prototype.warn=function(){this.warns=!0},n.prototype.skip=function(){this.setStatus(ut)},n.prototype.cancel=function(){this.setStatus(ct),function(n){(0,bn()[1])((function(t){var r=t.indexOf(n);return-1!==r&&t.splice(r,1),[].concat(t)}))}(this)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===at},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isFailing=function(){return this.status===it},n.prototype.isCanceled=function(){return this.status===ct},n.prototype.isSkipped=function(){return this.status===ut},n.prototype.isPassing=function(){return this.status===st},n.prototype.isWarning=function(){return this.status===ot},n}(),et="UNTESTED",ut="SKIPPED",it="FAILED",ot="WARNING",st="PASSING",at="PENDING",ct="CANCELED";function ft(n,t){n.fieldName===t.fieldName&&n.groupName===t.groupName&&n.isPending()&&t!==n&&n.cancel()}function lt(n){return n.forEach((function(n){return n()}))}function pt(n){var t=n.asyncTest,r=n.message;if(t&&e(t.then)){var u=mn(),i=dn.bind({stateRef:u},(function(){if(n.done(),!n.isCanceled()){var t=n.fieldName,r=mn().testCallbacks()[0].fieldCallbacks;t&&!Sn(t)&&Array.isArray(r[t])&<(r[t]),t=mn().testCallbacks()[0].doneCallbacks,Sn()||lt(t)}}));u=dn.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=y(t)?t:r,n.fail(),(0,bn()[1])((function(n){return n.slice(0)})),i())}));try{t.then(i,u)}catch(n){u()}}}function vt(n){return dn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,d(n.message)&&y(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}function gt(n){var t;(t=n)&&(t=(t=n.asyncTest)&&e(t.then)),t&&(n.setPending(),pt(n))}function dt(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=dn.useX();if(u=Nn(r=new rt(n,t,{message:r,groupName:null==u?void 0:u.groupName})),$n(r))return r.skip(),On(),u;if(ft(u,r),Cn(r),On(),!e(t))return r;t=vt(r);try{t&&e(t.then)?(r.asyncTest=t,r.setPending(),pt(r)):r.done()}catch(n){_("Your test function "+r.fieldName+" returned "+JSON.stringify(t)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}return r}var ht=r(dt,{each:function(n){return function(r){return Array.isArray(r)||_("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=[].concat(r),n(i.apply(void 0,t([e],r)),i.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}}}(dt),memo:function(n){var t=yn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=mn().suiteId()[0];var i=mn().testObjectsCursor()[0],o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),null===(u=t.get(e))?t(e,(function(){return n(r,s,o)})):(u=Nn(e=u[1]),$n(e)?(On(),u):(ft(u,e),Cn(e),On(),gt(e),e))}}(dt)}),yt="3.3.0-dev-549cb1";function mt(n){e(n)||_("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:gn()});return r(dn.bind({stateRef:o},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=bn()[0];return r=mn().prevTestObjects()[1],u.reset(),r((function(){return e})),n.apply(void 0,t),Ln()})),{get:dn.bind({stateRef:o},zn),remove:dn.bind({stateRef:o},(function(n){var t=bn()[0];[].concat(t).forEach((function(t){hn(t,n)&&t.cancel()}))})),reset:u.reset,subscribe:function(n){e(n)&&(t.push(n),n({type:"suiteSubscribeInit",suiteState:o}))}})}function bt(n,t){y(n)||tt(n),e(t)||tt(t),dn.bind({groupName:n},t)()}function Nt(n){(0,mn().optionalFields()[1])((function(t){return[].concat(n).forEach((function(n){t[n]=!0})),t}))}function Ct(n,t){dn.run({skipped:i(n)},(function(){return t()}))}function Ot(){var n=dn.useX("warn hook called outside of a running suite.");n.currentTest||_("warn called outside of a test."),n.currentTest.warn()}export{yt as VERSION,mt as create,vn as enforce,bt as group,Qn as only,Nt as optional,Zn as skip,Ct as skipWhen,ht as test,Ot as warn};
|
|
1
|
+
function n(){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(n,t){try{return n.run(t)}catch(n){return s(!1)}}function c(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function f(n,t){return n.length===Number(t)}var l=c(f);function p(n,t){return n.length>Number(t)}function v(n){return null===n}var g=c(v);function d(n){return void 0===n}var h=c(d);function y(n){return String(n)===n}function m(n,t){return y(n)&&y(t)&&n.endsWith(t)}var b=c(m);function N(n,t){return n===t}var E=c(N);function C(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var O=c(C);function w(n,t){return C(n)&&C(t)&&Number(n)>Number(t)}function T(n,t){return C(n)&&C(t)&&Number(n)>=Number(t)}function S(n,t){return!!(Array.isArray(t)||y(t)&&y(n))&&-1!==t.indexOf(n)}var k=c(S);function x(n){return!!Array.isArray(n)}var P=c(x);function j(n,t){return C(n)&&C(t)&&Number(n)<=Number(t)}function F(n,t,r){return T(n,t)&&j(n,r)}var A=c(F);function W(n){return!!n===n}var I=c(W);function R(n){return"number"==typeof n}var q=c(R);function B(n){if(n){if(R(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return f(n,0);if("object"==typeof n)return f(Object.keys(n),0)}return!0}var D=c(B);function G(n){return Number.isNaN(n)}var X=c(G);function K(n){return!!C(n)&&0>Number(n)}var L=c(K),U=c(y);function M(n){return!!n}var _=c(M);function J(n,t){return C(n)&&C(t)&&Number(n)<Number(t)}function z(n,t){return t instanceof RegExp?t.test(n):!!y(t)&&new RegExp(t).test(n)}var V=c(z);function Y(n,t){return C(n)&&C(t)&&Number(n)===Number(t)}var H=c(Y);function Q(n,t){return y(n)&&y(t)&&n.startsWith(t)}var Z=c(Q);function $(n,t){throw Error(o(t,n))}function nn(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:$(o(n,"Context was used after it was closed"))}}}var tn=nn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:r(e,{parent:rn})}));function rn(){return null}function en(n,t){function r(r){var e=n[r],u=t[r];if(!(r=tn.run({value:e,set:!0,meta:{key:r}},(function(){return a(u,e)}))).pass)return{value:r}}for(var e in t){var u=r(e);if("object"==typeof u)return u.value}return s(!0)}var un=r({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:b,doesNotStartWith:Z,endsWith:m,equals:N,greaterThan:w,greaterThanOrEquals:T,gt:w,gte:T,inside:S,isArray:x,isBetween:F,isBoolean:W,isEmpty:B,isEven:function(n){return!!C(n)&&0==n%2},isFalsy:_,isNaN:G,isNegative:K,isNotArray:P,isNotBetween:A,isNotBoolean:I,isNotEmpty:D,isNotNaN:X,isNotNull:g,isNotNumber:q,isNotNumeric:O,isNotString:U,isNotUndefined:h,isNull:v,isNumber:R,isNumeric:C,isOdd:function(n){return!!C(n)&&0!=n%2},isPositive:L,isString:y,isTruthy:M,isUndefined:d,lengthEquals:f,lengthNotEquals:l,lessThan:J,lessThanOrEquals:j,longerThan:p,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:J,lte:j,matches:z,notEquals:E,notInside:k,notMatches:V,numberEquals:Y,numberNotEquals:H,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:Q},{allOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass||r(t)})),s(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass&&r(t)})),s(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){a(t,n).pass&&r(s(!1))})),s(!0))},oneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(p(e,1))return!1;(t=a(t,n)).pass&&e.push(t)})),s(f(e,1))},optional:function(n,t){return d(n)||null===n?s(!0):a(t,n)}},{shape:function(n,t){var r=en(n,t);if(!r.pass)return r;for(var e in n)if(!Object.prototype.hasOwnProperty.call(t,e))return s(!1);return s(!0)},loose:en,isArrayOf:function(n,t){return o(u(n,(function(n,r,e){(e=tn.run({value:n,set:!0,meta:{index:e}},(function(){return a(t,n)}))).pass||r(e)})),s(!0))}});function on(n){for(var t in un){var r=un[t];e(r)&&n(t,r)}}function sn(){return"function"==typeof Proxy}function an(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return W(n)||n&&W(n.pass)||$("Incorrect return value for rule: "+JSON.stringify(n)),W(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u,!1)))}function cn(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=an.apply(void 0,t([tn.run({value:n},(function(){return e.apply(void 0,t([n],i,!1))})),u,n],i,!1))).pass){if(!B(o.message))throw o.message;$("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=un[t])return r(u,n,t)}});return u}function fn(n){var r,e=[];return function n(a){return function(){for(var c=[],f=0;f<arguments.length;f++)c[f]=arguments[f];var l=un[a];e.push((function(n){return an.apply(void 0,t([l.apply(void 0,t([n],c,!1)),a,n],c,!1))}));var p={run:function(n){return o(u(e,(function(t,e){var u,o=tn.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))})),s(!0))},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 un[r]?n(r):t[r]}}):(on((function(t){p[t]=n(t)})),p)}}(n)}function ln(n){var t,r={};for(t in n)r[t]=vn.optional(n[t]);return r}var pn,vn=(pn=n({context:function(){return tn.useX()},extend:function(n){r(un,n)}},{partial:ln}),sn()?new Proxy(r(cn,pn),{get:function(n,t){return t in n?n[t]:un[t]?fn(t):void 0}}):(on((function(n){pn[n]=fn(n)})),pn)),gn=function(n){return function(){return""+n++}}(0);var dn=nn((function(n,t){return t?null:r({},{exclusion:{tests:{},groups:{}}},n)}));function hn(n,t){return!(!t||n.fieldName!==t)}function yn(n){function t(e,u){var i=t.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),r.length>n&&(r.length=n),u)}void 0===n&&(n=10);var r=[];return t.invalidate=function(n){var t=r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<t&&r.splice(t,1)},t.get=function(n){return r[r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},t}function mn(){return dn.useX().stateRef}function bn(){return mn().testObjects()}function Nn(n){var t=mn().testObjectsCursor()[0],r=bn();n!==r[0][t]&&(0,r[1])((function(r){return(r=r.slice(0))[t]=n,r}))}function En(){(0,mn().testObjectsCursor()[1])((function(n){return n+1}))}function Cn(n){return!!mn().optionalFields()[0][n]}function On(){return bn()[0].filter((function(n){return n.isPending()}))}function wn(n){var t=On();return!B(t)&&(n?t.some((function(t){return hn(t,n)})):D(t))}function Tn(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 Sn(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return i&&r.groupName!==i||o&&!hn(r,o)||"warnings"===t!=!!r.warns||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function kn(n){return Pn("errors",n)}function xn(n){return Pn("warnings",n)}function Pn(n,t){return n=Sn(n,bn()[0],{fieldName:t}),t?n[t]:n}function jn(n,t){return n=An("errors",n,t),t?n[t]:n}function Fn(n,t){return n=An("warnings",n,t),t?n[t]:n}function An(n,t,r){return t||$("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),Sn(n,bn()[0],{group:t,fieldName:r})}function Wn(n,t,r){return!(!n.hasFailures()||r&&!hn(n,r)||"warnings"===t!=!!n.warns)}function In(n){return qn("errors",n)}function Rn(n){return qn("warnings",n)}function qn(n,t){return bn()[0].some((function(r){return Wn(r,n,t)}))}function Bn(n,t){return Gn("errors",n,t)}function Dn(n,t){return Gn("warnings",n,t)}function Gn(n,t,r){return bn()[0].some((function(e){return t===e.groupName&&Wn(e,n,r)}))}function Xn(n,t){return!n.hasErrors(t)&&(!(B(bn()[0])||t&&B(n.tests[t])||D(On().filter((function(n){return!(t&&!hn(n,t))&&!Cn(n.fieldName)}))))&&function(n){return bn()[0].every((function(t){return!!(n&&!hn(t,n)||Cn(t.fieldName))||t.isTested()}))}(t))}var Kn=yn(20);function Ln(){var n=bn()[0],t={stateRef:mn()};return Kn([n],dn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return bn()[0].forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Tn(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Tn(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:dn.bind(t,kn),getErrorsByGroup:dn.bind(t,jn),getWarnings:dn.bind(t,xn),getWarningsByGroup:dn.bind(t,Fn),hasErrors:dn.bind(t,In),hasErrorsByGroup:dn.bind(t,Bn),hasWarnings:dn.bind(t,Rn),hasWarningsByGroup:dn.bind(t,Dn),isValid:dn.bind(t,(function(n){return Xn(Ln(),n)}))})})))}var Un,Mn=yn(20);function _n(){var n=bn()[0],t={stateRef:mn()};return Mn([n],dn.bind(t,(function(){return r({},Ln(),{done:dn.bind(t,Vn)})})))}function Jn(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function zn(n){return!(wn()&&(!n||wn(n)))}function Vn(){function n(){return e(Ln())}for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=(t=t.reverse())[0];return t=t[1],r=_n(),Jn(e,t,r)?r:zn(t)?(n(),r):(Yn(n,t),r)}function Yn(n,t){var r=dn.bind({},n);(0,mn().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function Hn(n){return n.forEach((function(n){return n()}))}function Qn(){var n=dn.useX();return n.bus||$(),n.bus}function Zn(n){return nt("only","tests",n)}function $n(n){return nt("skip","tests",n)}function nt(n,t,r){var e=dn.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){y(r)&&(e.exclusion[t][r]="only"===n)}))}function tt(n){for(var t in n)if(!0===n[t])return!0;return!1}function rt(n){$("Wrong arguments passed to group. Group "+n+".")}(Un||(Un={})).TEST_COMPLETED="test_completed",Zn.group=function(n){return nt("only","groups",n)},$n.group=function(n){return nt("skip","groups",n)};var et=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=gn(),this.warns=!1,this.status=ut,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){n=t,d(this.message)&&y(n)&&(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(ct)},n.prototype.fail=function(){this.setStatus(this.warns?st:ot)},n.prototype.done=function(){this.isWarning()||this.isCanceled()||this.isFailing()||this.setStatus(at)},n.prototype.warn=function(){this.warns=!0},n.prototype.skip=function(){this.setStatus(it)},n.prototype.cancel=function(){this.setStatus(ft),function(n){(0,bn()[1])((function(t){var r=t.indexOf(n);return-1!==r&&t.splice(r,1),[].concat(t)}))}(this)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===ct},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isUntested=function(){return this.status===ut},n.prototype.isFailing=function(){return this.status===ot},n.prototype.isCanceled=function(){return this.status===ft},n.prototype.isSkipped=function(){return this.status===it},n.prototype.isPassing=function(){return this.status===at},n.prototype.isWarning=function(){return this.status===st},n}(),ut="UNTESTED",it="SKIPPED",ot="FAILED",st="WARNING",at="PASSING",ct="PENDING",ft="CANCELED";function lt(n){var t=n.asyncTest,r=n.message;if(t&&e(t.then)){var u=Qn().emit,i=mn(),o=dn.bind({stateRef:i},(function(){u(Un.TEST_COMPLETED,n)}));i=dn.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=y(t)?t:r,n.fail(),(0,bn()[1])((function(n){return n.slice(0)})),o())}));try{t.then(o,i)}catch(n){i()}}}function pt(n){var t=mn().testObjectsCursor()[0],r=mn().prevTestObjects()[0];if(Nn(t=o(r[t],n)),function(n){var t=n.fieldName;n=n.groupName;var r=dn.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){n:{var i=dn.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(i,n))var o=!1===i[n];else{for(o in i)if(!0===i[o]){o=!0;break n}o=!1}}if(o)return!0;if(!0===r.groups[n])return!(u||!tt(e)&&!1!==e[t])}return!u&&tt(e)}(n))return n.skip(),En(),t;if(n!==t&&t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.isPending()&&t.cancel(),Nn(n),En(),n.isUntested()){t=Qn().emit,r=function(n){return dn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,d(n.message)&&y(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&e(r.then)?(n.asyncTest=r,n.setPending(),lt(n)):t(Un.TEST_COMPLETED,n)}catch(t){$("Your test function "+n.fieldName+" returned "+JSON.stringify(r)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}else(t=n.asyncTest)&&e(t.then)&&(n.setPending(),lt(n));return n}function vt(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=dn.useX();return pt(t=new et(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var gt=r(vt,{each:function(n){return function(r){return Array.isArray(r)||$("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=[].concat(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)}))}))}}}(vt),memo:function(n){var t=yn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=mn().suiteId()[0];var i=mn().testObjectsCursor()[0],o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),null===(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)}))):pt(u[1])}}(vt)}),dt="4.0.0-dev-deabb8";function ht(n){e(n)||$("Suite initialization error. Expected `tests` to be a function.");var t=function(){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(Un.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=mn().testCallbacks()[0].fieldCallbacks;n&&!wn(n)&&Array.isArray(t[n])&&Hn(t[n]),n=mn().testCallbacks()[0].doneCallbacks,wn()||Hn(n)}})),n}(),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:gn()});return r(dn.bind({stateRef:o,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=bn()[0];return r=mn().prevTestObjects()[1],u.reset(),r((function(){return e})),n.apply(void 0,t),_n()})),{get:dn.bind({stateRef:o},Ln),remove:dn.bind({stateRef:o},(function(n){var t=bn()[0];[].concat(t).forEach((function(t){hn(t,n)&&t.cancel()}))})),reset:u.reset})}function yt(n,t){y(n)||rt("name must be a string"),e(t)||rt("callback must be a function"),dn.run({groupName:n},t)}function mt(n){(0,mn().optionalFields()[1])((function(t){return[].concat(n).forEach((function(n){t[n]=!0})),t}))}function bt(n,t){dn.run({skipped:i(n)},(function(){return t()}))}function Nt(){var n=dn.useX("warn hook called outside of a running suite.");n.currentTest||$("warn called outside of a test."),n.currentTest.warn()}export{dt as VERSION,ht as create,vn as enforce,yt as group,Zn as only,mt as optional,$n as skip,bt as skipWhen,gt as test,Nt as warn};
|