vest 4.1.3 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/vest.development.js +112 -54
- package/dist/cjs/vest.production.js +1 -1
- package/dist/es/vest.development.js +112 -55
- package/dist/es/vest.production.js +1 -1
- package/dist/umd/vest.development.js +112 -54
- package/dist/umd/vest.production.js +1 -1
- package/package.json +1 -1
- package/types/vest.d.ts +29 -2
|
@@ -179,6 +179,12 @@ function createCursor() {
|
|
|
179
179
|
};
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
+
var Modes;
|
|
183
|
+
(function (Modes) {
|
|
184
|
+
Modes[Modes["ALL"] = 0] = "ALL";
|
|
185
|
+
Modes[Modes["EAGER"] = 1] = "EAGER";
|
|
186
|
+
})(Modes || (Modes = {}));
|
|
187
|
+
|
|
182
188
|
var context = context$1.createContext(function (ctxRef, parentContext) {
|
|
183
189
|
return parentContext
|
|
184
190
|
? null
|
|
@@ -195,6 +201,7 @@ var context = context$1.createContext(function (ctxRef, parentContext) {
|
|
|
195
201
|
prev: {}
|
|
196
202
|
}
|
|
197
203
|
},
|
|
204
|
+
mode: [Modes.ALL],
|
|
198
205
|
testCursor: createCursor()
|
|
199
206
|
}, ctxRef);
|
|
200
207
|
});
|
|
@@ -221,9 +228,9 @@ function isNull(value) {
|
|
|
221
228
|
}
|
|
222
229
|
var isNotNull = bindNot(isNull);
|
|
223
230
|
|
|
224
|
-
// This is
|
|
225
|
-
// Normally, behaves like a nested-array map
|
|
226
|
-
//
|
|
231
|
+
// This is kind of a map/filter in one function.
|
|
232
|
+
// Normally, behaves like a nested-array map,
|
|
233
|
+
// but returning `null` will drop the element from the array
|
|
227
234
|
function transform(array, cb) {
|
|
228
235
|
var res = [];
|
|
229
236
|
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
|
|
@@ -310,23 +317,22 @@ function createCache(maxSize) {
|
|
|
310
317
|
};
|
|
311
318
|
// invalidate an item in the cache by its dependencies
|
|
312
319
|
cache.invalidate = function (deps) {
|
|
313
|
-
var index =
|
|
314
|
-
var cachedDeps = _a[0];
|
|
315
|
-
return lengthEquals(deps, cachedDeps.length) &&
|
|
316
|
-
deps.every(function (dep, i) { return dep === cachedDeps[i]; });
|
|
317
|
-
});
|
|
320
|
+
var index = findIndex(deps);
|
|
318
321
|
if (index > -1)
|
|
319
322
|
cacheStorage.splice(index, 1);
|
|
320
323
|
};
|
|
321
324
|
// Retrieves an item from the cache.
|
|
322
325
|
cache.get = function (deps) {
|
|
323
|
-
return cacheStorage[
|
|
326
|
+
return cacheStorage[findIndex(deps)] || null;
|
|
327
|
+
};
|
|
328
|
+
return cache;
|
|
329
|
+
function findIndex(deps) {
|
|
330
|
+
return cacheStorage.findIndex(function (_a) {
|
|
324
331
|
var cachedDeps = _a[0];
|
|
325
332
|
return lengthEquals(deps, cachedDeps.length) &&
|
|
326
333
|
deps.every(function (dep, i) { return dep === cachedDeps[i]; });
|
|
327
|
-
})
|
|
328
|
-
}
|
|
329
|
-
return cache;
|
|
334
|
+
});
|
|
335
|
+
}
|
|
330
336
|
}
|
|
331
337
|
|
|
332
338
|
// STATE REF
|
|
@@ -668,18 +674,21 @@ function hasRemainingTests(fieldName) {
|
|
|
668
674
|
return isNotEmpty(allIncomplete);
|
|
669
675
|
}
|
|
670
676
|
|
|
677
|
+
var Severity;
|
|
678
|
+
(function (Severity) {
|
|
679
|
+
Severity["WARNINGS"] = "warnings";
|
|
680
|
+
Severity["ERRORS"] = "errors";
|
|
681
|
+
})(Severity || (Severity = {}));
|
|
682
|
+
|
|
671
683
|
/**
|
|
672
684
|
* Reads the testObjects list and gets full validation result from it.
|
|
673
685
|
*/
|
|
674
686
|
function genTestsSummary() {
|
|
675
687
|
var testObjects = useTestsFlat();
|
|
676
|
-
var summary = {
|
|
677
|
-
errorCount: 0,
|
|
688
|
+
var summary = assign(baseStats(), {
|
|
678
689
|
groups: {},
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
warnCount: 0
|
|
682
|
-
};
|
|
690
|
+
tests: {}
|
|
691
|
+
});
|
|
683
692
|
appendSummary(testObjects);
|
|
684
693
|
return countFailures(summary);
|
|
685
694
|
function appendSummary(testObjects) {
|
|
@@ -707,30 +716,34 @@ function countFailures(summary) {
|
|
|
707
716
|
// eslint-disable-next-line max-statements
|
|
708
717
|
function genTestObject(summaryKey, testObject) {
|
|
709
718
|
var fieldName = testObject.fieldName, message = testObject.message;
|
|
710
|
-
summaryKey[fieldName] = summaryKey[fieldName] ||
|
|
711
|
-
errorCount: 0,
|
|
712
|
-
warnCount: 0,
|
|
713
|
-
testCount: 0
|
|
714
|
-
};
|
|
719
|
+
summaryKey[fieldName] = summaryKey[fieldName] || baseStats();
|
|
715
720
|
var testKey = summaryKey[fieldName];
|
|
716
721
|
if (testObject.isNonActionable())
|
|
717
722
|
return testKey;
|
|
718
723
|
summaryKey[fieldName].testCount++;
|
|
719
724
|
// Adds to severity group
|
|
720
|
-
function addTo(
|
|
725
|
+
function addTo(severity) {
|
|
726
|
+
var countKey = severity === Severity.ERRORS ? 'errorCount' : 'warnCount';
|
|
721
727
|
testKey[countKey]++;
|
|
722
728
|
if (message) {
|
|
723
|
-
testKey[
|
|
729
|
+
testKey[severity] = (testKey[severity] || []).concat(message);
|
|
724
730
|
}
|
|
725
731
|
}
|
|
726
732
|
if (testObject.isFailing()) {
|
|
727
|
-
addTo(
|
|
733
|
+
addTo(Severity.ERRORS);
|
|
728
734
|
}
|
|
729
735
|
else if (testObject.isWarning()) {
|
|
730
|
-
addTo(
|
|
736
|
+
addTo(Severity.WARNINGS);
|
|
731
737
|
}
|
|
732
738
|
return testKey;
|
|
733
739
|
}
|
|
740
|
+
function baseStats() {
|
|
741
|
+
return {
|
|
742
|
+
errorCount: 0,
|
|
743
|
+
warnCount: 0,
|
|
744
|
+
testCount: 0
|
|
745
|
+
};
|
|
746
|
+
}
|
|
734
747
|
|
|
735
748
|
/*! *****************************************************************************
|
|
736
749
|
Copyright (c) Microsoft Corporation.
|
|
@@ -776,7 +789,7 @@ function either(a, b) {
|
|
|
776
789
|
* Checks that a given test object matches the currently specified severity level
|
|
777
790
|
*/
|
|
778
791
|
function nonMatchingSeverityProfile(severity, testObject) {
|
|
779
|
-
return either(severity ===
|
|
792
|
+
return either(severity === Severity.WARNINGS, testObject.warns());
|
|
780
793
|
}
|
|
781
794
|
|
|
782
795
|
function collectFailureMessages(severity, testObjects, options) {
|
|
@@ -818,10 +831,10 @@ function getFailuresArrayOrObject(group, fieldName) {
|
|
|
818
831
|
}
|
|
819
832
|
|
|
820
833
|
function getErrors(fieldName) {
|
|
821
|
-
return getFailures(
|
|
834
|
+
return getFailures(Severity.ERRORS, fieldName);
|
|
822
835
|
}
|
|
823
836
|
function getWarnings(fieldName) {
|
|
824
|
-
return getFailures(
|
|
837
|
+
return getFailures(Severity.WARNINGS, fieldName);
|
|
825
838
|
}
|
|
826
839
|
/**
|
|
827
840
|
* @returns suite or field's errors or warnings.
|
|
@@ -835,11 +848,11 @@ function getFailures(severityKey, fieldName) {
|
|
|
835
848
|
}
|
|
836
849
|
|
|
837
850
|
function getErrorsByGroup(groupName, fieldName) {
|
|
838
|
-
var errors = getByGroup(
|
|
851
|
+
var errors = getByGroup(Severity.ERRORS, groupName, fieldName);
|
|
839
852
|
return getFailuresArrayOrObject(errors, fieldName);
|
|
840
853
|
}
|
|
841
854
|
function getWarningsByGroup(groupName, fieldName) {
|
|
842
|
-
var warnings = getByGroup(
|
|
855
|
+
var warnings = getByGroup(Severity.WARNINGS, groupName, fieldName);
|
|
843
856
|
return getFailuresArrayOrObject(warnings, fieldName);
|
|
844
857
|
}
|
|
845
858
|
/**
|
|
@@ -873,10 +886,10 @@ function hasFailuresLogic(testObject, severityKey, fieldName) {
|
|
|
873
886
|
}
|
|
874
887
|
|
|
875
888
|
function hasErrors(fieldName) {
|
|
876
|
-
return has(
|
|
889
|
+
return has(Severity.ERRORS, fieldName);
|
|
877
890
|
}
|
|
878
891
|
function hasWarnings(fieldName) {
|
|
879
|
-
return has(
|
|
892
|
+
return has(Severity.WARNINGS, fieldName);
|
|
880
893
|
}
|
|
881
894
|
function has(severityKey, fieldName) {
|
|
882
895
|
var testObjects = useTestsFlat();
|
|
@@ -886,10 +899,10 @@ function has(severityKey, fieldName) {
|
|
|
886
899
|
}
|
|
887
900
|
|
|
888
901
|
function hasErrorsByGroup(groupName, fieldName) {
|
|
889
|
-
return hasByGroup(
|
|
902
|
+
return hasByGroup(Severity.ERRORS, groupName, fieldName);
|
|
890
903
|
}
|
|
891
904
|
function hasWarningsByGroup(groupName, fieldName) {
|
|
892
|
-
return hasByGroup(
|
|
905
|
+
return hasByGroup(Severity.WARNINGS, groupName, fieldName);
|
|
893
906
|
}
|
|
894
907
|
/**
|
|
895
908
|
* Checks whether there are failures in a given group.
|
|
@@ -1042,18 +1055,12 @@ function createBus() {
|
|
|
1042
1055
|
var listeners = {};
|
|
1043
1056
|
return {
|
|
1044
1057
|
emit: function (event, data) {
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
}
|
|
1048
|
-
listeners[event].forEach(function (listener) {
|
|
1049
|
-
listener(data);
|
|
1058
|
+
(listeners[event] || []).forEach(function (handler) {
|
|
1059
|
+
handler(data);
|
|
1050
1060
|
});
|
|
1051
1061
|
},
|
|
1052
1062
|
on: function (event, handler) {
|
|
1053
|
-
|
|
1054
|
-
listeners[event] = [];
|
|
1055
|
-
}
|
|
1056
|
-
listeners[event].push(handler);
|
|
1063
|
+
listeners[event] = (listeners[event] || []).concat(handler);
|
|
1057
1064
|
return {
|
|
1058
1065
|
off: function () {
|
|
1059
1066
|
listeners[event] = listeners[event].filter(function (h) { return h !== handler; });
|
|
@@ -1121,9 +1128,7 @@ function runFieldCallbacks(fieldName) {
|
|
|
1121
1128
|
*/
|
|
1122
1129
|
function runDoneCallbacks() {
|
|
1123
1130
|
var doneCallbacks = useTestCallbacks()[0].doneCallbacks;
|
|
1124
|
-
|
|
1125
|
-
callEach(doneCallbacks);
|
|
1126
|
-
}
|
|
1131
|
+
callEach(doneCallbacks);
|
|
1127
1132
|
}
|
|
1128
1133
|
|
|
1129
1134
|
// eslint-disable-next-line max-lines-per-function
|
|
@@ -1137,14 +1142,21 @@ function initBus() {
|
|
|
1137
1142
|
}
|
|
1138
1143
|
testObject.done();
|
|
1139
1144
|
runFieldCallbacks(testObject.fieldName);
|
|
1140
|
-
|
|
1145
|
+
if (!hasRemainingTests()) {
|
|
1146
|
+
// When no more tests are running, emit the done event
|
|
1147
|
+
bus.emit(Events.ALL_RUNNING_TESTS_FINISHED);
|
|
1148
|
+
}
|
|
1141
1149
|
});
|
|
1142
1150
|
// Report that the suite completed its synchronous test run.
|
|
1143
1151
|
// Async operations may still be running.
|
|
1144
|
-
bus.on(Events.
|
|
1152
|
+
bus.on(Events.SUITE_CALLBACK_DONE_RUNNING, function () {
|
|
1145
1153
|
// Remove tests that are optional and need to be omitted
|
|
1146
1154
|
omitOptionalTests();
|
|
1147
1155
|
});
|
|
1156
|
+
// Called when all the tests, including async, are done running
|
|
1157
|
+
bus.on(Events.ALL_RUNNING_TESTS_FINISHED, function () {
|
|
1158
|
+
runDoneCallbacks();
|
|
1159
|
+
});
|
|
1148
1160
|
// Removes a certain field from the state.
|
|
1149
1161
|
bus.on(Events.REMOVE_FIELD, function (fieldName) {
|
|
1150
1162
|
useEachTestObject(function (testObject) {
|
|
@@ -1174,9 +1186,10 @@ function useBus() {
|
|
|
1174
1186
|
var Events;
|
|
1175
1187
|
(function (Events) {
|
|
1176
1188
|
Events["TEST_COMPLETED"] = "test_completed";
|
|
1189
|
+
Events["ALL_RUNNING_TESTS_FINISHED"] = "all_running_tests_finished";
|
|
1177
1190
|
Events["REMOVE_FIELD"] = "remove_field";
|
|
1178
1191
|
Events["RESET_FIELD"] = "reset_field";
|
|
1179
|
-
Events["
|
|
1192
|
+
Events["SUITE_CALLBACK_DONE_RUNNING"] = "suite_callback_done_running";
|
|
1180
1193
|
})(Events || (Events = {}));
|
|
1181
1194
|
|
|
1182
1195
|
// eslint-disable-next-line max-lines-per-function
|
|
@@ -1213,7 +1226,7 @@ function create() {
|
|
|
1213
1226
|
});
|
|
1214
1227
|
// Report the suite is done registering tests
|
|
1215
1228
|
// Async tests may still be running
|
|
1216
|
-
bus.emit(Events.
|
|
1229
|
+
bus.emit(Events.SUITE_CALLBACK_DONE_RUNNING);
|
|
1217
1230
|
// Return the result
|
|
1218
1231
|
return produceFullResult();
|
|
1219
1232
|
}), {
|
|
@@ -1244,7 +1257,7 @@ function create() {
|
|
|
1244
1257
|
*/
|
|
1245
1258
|
function each(list, callback) {
|
|
1246
1259
|
if (!isFunction(callback)) {
|
|
1247
|
-
throwError('callback must be a function');
|
|
1260
|
+
throwError('each callback must be a function');
|
|
1248
1261
|
}
|
|
1249
1262
|
isolate({ type: IsolateTypes.EACH }, function () {
|
|
1250
1263
|
list.forEach(function (arg, index) {
|
|
@@ -1480,6 +1493,45 @@ function include(fieldName) {
|
|
|
1480
1493
|
}
|
|
1481
1494
|
}
|
|
1482
1495
|
|
|
1496
|
+
/**
|
|
1497
|
+
* Sets the suite to "eager" (fail fast) mode.
|
|
1498
|
+
* Eager mode will skip running subsequent tests of a failing fields.
|
|
1499
|
+
*
|
|
1500
|
+
* @example
|
|
1501
|
+
* // in the following example, the second test of username will not run
|
|
1502
|
+
* // if the first test of username failed.
|
|
1503
|
+
* const suite = create((data) => {
|
|
1504
|
+
* eager();
|
|
1505
|
+
*
|
|
1506
|
+
* test('username', 'username is required', () => {
|
|
1507
|
+
* enforce(data.username).isNotBlank();
|
|
1508
|
+
* });
|
|
1509
|
+
*
|
|
1510
|
+
* test('username', 'username is too short', () => {
|
|
1511
|
+
* enforce(data.username).longerThan(2);
|
|
1512
|
+
* });
|
|
1513
|
+
* });
|
|
1514
|
+
*/
|
|
1515
|
+
function eager() {
|
|
1516
|
+
setMode(Modes.EAGER);
|
|
1517
|
+
}
|
|
1518
|
+
function shouldSkipBasedOnMode(testObject) {
|
|
1519
|
+
if (isEager() && hasErrors(testObject.fieldName))
|
|
1520
|
+
return true;
|
|
1521
|
+
return false;
|
|
1522
|
+
}
|
|
1523
|
+
function isEager() {
|
|
1524
|
+
return isMode(Modes.EAGER);
|
|
1525
|
+
}
|
|
1526
|
+
function isMode(mode) {
|
|
1527
|
+
var currentMode = context.useX().mode;
|
|
1528
|
+
return currentMode[0] === mode;
|
|
1529
|
+
}
|
|
1530
|
+
function setMode(nextMode) {
|
|
1531
|
+
var mode = context.useX().mode;
|
|
1532
|
+
mode[0] = nextMode;
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1483
1535
|
/**
|
|
1484
1536
|
* Conditionally omits tests from the suite.
|
|
1485
1537
|
*
|
|
@@ -1712,6 +1764,11 @@ function handleKeyTest(key, newTestObject) {
|
|
|
1712
1764
|
// eslint-disable-next-line max-statements
|
|
1713
1765
|
function registerPrevRunTest(testObject) {
|
|
1714
1766
|
var prevRunTest = useTestAtCursor(testObject);
|
|
1767
|
+
if (shouldSkipBasedOnMode(testObject)) {
|
|
1768
|
+
moveForward();
|
|
1769
|
+
testObject.skip();
|
|
1770
|
+
return testObject;
|
|
1771
|
+
}
|
|
1715
1772
|
if (isOmitted()) {
|
|
1716
1773
|
prevRunTest.omit();
|
|
1717
1774
|
moveForward();
|
|
@@ -1820,7 +1877,7 @@ function warn() {
|
|
|
1820
1877
|
ctx.currentTest.warn();
|
|
1821
1878
|
}
|
|
1822
1879
|
|
|
1823
|
-
var VERSION = "4.
|
|
1880
|
+
var VERSION = "4.2.0";
|
|
1824
1881
|
|
|
1825
1882
|
Object.defineProperty(exports, 'enforce', {
|
|
1826
1883
|
enumerable: true,
|
|
@@ -1832,6 +1889,7 @@ exports.VERSION = VERSION;
|
|
|
1832
1889
|
exports.context = context;
|
|
1833
1890
|
exports.create = create;
|
|
1834
1891
|
exports.each = each;
|
|
1892
|
+
exports.eager = eager;
|
|
1835
1893
|
exports.group = group;
|
|
1836
1894
|
exports.include = include;
|
|
1837
1895
|
exports.omitWhen = omitWhen;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n,t,e=require("n4s"),r=require("context"),u=Object.assign,i=(n=0,function(){return"".concat(n++)});function o(n){return"function"==typeof n}function s(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return o(n)?n.apply(void 0,t):n}function c(n,t){var e;return null!==(e=s(n))&&void 0!==e?e:t}function a(n,t){throw Error(c(t,n))}function f(n,t){setTimeout((function(){a(n,t)}),0)}function l(n){function t(n,t,u){return r.references.push(),e(n,s(t,u)),function(){return[r.references[n],function(t){return e(n,s(t,r.references[n]))}]}}function e(t,e){var i=r.references[t];r.references[t]=e,o(t=u[t][1])&&t(e,i),o(n)&&n()}var r={references:[]},u=[];return{registerStateKey:function(n,e){var r=u.length;return u.push([n,e]),t(r,n)},reset:function(){var n=r.references;r.references=[],u.forEach((function(e,r){return t(r,e[0],n[r])}))}}}function p(n,t){var e=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(e),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function v(n){return[].concat(n)}function d(n){return(n=v(n))[n.length-1]}function g(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return d(t)},getCursor:function(){return v(t)},next:function(){return t[t.length-1]++,d(t)},removeLevel:function(){t.pop()},reset:n}}!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(t||(t={}));var h=r.createContext((function(n,e){return e?null:u({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:t.DEFAULT,keys:{current:{},prev:{}}},testCursor:g()},n)}));function m(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function y(n){return!!Array.isArray(n)}function E(n){return null===n}var b=m(E);function N(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];y(u)?e.push(N(u,t)):(u=t(u),b(u)&&e.push(u))}return e}function C(n,t,e){return S(n,t)[d(t)]=e,n}function T(n){return v(n).reduce((function(n,t){return y(t)?n.concat(T(t)):v(n).concat(t)}),[])}function S(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=c(n[r],[]),n=n[r]}return n}function k(n){return void 0===n}function O(n){return E(n)||k(n)}function x(n){return String(n)===n}function I(n,t){return k(n)&&x(t)}function P(n,t){return n.length===Number(t)}function w(n){void 0===n&&(n=1);var t=[],e=function(r,u){var i=e.get(r);return i?i[1]:(u=u(),t.unshift([r.concat(),u]),function(n,t){return n.length>Number(t)}(t,n)&&(t.length=n),u)};return e.invalidate=function(n){var e=t.findIndex((function(t){var e=t[0];return P(n,e.length)&&n.every((function(n,t){return n===e[t]}))}));-1<e&&t.splice(e,1)},e.get=function(n){return t[t.findIndex((function(t){var e=t[0];return P(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))]||null},e}function F(){return h.useX().stateRef}function _(){return F().suiteId()[0]}function D(){return F().testCallbacks()}function L(){return F().optionalFields()}function W(){return F().testObjects()}function X(){(0,W()[1])((function(n){return{prev:n.prev,current:v(n.current)}}))}function A(n){(0,W()[1])((function(t){return{prev:t.prev,current:v(n(t.current))}}))}function U(){return T(N(W()[0].current,(function(n){return n.isPending()?n:null})))}var R,M=w();function q(){var n=W()[0].current;return M([n],(function(){return T(n)}))}function G(n){q().forEach(n)}!function(n){n.Error="error",n.Warning="warning"}(R||(R={}));var j=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=i(),this.severity=R.Error,this.status=H,this.fieldName=n,this.testFn=t,u&&(this.groupName=u),e&&(this.message=e),r&&(this.key=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){I(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Q||(this.status=n)},n.prototype.warns=function(){return this.severity===R.Warning},n.prototype.setPending=function(){this.setStatus(z)},n.prototype.fail=function(){this.setStatus(this.warns()?B:V)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Y)},n.prototype.warn=function(){this.severity=R.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(K)},n.prototype.cancel=function(){this.setStatus(J),X()},n.prototype.reset=function(){this.status=H,X()},n.prototype.omit=function(){this.setStatus(Q)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},n.prototype.isPending=function(){return this.statusEquals(z)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(Q)},n.prototype.isUntested=function(){return this.statusEquals(H)},n.prototype.isFailing=function(){return this.statusEquals(V)},n.prototype.isCanceled=function(){return this.statusEquals(J)},n.prototype.isSkipped=function(){return this.statusEquals(K)},n.prototype.isPassing=function(){return this.statusEquals(Y)},n.prototype.isWarning=function(){return this.statusEquals(B)},n.prototype.statusEquals=function(n){return this.status===n},n}(),H="UNTESTED",K="SKIPPED",V="FAILED",B="WARNING",Y="PASSING",z="PENDING",J="CANCELED",Q="OMITTED";function Z(){return h.useX().testCursor.getCursor()}function $(){return h.useX().testCursor.cursorAt()}function nn(){return h.useX().testCursor.next()}function tn(n,e){if(n=void 0===(n=n.type)?t.DEFAULT:n,o(e)){var r={current:{},prev:{}},u=Z();return h.run({isolate:{type:n,keys:r}},(function(){h.useX().testCursor.addLevel(),r.prev=v(S(W()[0].prev,Z())).reduce((function(n,t){return t instanceof j&&!O(t.key)?(n[t.key]=t,n):n}),{}),A((function(n){return C(n,u,[])}));var n=e();return h.useX().testCursor.removeLevel(),nn(),n}))}}function en(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function rn(n){if(n){if(function(n){return"number"==typeof n}(n))return 0===n;if(en(n,"length"))return P(n,0);if("object"==typeof n)return P(Object.keys(n),0)}return!0}var un=m(rn);function on(n,t){return!!t&&!sn(n,t)}function sn(n,t){return!(!t||n.fieldName!==t)}function cn(n){var t=U();return!rn(t)&&(n?t.some((function(t){return sn(t,n)})):un(t))}function an(n,t){function e(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||{errorCount:0,warnCount:0,testCount:0};var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e("errorCount","errors"):t.isWarning()&&e("warnCount","warnings")),i}var fn=function(){return(fn=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var u in t=arguments[e])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)};function ln(n,t,e){if(e||2===arguments.length)for(var r,u=0,i=t.length;u<i;u++)!r&&u in t||(r||(r=Array.prototype.slice.call(t,0,u)),r[u]=t[u]);return n.concat(r||Array.prototype.slice.call(t))}function pn(n,t){return function(n,t){return!!n!=!!t}("warnings"===n,t.warns())}function vn(n,t,e){var r;void 0===e&&(e={});var u=(e=e||{}).group,i=e.fieldName;return t.reduce((function(t,e){return function(n,t,e,r){return!!(function(n,t){return!(!t||n.groupName===t)}(n,e)||on(n,r)||pn(t,n))}(e,n,u,i)||!e.hasFailures()||(t[e.fieldName]=(t[e.fieldName]||[]).concat(e.message||[])),t}),fn({},i&&((r={})[i]=[],r)))}function dn(n,t){return t?n[t]:n}function gn(n){return mn("errors",n)}function hn(n){return mn("warnings",n)}function mn(n,t){return dn(n=vn(n,q(),{fieldName:t}),t)}function yn(n,t){return dn(n=bn("errors",n,t),t)}function En(n,t){return dn(n=bn("warnings",n,t),t)}function bn(n,t,e){return t||a("get".concat(n[0].toUpperCase()).concat(n.slice(1),"ByGroup requires a group name. Received `").concat(t,"` instead.")),vn(n,q(),{group:t,fieldName:e})}function Nn(n,t,e){return!(!n.hasFailures()||on(n,e)||pn(t,n))}function Cn(n){return Sn("errors",n)}function Tn(n){return Sn("warnings",n)}function Sn(n,t){return q().some((function(e){return Nn(e,n,t)}))}function kn(n,t){return xn("errors",n,t)}function On(n,t){return xn("warnings",n,t)}function xn(n,t,e){return q().some((function(r){return t===r.groupName&&Nn(r,n,e)}))}function In(n,t){return!!function(n){var t=q().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return!!n&&!!t[n]}(t)||!n.hasErrors(t)&&(!(rn(q())||function(n,t){return!!t&&rn(n.tests[t])}(n,t)||function(n){var t=L()[0];return un(U().filter((function(e){return!on(e,n)&&!0!==t[e.fieldName]})))}(t))&&function(n){var t=q(),e=L()[0];return t.every((function(t){return!!on(t,n)||(!0===e[t.fieldName]||t.isTested()||t.isOmitted())}))}(t))}var Pn=w(20);function wn(){var n=q(),t={stateRef:F()};return Pn([n],h.bind(t,(function(){var n=F().suiteName()[0];return u(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return q().forEach((function(t){var e=t.fieldName,r=t.groupName;n.tests[e]=an(n.tests,t),r&&(n.groups[r]=n.groups[r]||{},n.groups[r][e]=an(n.groups[r],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:h.bind(t,gn),getErrorsByGroup:h.bind(t,yn),getWarnings:h.bind(t,hn),getWarningsByGroup:h.bind(t,En),hasErrors:h.bind(t,Cn),hasErrorsByGroup:h.bind(t,kn),hasWarnings:h.bind(t,Tn),hasWarningsByGroup:h.bind(t,On),isValid:h.bind(t,(function(n){return In(wn(),n)})),suiteName:n})})))}var Fn=w(20);function _n(){var n=q(),t={stateRef:F()};return Fn([n],h.bind(t,(function(){return u({},wn(),{done:h.bind(t,Xn)})})))}function Dn(n,t,e){return!(o(n)&&(!t||e.tests[t]&&!rn(e.tests[t].testCount)))}function Ln(n){return!(cn()&&(!n||cn(n)))}var Wn,Xn=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];if(n=n[1],t=_n(),Dn(e,n,t))return t;var r=function(){return e(wn())};return Ln(n)?(r(),t):(An(r,n),t)};function An(n,t){var e=h.bind({},n);(0,D()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(e):n.doneCallbacks.push(e),n}))}function Un(n){return n.forEach((function(n){return n()}))}function Rn(){var n=function(){var n={};return{emit:function(t,e){n[t]&&n[t].forEach((function(n){n(e)}))},on:function(t,e){return n[t]||(n[t]=[]),n[t].push(e),{off:function(){n[t]=n[t].filter((function(n){return n!==e}))}}}}}();return n.on(Wn.TEST_COMPLETED,(function(n){n.isCanceled()||(n.done(),function(n){var t=D()[0].fieldCallbacks;n&&!cn(n)&&y(t[n])&&Un(t[n])}(n.fieldName),function(){var n=D()[0].doneCallbacks;cn()||Un(n)}())})),n.on(Wn.SUITE_COMPLETED,(function(){!function(){var n=L()[0];if(!rn(n)){var t={};A((function(e){return N(e,(function(e){var r=e.fieldName;if(t.hasOwnProperty(r))t[e.fieldName]&&e.omit();else{var u=n[r];o(u)&&(t[r]=u(),t[e.fieldName]&&e.omit())}return e}))}))}}()})),n.on(Wn.REMOVE_FIELD,(function(n){G((function(t){sn(t,n)&&(t.cancel(),function(n){A((function(t){return N(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Wn.RESET_FIELD,(function(n){G((function(t){sn(t,n)&&t.reset()}))})),n}function Mn(){var n=h.useX();return n.bus||a(),n.bus}!function(n){n.TEST_COMPLETED="test_completed",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_COMPLETED="suite_completed"}(Wn||(Wn={}));function qn(){return!!h.useX().skipped}function Gn(n){return Kn(0,"tests",n)}function jn(n){return Kn(1,"tests",n)}function Hn(n){var t=n.fieldName;if(n=n.groupName,qn())return!0;var e=h.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){if(function(n){var t=h.useX().exclusion.groups;if(en(t,n))return!1===t[n];for(var e in t)if(!0===t[e])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!i&&(!!Vn(u)||!1===u[t])}return!!function(n){var t=h.useX().exclusion;return!!function(){var n,t=h.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}()&&(!n||(!(n in t.groups)||!t.groups[n]))}(n)||!i&&(!!Vn(u)&&!s(e[t]))}function Kn(n,t,e){var r=h.useX("hook called outside of a running suite.");e&&v(e).forEach((function(e){x(e)&&(r.exclusion[t][e]=0===n)}))}function Vn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Bn(n){a("Wrong arguments passed to group. Group ".concat(n,"."))}function Yn(){return!!h.useX().omitted}Gn.group=function(n){return Kn(0,"groups",n)},jn.group=function(n){return Kn(1,"groups",n)};var zn=m(x);function Jn(n){return n&&o(n.then)}function Qn(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function Zn(n){var t=n.asyncTest,e=n.message;if(Jn(t)){var r=Mn().emit,u=F(),i=h.bind({stateRef:u},(function(){X(),r(Wn.TEST_COMPLETED,n)}));u=h.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=x(t)?t:e,n.fail(),i())}));try{t.then(i,u)}catch(n){u()}}}function $n(n){var t=Mn(),e=function(n){return h.run({currentTest:n},(function(){try{var t=n.testFn()}catch(e){I(n.message,e)&&(n.message=e),t=!1}return!1===t&&n.fail(),t}))}(n);try{Jn(e)?(n.asyncTest=e,n.setPending(),Zn(n)):t.emit(Wn.TEST_COMPLETED,n)}catch(t){a("Unexpected error encountered during test registration.\n Test Object: ".concat(n,".\n Error: ").concat(t,"."))}}function nt(n){var e=W()[0].prev;return rn(e)?(tt(n),n):(e=function(n){var t=Z();return function(n,t){return S(n,t)[d(t)]}(n,t)}(e),O(n.key)?(function(n,t){return un(n)&&!Qn(n,t)}(e,n)&&(function(n,e){h.useX().isolate.type===t.EACH||f("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(e.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.'))}(e,n),function(){var n=W(),t=n[1],e=n[0].prev;n=S(e,Z());var r=$();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),e=null),tt(n=c(e,n)),n):(tt(n=function(n,t){var e=function(n){return h.useX().isolate.keys.prev[n]}(n);return e&&(t=e),function(n,t){var e=h.useX().isolate.keys.current;O(e[n])?e[n]=t:f('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted."))}(n,t),t}(n.key,n)),n))}function tt(n){var t=Z();A((function(e){return C(e,t,n)}))}function et(n){var t=nt(n);return Yn()?(t.omit(),nn(),t):Hn(n)?(t.skip(qn()),nn(),t):(function(n,t){t!==n&&Qn(n,t)&&n.isPending()&&n.cancel()}(t,n),tt(n),nn(),function(n){n.isUntested()?$n(n):Jn(n.asyncTest)&&(n.setPending(),Zn(n))}(n),n)}function rt(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];var r=o(t[1])?t:ln([void 0],t,!0);t=r[0],e=r[1],r=r[2],zn(n)&&it("fieldName","string"),o(e)||it("Test callback","function");var u=h.useX();return et(t=new j(n,e,{message:t,groupName:u.groupName,key:r}))}var ut=u(rt,{memo:function(n){var t=w(100);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=$();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[_(),e,u].concat(i),E(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):et(r[1])}}(rt)});function it(n,t){a("Incompatible params passed to test function. ".concat(n," must be a ").concat(t))}Object.defineProperty(exports,"enforce",{enumerable:!0,get:function(){return e.enforce}}),exports.VERSION="4.1.3",exports.context=h,exports.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],o(r)||a("vest.create: Expected callback to be a function.");var s=Rn(),c=l();return n={stateRef:p(c,{suiteId:i(),suiteName:n}),bus:s},u(h.bind(n,(function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return c.reset(),tn({type:t.SUITE},(function(){r.apply(void 0,n)})),s.emit(Wn.SUITE_COMPLETED),_n()})),{get:h.bind(n,wn),remove:h.bind(n,(function(n){s.emit(Wn.REMOVE_FIELD,n)})),reset:c.reset,resetField:h.bind(n,(function(n){s.emit(Wn.RESET_FIELD,n)}))})},exports.each=function(n,e){o(e)||a("callback must be a function"),tn({type:t.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},exports.group=function(n,e){x(n)||Bn("name must be a string"),o(e)||Bn("callback must be a function"),tn({type:t.GROUP},(function(){h.run({groupName:n},e)}))},exports.include=function(n){function t(t){var e=h.useX(),r=e.exclusion;e.inclusion[n]=function(){return en(r.tests,n)?c(r.tests[n],!0):x(t)?!!r.tests[t]:s(t,s(wn))}}var e=h.useX();return n?(e.inclusion[n]=c(e.exclusion.tests[n],!0),{when:t}):{when:t}},exports.omitWhen=function(n,e){tn({type:t.OMIT_WHEN},(function(){h.run({omitted:Yn()||s(n,s(wn))},(function(){return e()}))}))},exports.only=Gn,exports.optional=function(n){(0,L()[1])((function(t){if(y(n)||x(n))v(n).forEach((function(n){t[n]=!0}));else for(var e in n)t[e]=n[e];return t}))},exports.skip=jn,exports.skipWhen=function(n,e){tn({type:t.SKIP_WHEN},(function(){h.run({skipped:qn()||s(n,s(wn))},(function(){return e()}))}))},exports.test=ut,exports.warn=function(){var n=h.useX("warn hook called outside of a running suite.");n.currentTest||a("warn called outside of a test."),n.currentTest.warn()};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n,t,e,r=require("n4s"),u=require("context"),i=Object.assign,o=(n=0,function(){return"".concat(n++)});function s(n){return"function"==typeof n}function c(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return s(n)?n.apply(void 0,t):n}function a(n,t){var e;return null!==(e=c(n))&&void 0!==e?e:t}function f(n,t){throw Error(a(t,n))}function l(n,t){setTimeout((function(){f(n,t)}),0)}function p(n){function t(n,t,u){return r.references.push(),e(n,c(t,u)),function(){return[r.references[n],function(t){return e(n,c(t,r.references[n]))}]}}function e(t,e){var i=r.references[t];r.references[t]=e,s(t=u[t][1])&&t(e,i),s(n)&&n()}var r={references:[]},u=[];return{registerStateKey:function(n,e){var r=u.length;return u.push([n,e]),t(r,n)},reset:function(){var n=r.references;r.references=[],u.forEach((function(e,r){return t(r,e[0],n[r])}))}}}function d(n,t){var e=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(e),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function v(n){return[].concat(n)}function g(n){return(n=v(n))[n.length-1]}function h(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return g(t)},getCursor:function(){return v(t)},next:function(){return t[t.length-1]++,g(t)},removeLevel:function(){t.pop()},reset:n}}!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(t||(t={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(e||(e={}));var E=u.createContext((function(n,r){return r?null:i({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:t.DEFAULT,keys:{current:{},prev:{}}},mode:[e.ALL],testCursor:h()},n)}));function m(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function y(n){return!!Array.isArray(n)}function N(n){return null===n}var S=m(N);function b(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];y(u)?e.push(b(u,t)):(u=t(u),S(u)&&e.push(u))}return e}function C(n,t,e){return T(n,t)[g(t)]=e,n}function R(n){return v(n).reduce((function(n,t){return y(t)?n.concat(R(t)):v(n).concat(t)}),[])}function T(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=a(n[r],[]),n=n[r]}return n}function I(n){return void 0===n}function _(n){return N(n)||I(n)}function A(n){return String(n)===n}function O(n,t){return I(n)&&A(t)}function k(n,t){return n.length===Number(t)}function L(n){function t(n){return e.findIndex((function(t){var e=t[0];return k(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))}void 0===n&&(n=1);var e=[],r=function(t,u){var i=r.get(t);return i?i[1]:(u=u(),e.unshift([t.concat(),u]),function(n,t){return n.length>Number(t)}(e,n)&&(e.length=n),u)};return r.invalidate=function(n){-1<(n=t(n))&&e.splice(n,1)},r.get=function(n){return e[t(n)]||null},r}function x(){return E.useX().stateRef}function F(){return x().suiteId()[0]}function G(){return x().testCallbacks()}function P(){return x().optionalFields()}function W(){return x().testObjects()}function D(){(0,W()[1])((function(n){return{prev:n.prev,current:v(n.current)}}))}function U(n){(0,W()[1])((function(t){return{prev:t.prev,current:v(n(t.current))}}))}function w(){return R(b(W()[0].current,(function(n){return n.isPending()?n:null})))}var X,H=L();function K(){var n=W()[0].current;return H([n],(function(){return R(n)}))}function q(n){K().forEach(n)}!function(n){n.Error="error",n.Warning="warning"}(X||(X={}));var M=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=o(),this.severity=X.Error,this.status=j,this.fieldName=n,this.testFn=t,u&&(this.groupName=u),e&&(this.message=e),r&&(this.key=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){O(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Z||(this.status=n)},n.prototype.warns=function(){return this.severity===X.Warning},n.prototype.setPending=function(){this.setStatus(J)},n.prototype.fail=function(){this.setStatus(this.warns()?Y:V)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(z)},n.prototype.warn=function(){this.severity=X.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(B)},n.prototype.cancel=function(){this.setStatus(Q),D()},n.prototype.reset=function(){this.status=j,D()},n.prototype.omit=function(){this.setStatus(Z)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},n.prototype.isPending=function(){return this.statusEquals(J)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(Z)},n.prototype.isUntested=function(){return this.statusEquals(j)},n.prototype.isFailing=function(){return this.statusEquals(V)},n.prototype.isCanceled=function(){return this.statusEquals(Q)},n.prototype.isSkipped=function(){return this.statusEquals(B)},n.prototype.isPassing=function(){return this.statusEquals(z)},n.prototype.isWarning=function(){return this.statusEquals(Y)},n.prototype.statusEquals=function(n){return this.status===n},n}(),j="UNTESTED",B="SKIPPED",V="FAILED",Y="WARNING",z="PASSING",J="PENDING",Q="CANCELED",Z="OMITTED";function $(){return E.useX().testCursor.getCursor()}function nn(){return E.useX().testCursor.cursorAt()}function tn(){return E.useX().testCursor.next()}function en(n,e){if(n=void 0===(n=n.type)?t.DEFAULT:n,s(e)){var r={current:{},prev:{}},u=$();return E.run({isolate:{type:n,keys:r}},(function(){E.useX().testCursor.addLevel(),r.prev=v(T(W()[0].prev,$())).reduce((function(n,t){return t instanceof M&&!_(t.key)?(n[t.key]=t,n):n}),{}),U((function(n){return C(n,u,[])}));var n=e();return E.useX().testCursor.removeLevel(),tn(),n}))}}function rn(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function un(n){if(n){if(function(n){return"number"==typeof n}(n))return 0===n;if(rn(n,"length"))return k(n,0);if("object"==typeof n)return k(Object.keys(n),0)}return!0}var on,sn=m(un);function cn(n,t){return!!t&&!an(n,t)}function an(n,t){return!(!t||n.fieldName!==t)}function fn(n){var t=w();return!un(t)&&(n?t.some((function(t){return an(t,n)})):sn(t))}function ln(n,t){function e(n){i[n===on.ERRORS?"errorCount":"warnCount"]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||{errorCount:0,warnCount:0,testCount:0};var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(on.ERRORS):t.isWarning()&&e(on.WARNINGS)),i}!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(on||(on={}));var pn=function(){return(pn=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var u in t=arguments[e])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)};function dn(n,t,e){if(e||2===arguments.length)for(var r,u=0,i=t.length;u<i;u++)!r&&u in t||(r||(r=Array.prototype.slice.call(t,0,u)),r[u]=t[u]);return n.concat(r||Array.prototype.slice.call(t))}function vn(n,t){return function(n,t){return!!n!=!!t}(n===on.WARNINGS,t.warns())}function gn(n,t,e){var r;void 0===e&&(e={});var u=(e=e||{}).group,i=e.fieldName;return t.reduce((function(t,e){return function(n,t,e,r){return!!(function(n,t){return!(!t||n.groupName===t)}(n,e)||cn(n,r)||vn(t,n))}(e,n,u,i)||!e.hasFailures()||(t[e.fieldName]=(t[e.fieldName]||[]).concat(e.message||[])),t}),pn({},i&&((r={})[i]=[],r)))}function hn(n,t){return t?n[t]:n}function En(n){return yn(on.ERRORS,n)}function mn(n){return yn(on.WARNINGS,n)}function yn(n,t){return hn(n=gn(n,K(),{fieldName:t}),t)}function Nn(n,t){return hn(n=bn(on.ERRORS,n,t),t)}function Sn(n,t){return hn(n=bn(on.WARNINGS,n,t),t)}function bn(n,t,e){return t||f("get".concat(n[0].toUpperCase()).concat(n.slice(1),"ByGroup requires a group name. Received `").concat(t,"` instead.")),gn(n,K(),{group:t,fieldName:e})}function Cn(n,t,e){return!(!n.hasFailures()||cn(n,e)||vn(t,n))}function Rn(n){return In(on.ERRORS,n)}function Tn(n){return In(on.WARNINGS,n)}function In(n,t){return K().some((function(e){return Cn(e,n,t)}))}function _n(n,t){return On(on.ERRORS,n,t)}function An(n,t){return On(on.WARNINGS,n,t)}function On(n,t,e){return K().some((function(r){return t===r.groupName&&Cn(r,n,e)}))}function kn(n,t){return!!function(n){var t=K().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return!!n&&!!t[n]}(t)||!n.hasErrors(t)&&(!(un(K())||function(n,t){return!!t&&un(n.tests[t])}(n,t)||function(n){var t=P()[0];return sn(w().filter((function(e){return!cn(e,n)&&!0!==t[e.fieldName]})))}(t))&&function(n){var t=K(),e=P()[0];return t.every((function(t){return!!cn(t,n)||(!0===e[t.fieldName]||t.isTested()||t.isOmitted())}))}(t))}var Ln=L(20);function xn(){var n=K(),t={stateRef:x()};return Ln([n],E.bind(t,(function(){var n=x().suiteName()[0];return i(function(){var n=K(),t=i({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{}});return n.forEach((function(n){var e=n.fieldName,r=n.groupName;t.tests[e]=ln(t.tests,n),r&&(t.groups[r]=t.groups[r]||{},t.groups[r][e]=ln(t.groups[r],n))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}(),{getErrors:E.bind(t,En),getErrorsByGroup:E.bind(t,Nn),getWarnings:E.bind(t,mn),getWarningsByGroup:E.bind(t,Sn),hasErrors:E.bind(t,Rn),hasErrorsByGroup:E.bind(t,_n),hasWarnings:E.bind(t,Tn),hasWarningsByGroup:E.bind(t,An),isValid:E.bind(t,(function(n){return kn(xn(),n)})),suiteName:n})})))}var Fn=L(20);function Gn(){var n=K(),t={stateRef:x()};return Fn([n],E.bind(t,(function(){return i({},xn(),{done:E.bind(t,Un)})})))}function Pn(n,t,e){return!(s(n)&&(!t||e.tests[t]&&!un(e.tests[t].testCount)))}function Wn(n){return!(fn()&&(!n||fn(n)))}var Dn,Un=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];if(n=n[1],t=Gn(),Pn(e,n,t))return t;var r=function(){return e(xn())};return Wn(n)?(r(),t):(wn(r,n),t)};function wn(n,t){var e=E.bind({},n);(0,G()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(e):n.doneCallbacks.push(e),n}))}function Xn(n){return n.forEach((function(n){return n()}))}function Hn(){var n=function(){var n={};return{emit:function(t,e){(n[t]||[]).forEach((function(n){n(e)}))},on:function(t,e){return n[t]=(n[t]||[]).concat(e),{off:function(){n[t]=n[t].filter((function(n){return n!==e}))}}}}}();return n.on(Dn.TEST_COMPLETED,(function(t){t.isCanceled()||(t.done(),function(n){var t=G()[0].fieldCallbacks;n&&!fn(n)&&y(t[n])&&Xn(t[n])}(t.fieldName),fn()||n.emit(Dn.ALL_RUNNING_TESTS_FINISHED))})),n.on(Dn.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var n=P()[0];if(!un(n)){var t={};U((function(e){return b(e,(function(e){var r=e.fieldName;if(t.hasOwnProperty(r))t[e.fieldName]&&e.omit();else{var u=n[r];s(u)&&(t[r]=u(),t[e.fieldName]&&e.omit())}return e}))}))}}()})),n.on(Dn.ALL_RUNNING_TESTS_FINISHED,(function(){Xn(G()[0].doneCallbacks)})),n.on(Dn.REMOVE_FIELD,(function(n){q((function(t){an(t,n)&&(t.cancel(),function(n){U((function(t){return b(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Dn.RESET_FIELD,(function(n){q((function(t){an(t,n)&&t.reset()}))})),n}function Kn(){var n=E.useX();return n.bus||f(),n.bus}!function(n){n.TEST_COMPLETED="test_completed",n.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running"}(Dn||(Dn={}));function qn(){return!!E.useX().skipped}function Mn(n){return Vn(0,"tests",n)}function jn(n){return Vn(1,"tests",n)}function Bn(n){var t=n.fieldName;if(n=n.groupName,qn())return!0;var e=E.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){if(function(n){var t=E.useX().exclusion.groups;if(rn(t,n))return!1===t[n];for(var e in t)if(!0===t[e])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!i&&(!!Yn(u)||!1===u[t])}return!!function(n){var t=E.useX().exclusion;return!!function(){var n,t=E.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}()&&(!n||(!(n in t.groups)||!t.groups[n]))}(n)||!i&&(!!Yn(u)&&!c(e[t]))}function Vn(n,t,e){var r=E.useX("hook called outside of a running suite.");e&&v(e).forEach((function(e){A(e)&&(r.exclusion[t][e]=0===n)}))}function Yn(n){for(var t in n)if(!0===n[t])return!0;return!1}function zn(n){f("Wrong arguments passed to group. Group ".concat(n,"."))}function Jn(n){return!(!function(n){return E.useX().mode[0]===n}(e.EAGER)||!Rn(n.fieldName))}function Qn(){return!!E.useX().omitted}Mn.group=function(n){return Vn(0,"groups",n)},jn.group=function(n){return Vn(1,"groups",n)};var Zn=m(A);function $n(n){return n&&s(n.then)}function nt(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function tt(n){var t=n.asyncTest,e=n.message;if($n(t)){var r=Kn().emit,u=x(),i=E.bind({stateRef:u},(function(){D(),r(Dn.TEST_COMPLETED,n)}));u=E.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=A(t)?t:e,n.fail(),i())}));try{t.then(i,u)}catch(n){u()}}}function et(n){var t=Kn(),e=function(n){return E.run({currentTest:n},(function(){try{var t=n.testFn()}catch(e){O(n.message,e)&&(n.message=e),t=!1}return!1===t&&n.fail(),t}))}(n);try{$n(e)?(n.asyncTest=e,n.setPending(),tt(n)):t.emit(Dn.TEST_COMPLETED,n)}catch(t){f("Unexpected error encountered during test registration.\n Test Object: ".concat(n,".\n Error: ").concat(t,"."))}}function rt(n){var e=W()[0].prev;return un(e)?(ut(n),n):(e=function(n){var t=$();return function(n,t){return T(n,t)[g(t)]}(n,t)}(e),_(n.key)?(function(n,t){return sn(n)&&!nt(n,t)}(e,n)&&(function(n,e){E.useX().isolate.type===t.EACH||l("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(e.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.'))}(e,n),function(){var n=W(),t=n[1],e=n[0].prev;n=T(e,$());var r=nn();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),e=null),ut(n=a(e,n)),n):(ut(n=function(n,t){var e=function(n){return E.useX().isolate.keys.prev[n]}(n);return e&&(t=e),function(n,t){var e=E.useX().isolate.keys.current;_(e[n])?e[n]=t:l('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted."))}(n,t),t}(n.key,n)),n))}function ut(n){var t=$();U((function(e){return C(e,t,n)}))}function it(n){var t=rt(n);return Jn(n)?(tn(),n.skip(),n):Qn()?(t.omit(),tn(),t):Bn(n)?(t.skip(qn()),tn(),t):(function(n,t){t!==n&&nt(n,t)&&n.isPending()&&n.cancel()}(t,n),ut(n),tn(),function(n){n.isUntested()?et(n):$n(n.asyncTest)&&(n.setPending(),tt(n))}(n),n)}function ot(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];var r=s(t[1])?t:dn([void 0],t,!0);t=r[0],e=r[1],r=r[2],Zn(n)&&ct("fieldName","string"),s(e)||ct("Test callback","function");var u=E.useX();return it(t=new M(n,e,{message:t,groupName:u.groupName,key:r}))}var st=i(ot,{memo:function(n){var t=L(100);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=nn();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[F(),e,u].concat(i),N(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):it(r[1])}}(ot)});function ct(n,t){f("Incompatible params passed to test function. ".concat(n," must be a ").concat(t))}Object.defineProperty(exports,"enforce",{enumerable:!0,get:function(){return r.enforce}}),exports.VERSION="4.2.0",exports.context=E,exports.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],s(r)||f("vest.create: Expected callback to be a function.");var u=Hn(),c=p();return n={stateRef:d(c,{suiteId:o(),suiteName:n}),bus:u},i(E.bind(n,(function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return c.reset(),en({type:t.SUITE},(function(){r.apply(void 0,n)})),u.emit(Dn.SUITE_CALLBACK_DONE_RUNNING),Gn()})),{get:E.bind(n,xn),remove:E.bind(n,(function(n){u.emit(Dn.REMOVE_FIELD,n)})),reset:c.reset,resetField:E.bind(n,(function(n){u.emit(Dn.RESET_FIELD,n)}))})},exports.each=function(n,e){s(e)||f("each callback must be a function"),en({type:t.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},exports.eager=function(){!function(n){E.useX().mode[0]=n}(e.EAGER)},exports.group=function(n,e){A(n)||zn("name must be a string"),s(e)||zn("callback must be a function"),en({type:t.GROUP},(function(){E.run({groupName:n},e)}))},exports.include=function(n){function t(t){var e=E.useX(),r=e.exclusion;e.inclusion[n]=function(){return rn(r.tests,n)?a(r.tests[n],!0):A(t)?!!r.tests[t]:c(t,c(xn))}}var e=E.useX();return n?(e.inclusion[n]=a(e.exclusion.tests[n],!0),{when:t}):{when:t}},exports.omitWhen=function(n,e){en({type:t.OMIT_WHEN},(function(){E.run({omitted:Qn()||c(n,c(xn))},(function(){return e()}))}))},exports.only=Mn,exports.optional=function(n){(0,P()[1])((function(t){if(y(n)||A(n))v(n).forEach((function(n){t[n]=!0}));else for(var e in n)t[e]=n[e];return t}))},exports.skip=jn,exports.skipWhen=function(n,e){en({type:t.SKIP_WHEN},(function(){E.run({skipped:qn()||c(n,c(xn))},(function(){return e()}))}))},exports.test=st,exports.warn=function(){var n=E.useX("warn hook called outside of a running suite.");n.currentTest||f("warn called outside of a test."),n.currentTest.warn()};
|