vest 4.3.2 → 4.4.0-dev-08ec91

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.
@@ -35,6 +35,8 @@ function asArray(possibleArg) {
35
35
  return [].concat(possibleArg);
36
36
  }
37
37
 
38
+ var assign = Object.assign;
39
+
38
40
  function isNumeric(value) {
39
41
  var str = String(value);
40
42
  var num = Number(value);
@@ -174,8 +176,6 @@ function getCurrent(array, path) {
174
176
  return current;
175
177
  }
176
178
 
177
- var assign = Object.assign;
178
-
179
179
  function createCursor() {
180
180
  var storage = {
181
181
  cursor: []
@@ -262,22 +262,37 @@ function useSuiteName() {
262
262
  function useTestCallbacks() {
263
263
  return useStateRef().testCallbacks();
264
264
  }
265
+ // OPTIONAL FIELDS
266
+ function useOptionalField(fieldName) {
267
+ var optionalFields = useOptionalFields()[0];
268
+ return optionalFields[fieldName];
269
+ }
265
270
  function useOptionalFields() {
266
271
  return useStateRef().optionalFields();
267
272
  }
273
+ function useSetOptionalField(fieldName, setter) {
274
+ var _a = useOptionalFields(), setOptionalFields = _a[1];
275
+ setOptionalFields(function (optionalFields) {
276
+ var _a;
277
+ return assign(optionalFields, (_a = {},
278
+ _a[fieldName] = optionalFunctionValue(setter, optionalFields[fieldName]),
279
+ _a));
280
+ });
281
+ }
282
+ function useOptionalFieldApplied(fieldName) {
283
+ var _a;
284
+ return (_a = useOptionalField(fieldName)) === null || _a === void 0 ? void 0 : _a[1];
285
+ }
286
+ function useOptionalFieldConfig(fieldName) {
287
+ var _a;
288
+ return (_a = useOptionalField(fieldName)) === null || _a === void 0 ? void 0 : _a[0];
289
+ }
268
290
  function useTestObjects() {
269
291
  return useStateRef().testObjects();
270
292
  }
271
293
  // STATE ACTIONS
272
294
  function useRefreshTestObjects() {
273
- var _a = useTestObjects(), setTestObjects = _a[1];
274
- setTestObjects(function (_a) {
275
- var current = _a.current, prev = _a.prev;
276
- return ({
277
- prev: prev,
278
- current: asArray(current)
279
- });
280
- });
295
+ useSetTests(function (tests) { return tests; });
281
296
  }
282
297
  function useSetTests(handler) {
283
298
  var _a = useTestObjects(), testObjects = _a[1];
@@ -291,10 +306,7 @@ function useSetTests(handler) {
291
306
  }
292
307
  // Derived state
293
308
  function useAllIncomplete() {
294
- var current = useTestObjects()[0].current;
295
- return flatten(transform(current, function (testObject) {
296
- return testObject.isPending() ? testObject : null;
297
- }));
309
+ return useTestsFlat().filter(function (test) { return test.isPending(); });
298
310
  }
299
311
  var flatCache = createCache();
300
312
  function useTestsFlat() {
@@ -679,6 +691,11 @@ function matchingFieldName(testObject, fieldName) {
679
691
  return !!(fieldName && testObject.fieldName === fieldName);
680
692
  }
681
693
 
694
+ var nonMatchingGroupName = bindNot(matchingGroupName);
695
+ function matchingGroupName(testObject, groupName) {
696
+ return testObject.groupName === groupName;
697
+ }
698
+
682
699
  function either(a, b) {
683
700
  return !!a !== !!b;
684
701
  }
@@ -703,6 +720,15 @@ function hasFailuresByTestObjects(severityKey, fieldName) {
703
720
  return hasFailuresByTestObject(testObject, severityKey, fieldName);
704
721
  });
705
722
  }
723
+ function hasGroupFailuresByTestObjects(severityKey, groupName, fieldName) {
724
+ var testObjects = useTestsFlat();
725
+ return testObjects.some(function (testObject) {
726
+ if (nonMatchingGroupName(testObject, groupName)) {
727
+ return false;
728
+ }
729
+ return hasFailuresByTestObject(testObject, severityKey, fieldName);
730
+ });
731
+ }
706
732
  /**
707
733
  * Determines whether a certain test profile has failures.
708
734
  */
@@ -720,7 +746,7 @@ function hasFailuresByTestObject(testObject, severityKey, fieldName) {
720
746
  }
721
747
 
722
748
  // eslint-disable-next-line max-statements, complexity
723
- function shouldAddValidProp(fieldName) {
749
+ function shouldAddValidProperty(fieldName) {
724
750
  if (fieldIsOmitted(fieldName)) {
725
751
  return true;
726
752
  }
@@ -731,39 +757,78 @@ function shouldAddValidProp(fieldName) {
731
757
  if (isEmpty(testObjects)) {
732
758
  return false;
733
759
  }
760
+ // Does the given field have any pending tests that are not optional?
734
761
  if (hasNonOptionalIncomplete(fieldName)) {
735
762
  return false;
736
763
  }
737
764
  return noMissingTests(fieldName);
738
765
  }
766
+ function shouldAddValidPropertyInGroup(groupName, fieldName) {
767
+ if (fieldIsOmitted(fieldName)) {
768
+ return true;
769
+ }
770
+ if (hasGroupFailuresByTestObjects(Severity.ERRORS, groupName, fieldName)) {
771
+ return false;
772
+ }
773
+ // Do the given group/field have any pending tests that are not optional?
774
+ if (hasNonOptionalIncompleteByGroup(groupName, fieldName)) {
775
+ return false;
776
+ }
777
+ return noMissingTestsByGroup(groupName, fieldName);
778
+ }
739
779
  function fieldIsOmitted(fieldName) {
740
780
  if (!fieldName) {
741
781
  return false;
742
782
  }
743
- var flatTests = useTestsFlat();
744
- return flatTests.some(function (testObject) { return testObject.fieldName === fieldName && testObject.isOmitted(); });
783
+ return useOptionalFieldApplied(fieldName) === true;
745
784
  }
785
+ // Does the given field have any pending tests that are not optional?
746
786
  function hasNonOptionalIncomplete(fieldName) {
747
- var optionalFields = useOptionalFields()[0];
748
787
  return isNotEmpty(useAllIncomplete().filter(function (testObject) {
749
- if (nonMatchingFieldName(testObject, fieldName)) {
788
+ return isOptionalFieldIncomplete(testObject, fieldName);
789
+ }));
790
+ }
791
+ // Do the given group/field have any pending tests that are not optional?
792
+ function hasNonOptionalIncompleteByGroup(groupName, fieldName) {
793
+ return isNotEmpty(useAllIncomplete().filter(function (testObject) {
794
+ if (nonMatchingGroupName(testObject, groupName)) {
750
795
  return false;
751
796
  }
752
- return optionalFields[testObject.fieldName] !== true;
797
+ return isOptionalFieldIncomplete(testObject, fieldName);
753
798
  }));
754
799
  }
800
+ function isOptionalFieldIncomplete(testObject, fieldName) {
801
+ if (nonMatchingFieldName(testObject, fieldName)) {
802
+ return false;
803
+ }
804
+ return useOptionalFieldConfig(testObject.fieldName) !== true;
805
+ }
755
806
  function noMissingTests(fieldName) {
756
807
  var testObjects = useTestsFlat();
757
- var optionalFields = useOptionalFields()[0];
758
808
  return testObjects.every(function (testObject) {
759
809
  if (nonMatchingFieldName(testObject, fieldName)) {
760
810
  return true;
761
811
  }
762
- return (optionalFields[testObject.fieldName] === true ||
763
- testObject.isTested() ||
764
- testObject.isOmitted());
812
+ return missingTestsLogic(testObject, fieldName);
813
+ });
814
+ }
815
+ function noMissingTestsByGroup(groupName, fieldName) {
816
+ var testObjects = useTestsFlat();
817
+ return testObjects.every(function (testObject) {
818
+ if (nonMatchingGroupName(testObject, groupName)) {
819
+ return true;
820
+ }
821
+ return missingTestsLogic(testObject, fieldName);
765
822
  });
766
823
  }
824
+ function missingTestsLogic(testObject, fieldName) {
825
+ if (nonMatchingFieldName(testObject, fieldName)) {
826
+ return true;
827
+ }
828
+ return (useOptionalFieldConfig(testObject.fieldName) === true ||
829
+ testObject.isTested() ||
830
+ testObject.isOmitted());
831
+ }
767
832
 
768
833
  function useSummary() {
769
834
  var summary = context.useX().summary;
@@ -785,7 +850,7 @@ function genTestsSummary() {
785
850
  appendToGroup(summary.groups, testObject);
786
851
  return summary;
787
852
  }, summary);
788
- summary.valid = shouldAddValidProp();
853
+ summary.valid = shouldAddValidProperty();
789
854
  return countFailures(summary);
790
855
  }
791
856
  function appendToTest(tests, testObject) {
@@ -794,7 +859,7 @@ function appendToTest(tests, testObject) {
794
859
  tests[testObject.fieldName].valid =
795
860
  tests[testObject.fieldName].valid === false
796
861
  ? false
797
- : shouldAddValidProp(testObject.fieldName);
862
+ : shouldAddValidProperty(testObject.fieldName);
798
863
  }
799
864
  /**
800
865
  * Appends to a group object if within a group
@@ -806,6 +871,10 @@ function appendToGroup(groups, testObject) {
806
871
  }
807
872
  groups[groupName] = groups[groupName] || {};
808
873
  groups[groupName][testObject.fieldName] = appendTestObject(groups[groupName], testObject);
874
+ groups[groupName][testObject.fieldName].valid =
875
+ groups[groupName][testObject.fieldName].valid === false
876
+ ? false
877
+ : shouldAddValidPropertyInGroup(groupName, testObject.fieldName);
809
878
  }
810
879
  /**
811
880
  * Counts the failed tests and adds global counters
@@ -854,6 +923,10 @@ function baseTestStats() {
854
923
  });
855
924
  }
856
925
 
926
+ function isPositive(value) {
927
+ return greaterThan(value, 0);
928
+ }
929
+
857
930
  // calls collectAll or getByFieldName depending on whether fieldName is provided
858
931
  function gatherFailures(testGroup, severityKey, fieldName) {
859
932
  return fieldName
@@ -866,10 +939,13 @@ function getByFieldName(testGroup, severityKey, fieldName) {
866
939
  }
867
940
  function collectAll(testGroup, severityKey) {
868
941
  var output = {};
942
+ var countKey = countKeyBySeverity(severityKey);
869
943
  for (var field in testGroup) {
870
- // We will probably never get to the fallback array
871
- // leaving it just in case the implementation changes
872
- output[field] = testGroup[field][severityKey] || [];
944
+ if (isPositive(testGroup[field][countKey])) {
945
+ // We will probably never get to the fallback array
946
+ // leaving it just in case the implementation changes
947
+ output[field] = testGroup[field][severityKey] || [];
948
+ }
873
949
  }
874
950
  return output;
875
951
  }
@@ -899,10 +975,6 @@ function getFailuresByGroup(groupName, severityKey, fieldName) {
899
975
  return gatherFailures(summary.groups[groupName], severityKey, fieldName);
900
976
  }
901
977
 
902
- function isPositive(value) {
903
- return greaterThan(value, 0);
904
- }
905
-
906
978
  function hasErrors(fieldName) {
907
979
  return hasFailures(SeverityCount.ERROR_COUNT, fieldName);
908
980
  }
@@ -945,9 +1017,30 @@ function hasFailuresByGroup(severityKey, groupName, fieldName) {
945
1017
  }
946
1018
 
947
1019
  function isValid(fieldName) {
948
- var _a;
949
1020
  var summary = useSummary();
950
- return fieldName ? Boolean((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : summary.valid;
1021
+ return fieldName
1022
+ ? Boolean(isFieldValid(summary.tests, fieldName))
1023
+ : summary.valid;
1024
+ }
1025
+ function isValidByGroup(groupName, fieldName) {
1026
+ var summary = useSummary();
1027
+ var group = summary.groups[groupName];
1028
+ if (!group) {
1029
+ return false;
1030
+ }
1031
+ if (fieldName) {
1032
+ return isFieldValid(group, fieldName);
1033
+ }
1034
+ for (var fieldName_1 in group) {
1035
+ if (!isFieldValid(group, fieldName_1)) {
1036
+ return false;
1037
+ }
1038
+ }
1039
+ return true;
1040
+ }
1041
+ function isFieldValid(testContainer, fieldName) {
1042
+ var _a;
1043
+ return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
951
1044
  }
952
1045
 
953
1046
  var cache$1 = createCache(1);
@@ -968,6 +1061,7 @@ function produceSuiteResult() {
968
1061
  hasWarnings: context.bind(ref, hasWarnings),
969
1062
  hasWarningsByGroup: context.bind(ref, hasWarningsByGroup),
970
1063
  isValid: context.bind(ref, isValid),
1064
+ isValidByGroup: context.bind(ref, isValidByGroup),
971
1065
  suiteName: suiteName
972
1066
  });
973
1067
  }));
@@ -1070,7 +1164,7 @@ function createBus() {
1070
1164
  }
1071
1165
  }
1072
1166
 
1073
- function omitOptionalTests() {
1167
+ function omitOptionalFields() {
1074
1168
  var optionalFields = useOptionalFields()[0];
1075
1169
  if (isEmpty(optionalFields)) {
1076
1170
  return;
@@ -1091,10 +1185,11 @@ function omitOptionalTests() {
1091
1185
  function verifyAndOmit(testObject) {
1092
1186
  if (shouldOmit[testObject.fieldName]) {
1093
1187
  testObject.omit();
1188
+ useSetOptionalField(testObject.fieldName, function (current) { return [current[0], true]; });
1094
1189
  }
1095
1190
  }
1096
1191
  function runOptionalConfig(testObject) {
1097
- var optionalConfig = optionalFields[testObject.fieldName];
1192
+ var optionalConfig = useOptionalFieldConfig(testObject.fieldName);
1098
1193
  if (isFunction(optionalConfig)) {
1099
1194
  shouldOmit[testObject.fieldName] = optionalConfig();
1100
1195
  verifyAndOmit(testObject);
@@ -1154,7 +1249,7 @@ function initBus() {
1154
1249
  // Async operations may still be running.
1155
1250
  bus.on(Events.SUITE_CALLBACK_DONE_RUNNING, function () {
1156
1251
  // Remove tests that are optional and need to be omitted
1157
- omitOptionalTests();
1252
+ omitOptionalFields();
1158
1253
  });
1159
1254
  // Called when all the tests, including async, are done running
1160
1255
  bus.on(Events.ALL_RUNNING_TESTS_FINISHED, function () {
@@ -1547,22 +1642,21 @@ function isOmitted() {
1547
1642
  * });
1548
1643
  */
1549
1644
  function optional(optionals) {
1550
- var _a = useOptionalFields(), setOptionalFields = _a[1];
1551
- setOptionalFields(function (state) {
1552
- if (!isArray(optionals) && !isStringValue(optionals)) {
1553
- var optionalFunctions = optionals;
1554
- for (var field in optionalFunctions) {
1555
- var predicate = optionalFunctions[field];
1556
- state[field] = predicate;
1557
- }
1558
- }
1559
- else {
1560
- asArray(optionals).forEach(function (optionalField) {
1561
- state[optionalField] = true;
1562
- });
1645
+ // When the optional is given as a string or a list of strings
1646
+ // we just add them to the list of optional fields.
1647
+ if (isArray(optionals) || isStringValue(optionals)) {
1648
+ asArray(optionals).forEach(function (optionalField) {
1649
+ useSetOptionalField(optionalField, [true, false]);
1650
+ });
1651
+ }
1652
+ else {
1653
+ // if it's an object, we iterate over the keys and add them to the list
1654
+ var optionalFunctions = optionals;
1655
+ for (var field in optionalFunctions) {
1656
+ var predicate = optionalFunctions[field];
1657
+ useSetOptionalField(field, [predicate, false]);
1563
1658
  }
1564
- return state;
1565
- });
1659
+ }
1566
1660
  }
1567
1661
 
1568
1662
  /*! *****************************************************************************
@@ -1864,6 +1958,6 @@ function warn() {
1864
1958
  ctx.currentTest.warn();
1865
1959
  }
1866
1960
 
1867
- var VERSION = "4.3.2";
1961
+ var VERSION = "4.4.0-dev-08ec91";
1868
1962
 
1869
1963
  export { VERSION, context, create, each, eager, group, include, omitWhen, only, optional, skip, skipWhen, test, warn };
@@ -1 +1 @@
1
- import{createContext as t}from"context";export{enforce}from"n4s";var n,e=(n=0,function(){return"".concat(n++)});function r(t){return String(t)===t}function u(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return!t.apply(void 0,n)}}function i(t){var n=Number(t);return!(isNaN(parseFloat(String(t)))||isNaN(Number(t))||!isFinite(n))}function o(t,n){return i(t)&&i(n)&&Number(t)===Number(n)}function s(t,n){return i(t)&&i(n)&&Number(t)>Number(n)}function a(t){function n(e,u){var i=n.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),s(r.length,t)&&(r.length=t),u)}function e(t){return r.findIndex((function(n){var e=n[0];return o(t.length,e.length)&&t.every((function(t,n){return t===e[n]}))}))}void 0===t&&(t=1);var r=[];return n.invalidate=function(t){-1<(t=e(t))&&r.splice(t,1)},n.get=function(t){return r[e(t)]||null},n}var c=u((function(t){return null===t}));function f(t){return"function"==typeof t}function l(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return f(t)?t.apply(void 0,n):t}function p(t,n){var e;return null!==(e=l(t))&&void 0!==e?e:n}function d(t){return(t=[].concat(t))[t.length-1]}function v(t,n){for(var e=[],r=0;r<t.length;r++){var u=t[r];Array.isArray(u)?e.push(v(u,n)):(u=n(u),c(u)&&e.push(u))}return e}function h(t){return[].concat(t).reduce((function(t,n){return Array.isArray(n)?t.concat(h(n)):[].concat(t).concat(n)}),[])}function E(t,n){var e=0;for(n=n.slice(0,-1);e<n.length;e++){var r=n[e];t[r]=p(t[r],[]),t=t[r]}return t}var g=Object.assign;function N(){function t(){n=[0]}var n=[];return t(),{addLevel:function(){n.push(0)},cursorAt:function(){return d(n)},getCursor:function(){return[].concat(n)},next:function(){return n[n.length-1]++,d(n)},removeLevel:function(){n.pop()},reset:t}}var m,y=m||(m={});y[y.DEFAULT=0]="DEFAULT",y[y.SUITE=1]="SUITE",y[y.EACH=2]="EACH",y[y.SKIP_WHEN=3]="SKIP_WHEN",y[y.OMIT_WHEN=4]="OMIT_WHEN",y[y.GROUP=5]="GROUP";var R,C=R||(R={});C[C.ALL=0]="ALL",C[C.EAGER=1]="EAGER";var S=t((function(t,n){return n?null:g({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:m.DEFAULT,keys:{current:{},prev:{}}},mode:[R.ALL],testCursor:N()},t)}));function b(){return S.useX().stateRef}function T(){return b().testObjects()}function O(){(0,T()[1])((function(t){return{prev:t.prev,current:[].concat(t.current)}}))}function A(t){(0,T()[1])((function(n){return{prev:n.prev,current:[].concat(t(n.current))}}))}function _(){return h(v(T()[0].current,(function(t){return t.isPending()?t:null})))}var I=a();function k(){var t=T()[0].current;return I([t],(function(){return h(t)}))}var L,F=L||(L={});F.Error="error",F.Warning="warning";var U=function(){function t(t,n,r){var u=void 0===r?{}:r;r=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=e(),this.severity=L.Error,this.status=W,this.fieldName=t,this.testFn=n,i&&(this.groupName=i),r&&(this.message=r),u&&(this.key=u)}return t.prototype.run=function(){try{var t=this.testFn()}catch(n){t=n,void 0===this.message&&r(t)&&(this.message=n),t=!1}return!1===t&&this.fail(),t},t.prototype.setStatus=function(t){this.isFinalStatus()&&t!==H||(this.status=t)},t.prototype.warns=function(){return this.severity===L.Warning},t.prototype.setPending=function(){this.setStatus(D)},t.prototype.fail=function(){this.setStatus(this.warns()?X:G)},t.prototype.done=function(){this.isFinalStatus()||this.setStatus(w)},t.prototype.warn=function(){this.severity=L.Warning},t.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},t.prototype.skip=function(t){this.isPending()&&!t||this.setStatus(P)},t.prototype.cancel=function(){this.setStatus(x),O()},t.prototype.reset=function(){this.status=W,O()},t.prototype.omit=function(){this.setStatus(H)},t.prototype.valueOf=function(){return!this.isFailing()},t.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},t.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},t.prototype.isPending=function(){return this.statusEquals(D)},t.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},t.prototype.isOmitted=function(){return this.statusEquals(H)},t.prototype.isUntested=function(){return this.statusEquals(W)},t.prototype.isFailing=function(){return this.statusEquals(G)},t.prototype.isCanceled=function(){return this.statusEquals(x)},t.prototype.isSkipped=function(){return this.statusEquals(P)},t.prototype.isPassing=function(){return this.statusEquals(w)},t.prototype.isWarning=function(){return this.statusEquals(X)},t.prototype.statusEquals=function(t){return this.status===t},t}(),W="UNTESTED",P="SKIPPED",G="FAILED",X="WARNING",w="PASSING",D="PENDING",x="CANCELED",H="OMITTED";function K(t,n){if(!t)throw n instanceof String?n.valueOf():Error(n?l(n):n)}function M(t){function n(t,n,u){return r.references.push(),e(t,l(n,u)),function(){return[r.references[t],function(n){return e(t,l(n,r.references[t]))}]}}function e(n,e){var i=r.references[n];r.references[n]=e,f(n=u[n][1])&&n(e,i),f(t)&&t()}var r={references:[]},u=[];return{registerStateKey:function(t,e){var r=u.length;return u.push([t,e]),n(r,t)},reset:function(){var t=r.references;r.references=[],u.forEach((function(e,r){return n(r,e[0],t[r])}))}}}function j(t,n){var e=n.suiteId;return n=n.suiteName,{optionalFields:t.registerStateKey((function(){return{}})),suiteId:t.registerStateKey(e),suiteName:t.registerStateKey(n),testCallbacks:t.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:t.registerStateKey((function(t){return{prev:t?t.current:[],current:[]}}))}}function q(t){return null==t}function B(t){setTimeout((function(){throw Error(t)}),0)}function V(){return S.useX().testCursor.getCursor()}function Y(){return S.useX().testCursor.next()}function J(t,n){t=void 0===(t=t.type)?m.DEFAULT:t,K(f(n));var e={current:{},prev:{}},r=V();return S.run({isolate:{type:t,keys:e}},(function(){S.useX().testCursor.addLevel(),e.prev=function(){var t=T()[0].prev;return[].concat(E(t,V())).reduce((function(t,n){return n instanceof U&&!q(n.key)?(t[n.key]=n,t):t}),{})}(),A((function(t){return E(t,r)[d(r)]=[],t}));var t=n();return S.useX().testCursor.removeLevel(),Y(),t}))}var z,Q=z||(z={});Q.WARNINGS="warnings",Q.ERRORS="errors";var Z,$=Z||(Z={});function tt(t){return!t||("number"==typeof t?0===t:Object.prototype.hasOwnProperty.call(t,"length")?o(t.length,0):"object"==typeof t&&o((t=Object.keys(t)).length,0))}$.ERROR_COUNT="errorCount",$.WARN_COUNT="warnCount";var nt=u(tt);function et(t,n){return!(!n||t.fieldName!==n)}function rt(t,n){return k().some((function(e){return e.hasFailures()?n&&!et(e,n)?e=!1:(e=e.warns(),e=t===z.WARNINGS==!!e):e=!1,e}))}function ut(t){return!!function(t){return!!t&&k().some((function(n){return n.fieldName===t&&n.isOmitted()}))}(t)||!rt(z.ERRORS,t)&&(!tt(k())&&!function(t){var n=b().optionalFields()[0];return nt(_().filter((function(e){return!(t&&!et(e,t))&&!0!==n[e.fieldName]})))}(t)&&function(t){var n=k(),e=b().optionalFields()[0];return n.every((function(n){return!(!t||et(n,t))||(!0===e[n.fieldName]||n.isTested()||n.isOmitted())}))}(t))}function it(){var t=S.useX().summary;return K(t),t}function ot(t,n){function e(t){i[t===z.ERRORS?Z.ERROR_COUNT:Z.WARN_COUNT]++,u&&(i[t]=(i[t]||[]).concat(u))}var r=n.fieldName,u=n.message;t[r]=t[r]||g({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=t[r];return n.isNonActionable()||(t[r].testCount++,n.isFailing()?e(z.ERRORS):n.isWarning()&&e(z.WARNINGS)),i}function st(t,n,e){var r;return(null===(r=null==t?void 0:t[e])||void 0===r?void 0:r[n])||[]}function at(t,n){var e,r={};for(e in t)r[e]=t[e][n]||[];return r}function ct(t){return lt(z.ERRORS,t)}function ft(t){return lt(z.WARNINGS,t)}function lt(t,n){var e=it().tests;return n?st(e,t,n):at(e,t)}function pt(t,n){return vt(t,z.ERRORS,n)}function dt(t,n){return vt(t,z.WARNINGS,n)}function vt(t,n,e){return t=it().groups[t],e?st(t,n,e):at(t,n)}function ht(t){return gt(Z.ERROR_COUNT,t)}function Et(t){return gt(Z.WARN_COUNT,t)}function gt(t,n){var e,r=it();return s(n?null===(e=r.tests[n])||void 0===e?void 0:e[t]:r[t],0)}function Nt(t,n){return yt(z.ERRORS,t,n)}function mt(t,n){return yt(z.WARNINGS,t,n)}function yt(t,n,e){var r,u,i=it();if(t=t===z.ERRORS?Z.ERROR_COUNT:Z.WARN_COUNT,!(n=i.groups[n]))return!1;if(e)return s(null===(r=n[e])||void 0===r?void 0:r[t],0);for(var o in n)if(s(null===(u=n[o])||void 0===u?void 0:u[t],0))return!0;return!1}function Rt(t){var n,e=it();return t?!(null===(n=e.tests[t])||void 0===n||!n.valid):e.valid}var Ct=a(1);function St(){var t=k(),n={stateRef:b()};return Ct([t],S.bind(n,(function(){var t=function(){var t=k(),n=g({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return t.reduce((function(t,n){var e=t.tests;e[n.fieldName]=ot(e,n),e[n.fieldName].valid=!1!==e[n.fieldName].valid&&ut(n.fieldName),e=t.groups;var r=n.groupName;return r&&(e[r]=e[r]||{},e[r][n.fieldName]=ot(e[r],n)),t}),n),n.valid=ut(),function(t){for(var n in t.tests)t.errorCount+=t.tests[n].errorCount,t.warnCount+=t.tests[n].warnCount,t.testCount+=t.tests[n].testCount;return t}(n)}(),n=b().suiteName()[0],e={summary:t};return g(t,{getErrors:S.bind(e,ct),getErrorsByGroup:S.bind(e,pt),getWarnings:S.bind(e,ft),getWarningsByGroup:S.bind(e,dt),hasErrors:S.bind(e,ht),hasErrorsByGroup:S.bind(e,Nt),hasWarnings:S.bind(e,Et),hasWarningsByGroup:S.bind(e,mt),isValid:S.bind(e,Rt),suiteName:n})})))}function bt(t){var n=_();return!tt(n)&&(t?n.some((function(n){return et(n,t)})):nt(n))}var Tt=a(20);function Ot(){var t=k(),n={stateRef:b()};return Tt([t],S.bind(n,(function(){return g({},St(),{done:S.bind(n,It)})})))}function At(t,n,e){return!(f(t)&&(!n||e.tests[n]&&!tt(e.tests[n].testCount)))}function _t(t){return!(bt()&&(!t||bt(t)))}function It(){function t(){return r(St())}for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];return n=n[1],e=Ot(),At(r,n,e)?e:_t(n)?(t(),e):(kt(t,n),e)}function kt(t,n){(0,b().testCallbacks()[1])((function(e){return n?e.fieldCallbacks[n]=(e.fieldCallbacks[n]||[]).concat(t):e.doneCallbacks.push(t),e}))}function Lt(t){return t.forEach((function(t){return t()}))}function Ft(){var t=function(){var t={};return{emit:function(n,e){(t[n]||[]).forEach((function(t){t(e)}))},on:function(n,e){return t[n]=(t[n]||[]).concat(e),{off:function(){t[n]=(t[n]||[]).filter((function(t){return t!==e}))}}}}}();return t.on(Wt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var e=b().testCallbacks()[0].fieldCallbacks;n&&!bt(n)&&Array.isArray(e[n])&&Lt(e[n]),bt()||t.emit(Wt.ALL_RUNNING_TESTS_FINISHED)}})),t.on(Wt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var t=b().optionalFields()[0];if(!tt(t)){var n={};A((function(e){return v(e,(function(e){if(Object.prototype.hasOwnProperty.call(n,e.fieldName))n[e.fieldName]&&e.omit();else{var r=t[e.fieldName];f(r)&&(n[e.fieldName]=r(),n[e.fieldName]&&e.omit())}return e}))}))}}()})),t.on(Wt.ALL_RUNNING_TESTS_FINISHED,(function(){Lt(b().testCallbacks()[0].doneCallbacks)})),t.on(Wt.REMOVE_FIELD,(function(t){k().forEach((function(n){et(n,t)&&(n.cancel(),function(t){A((function(n){return v(n,(function(n){return t!==n?n:null}))}))}(n))}))})),t.on(Wt.RESET_FIELD,(function(t){k().forEach((function(n){et(n,t)&&n.reset()}))})),t}function Ut(){var t=S.useX();return K(t.bus),t.bus}var Wt,Pt=Wt||(Wt={});function Gt(t){return wt(0,"tests",t)}function Xt(t){return wt(1,"tests",t)}function wt(t,n,e){var u=S.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){r(e)&&(u.exclusion[n][e]=0===t)}))}function Dt(t){for(var n in t)if(!0===t[n])return!0;return!1}function xt(){var t,n=S.useX().exclusion;for(t in n.groups)if(n.groups[t])return!0;return!1}function Ht(t){return"Wrong arguments passed to group. Group ".concat(t,".")}function Kt(t,n,e){if(e||2===arguments.length)for(var r,u=0,i=n.length;u<i;u++)!r&&u in n||(r||(r=Array.prototype.slice.call(n,0,u)),r[u]=n[u]);return t.concat(r||Array.prototype.slice.call(n))}function Mt(t){var n=t.asyncTest,e=t.message;if(n&&f(n.then)){var u=Ut().emit,i=b(),o=S.bind({stateRef:i},(function(){O(),u(Wt.TEST_COMPLETED,t)}));i=S.bind({stateRef:i},(function(n){t.isCanceled()||(t.message=r(n)?n:e,t.fail(),o())}));try{n.then(o,i)}catch(t){i()}}}function jt(t){var n=T()[0].prev;if(tt(n))return qt(t),t;var e=V();if(n=E(n,e)[d(e)],!q(t.key)){n=t.key,(e=S.useX().isolate.keys.prev[n])&&(t=e),e=t;var r=S.useX().isolate.keys.current;return q(r[n])?r[n]=e:B('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),qt(t),t}return!nt(e=n)||e.fieldName===t.fieldName&&e.groupName===t.groupName||(S.useX().isolate.type===m.EACH||B("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var t=T(),n=t[1],e=t[0].prev;t=E(e,V());var r=S.useX().testCursor.cursorAt();t.splice(r),n((function(t){return{prev:e,current:t.current}}))}(),n=null),qt(t=p(n,t)),t}function qt(t){var n=V();A((function(e){return E(e,n)[d(n)]=t,e}))}function Bt(t){var n=R.EAGER;if(n=!(S.useX().mode[0]!==n||!rt(z.ERRORS,t.fieldName)))return t.skip(),jt(t),Y(),t;if(n=jt(t),S.useX().omitted)return n.omit(),Y(),n;if(function(t){var n=t.fieldName;if(t=t.groupName,S.useX().skipped)return!0;var e=S.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[n];if(!1===i)return!0;if(i=!0===i,t){var o=S.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,t)?!1===o[t]:xt())return!0;if(!0===r.groups[t])return!(i||!Dt(u)&&!1!==u[n])}return!!(t=!!xt()&&!t)||!i&&!!Dt(u)&&!l(e[n])}(t))return n.skip(!!S.useX().skipped),Y(),n;if(t!==n&&n.fieldName===t.fieldName&&n.groupName===t.groupName&&n.isPending()&&n.cancel(),qt(t),Y(),t.isUntested()){n=Ut();var e=function(t){return S.run({currentTest:t},(function(){return t.run()}))}(t);try{e&&f(e.then)?(t.asyncTest=e,t.setPending(),Mt(t)):n.emit(Wt.TEST_COMPLETED,t)}catch(n){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(t),".\n Error: ").concat(n,"."))}}else(n=t.asyncTest)&&f(n.then)&&(t.setPending(),Mt(t));return t}function Vt(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var u=f(n[1])?n:Kt([void 0],n,!0);n=u[0],e=u[1],u=u[2],K(r(t),Jt("fieldName","string")),K(f(e),Jt("Test callback","function"));var i=S.useX();return Bt(n=new U(t,e,{message:n,groupName:i.groupName,key:u}))}Pt.TEST_COMPLETED="test_completed",Pt.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",Pt.REMOVE_FIELD="remove_field",Pt.RESET_FIELD="reset_field",Pt.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running",Gt.group=function(t){return wt(0,"groups",t)},Xt.group=function(t){return wt(1,"groups",t)};var Yt=g(Vt,{memo:function(t){var n=a(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=S.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[b().suiteId()[0],e,u].concat(i),null===(r=n.get(u))?n(u,(function(){return t(e,s,o)})):r[1].isCanceled()?(n.invalidate(u),n(u,(function(){return t(e,s,o)}))):Bt(r[1])}}(Vt)});function Jt(t,n){return"Incompatible params passed to test function. ".concat(t," must be a ").concat(n)}var zt="4.3.2";function Qt(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=(t=t.reverse())[0];t=t[1],K(f(r),"vest.create: Expected callback to be a function.");var u=Ft(),i=M();return t={stateRef:j(i,{suiteId:e(),suiteName:t}),bus:u},g(S.bind(t,(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return i.reset(),J({type:m.SUITE},(function(){r.apply(void 0,t)})),u.emit(Wt.SUITE_CALLBACK_DONE_RUNNING),Ot()})),{get:S.bind(t,St),remove:S.bind(t,(function(t){u.emit(Wt.REMOVE_FIELD,t)})),reset:i.reset,resetField:S.bind(t,(function(t){u.emit(Wt.RESET_FIELD,t)}))})}function Zt(t,n){K(f(n),"each callback must be a function"),J({type:m.EACH},(function(){t.forEach((function(t,e){n(t,e)}))}))}function $t(){var t=R.EAGER;S.useX().mode[0]=t}function tn(t,n){K(r(t),Ht("name must be a string")),K(f(n),Ht("callback must be a function")),J({type:m.GROUP},(function(){S.run({groupName:t},n)}))}function nn(t){var n=S.useX(),e=n.inclusion;return n=n.exclusion,K(r(t)),e[t]=p(n.tests[t],!0),{when:function(n){var e=S.useX(),u=e.exclusion;e.inclusion[t]=function(){return Object.prototype.hasOwnProperty.call(u.tests,t)?p(u.tests[t],!0):r(n)?!!u.tests[n]:l(n,l(St))}}}}function en(t,n){J({type:m.OMIT_WHEN},(function(){S.run({omitted:!!S.useX().omitted||l(t,l(St))},(function(){return n()}))}))}function rn(t){(0,b().optionalFields()[1])((function(n){if(Array.isArray(t)||r(t))[].concat(t).forEach((function(t){n[t]=!0}));else for(var e in t)n[e]=t[e];return n}))}function un(t,n){J({type:m.SKIP_WHEN},(function(){S.run({skipped:!!S.useX().skipped||l(t,l(St))},(function(){return n()}))}))}function on(){var t=S.useX("warn hook called outside of a running suite.");K(t.currentTest,"warn called outside of a test."),t.currentTest.warn()}export{zt as VERSION,S as context,Qt as create,Zt as each,$t as eager,tn as group,nn as include,en as omitWhen,Gt as only,rn as optional,Xt as skip,un as skipWhen,Yt as test,on as warn};
1
+ import{createContext as t}from"context";export{enforce}from"n4s";var n,e=(n=0,function(){return"".concat(n++)});function r(t){return String(t)===t}function u(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return!t.apply(void 0,n)}}var i=Object.assign;function o(t){var n=Number(t);return!(isNaN(parseFloat(String(t)))||isNaN(Number(t))||!isFinite(n))}function s(t,n){return o(t)&&o(n)&&Number(t)===Number(n)}function a(t,n){return o(t)&&o(n)&&Number(t)>Number(n)}function c(t){function n(e,u){var i=n.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),a(r.length,t)&&(r.length=t),u)}function e(t){return r.findIndex((function(n){var e=n[0];return s(t.length,e.length)&&t.every((function(t,n){return t===e[n]}))}))}void 0===t&&(t=1);var r=[];return n.invalidate=function(t){-1<(t=e(t))&&r.splice(t,1)},n.get=function(t){return r[e(t)]||null},n}var f=u((function(t){return null===t}));function l(t){return"function"==typeof t}function d(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return l(t)?t.apply(void 0,n):t}function p(t,n){var e;return null!==(e=d(t))&&void 0!==e?e:n}function v(t){return(t=[].concat(t))[t.length-1]}function h(t,n){for(var e=[],r=0;r<t.length;r++){var u=t[r];Array.isArray(u)?e.push(h(u,n)):(u=n(u),f(u)&&e.push(u))}return e}function g(t){return[].concat(t).reduce((function(t,n){return Array.isArray(n)?t.concat(g(n)):[].concat(t).concat(n)}),[])}function E(t,n){var e=0;for(n=n.slice(0,-1);e<n.length;e++){var r=n[e];t[r]=p(t[r],[]),t=t[r]}return t}function N(){function t(){n=[0]}var n=[];return t(),{addLevel:function(){n.push(0)},cursorAt:function(){return v(n)},getCursor:function(){return[].concat(n)},next:function(){return n[n.length-1]++,v(n)},removeLevel:function(){n.pop()},reset:t}}var m,y=m||(m={});y[y.DEFAULT=0]="DEFAULT",y[y.SUITE=1]="SUITE",y[y.EACH=2]="EACH",y[y.SKIP_WHEN=3]="SKIP_WHEN",y[y.OMIT_WHEN=4]="OMIT_WHEN",y[y.GROUP=5]="GROUP";var R,b=R||(R={});b[b.ALL=0]="ALL",b[b.EAGER=1]="EAGER";var S=t((function(t,n){return n?null:i({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:m.DEFAULT,keys:{current:{},prev:{}}},mode:[R.ALL],testCursor:N()},t)}));function C(){return S.useX().stateRef}function O(t){return C().optionalFields()[0][t]}function T(t,n){(0,C().optionalFields()[1])((function(e){var r;return i(e,((r={})[t]=d(n,e[t]),r))}))}function A(t){var n;return null===(n=O(t))||void 0===n?void 0:n[0]}function I(){_((function(t){return t}))}function _(t){(0,C().testObjects()[1])((function(n){return{prev:n.prev,current:[].concat(t(n.current))}}))}function k(){return F().filter((function(t){return t.isPending()}))}var L=c();function F(){var t=C().testObjects()[0].current;return L([t],(function(){return g(t)}))}var U,G=U||(U={});G.Error="error",G.Warning="warning";var P=function(){function t(t,n,r){var u=void 0===r?{}:r;r=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=e(),this.severity=U.Error,this.status=W,this.fieldName=t,this.testFn=n,i&&(this.groupName=i),r&&(this.message=r),u&&(this.key=u)}return t.prototype.run=function(){try{var t=this.testFn()}catch(n){t=n,void 0===this.message&&r(t)&&(this.message=n),t=!1}return!1===t&&this.fail(),t},t.prototype.setStatus=function(t){this.isFinalStatus()&&t!==K||(this.status=t)},t.prototype.warns=function(){return this.severity===U.Warning},t.prototype.setPending=function(){this.setStatus(j)},t.prototype.fail=function(){this.setStatus(this.warns()?D:w)},t.prototype.done=function(){this.isFinalStatus()||this.setStatus(x)},t.prototype.warn=function(){this.severity=U.Warning},t.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},t.prototype.skip=function(t){this.isPending()&&!t||this.setStatus(X)},t.prototype.cancel=function(){this.setStatus(H),I()},t.prototype.reset=function(){this.status=W,I()},t.prototype.omit=function(){this.setStatus(K)},t.prototype.valueOf=function(){return!this.isFailing()},t.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},t.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},t.prototype.isPending=function(){return this.statusEquals(j)},t.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},t.prototype.isOmitted=function(){return this.statusEquals(K)},t.prototype.isUntested=function(){return this.statusEquals(W)},t.prototype.isFailing=function(){return this.statusEquals(w)},t.prototype.isCanceled=function(){return this.statusEquals(H)},t.prototype.isSkipped=function(){return this.statusEquals(X)},t.prototype.isPassing=function(){return this.statusEquals(x)},t.prototype.isWarning=function(){return this.statusEquals(D)},t.prototype.statusEquals=function(t){return this.status===t},t}(),W="UNTESTED",X="SKIPPED",w="FAILED",D="WARNING",x="PASSING",j="PENDING",H="CANCELED",K="OMITTED";function M(t,n){if(!t)throw n instanceof String?n.valueOf():Error(n?d(n):n)}function q(t){function n(t,n,u){return r.references.push(),e(t,d(n,u)),function(){return[r.references[t],function(n){return e(t,d(n,r.references[t]))}]}}function e(n,e){var i=r.references[n];r.references[n]=e,l(n=u[n][1])&&n(e,i),l(t)&&t()}var r={references:[]},u=[];return{registerStateKey:function(t,e){var r=u.length;return u.push([t,e]),n(r,t)},reset:function(){var t=r.references;r.references=[],u.forEach((function(e,r){return n(r,e[0],t[r])}))}}}function B(t,n){var e=n.suiteId;return n=n.suiteName,{optionalFields:t.registerStateKey((function(){return{}})),suiteId:t.registerStateKey(e),suiteName:t.registerStateKey(n),testCallbacks:t.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:t.registerStateKey((function(t){return{prev:t?t.current:[],current:[]}}))}}function V(t){return null==t}function Y(t){setTimeout((function(){throw Error(t)}),0)}function J(){return S.useX().testCursor.getCursor()}function z(){return S.useX().testCursor.next()}function Q(t,n){t=void 0===(t=t.type)?m.DEFAULT:t,M(l(n));var e={current:{},prev:{}},r=J();return S.run({isolate:{type:t,keys:e}},(function(){S.useX().testCursor.addLevel(),e.prev=function(){var t=C().testObjects()[0].prev;return[].concat(E(t,J())).reduce((function(t,n){return n instanceof P&&!V(n.key)?(t[n.key]=n,t):t}),{})}(),_((function(t){return E(t,r)[v(r)]=[],t}));var t=n();return S.useX().testCursor.removeLevel(),z(),t}))}var Z,$=Z||(Z={});$.WARNINGS="warnings",$.ERRORS="errors";var tt,nt=tt||(tt={});function et(t){return t===Z.ERRORS?tt.ERROR_COUNT:tt.WARN_COUNT}function rt(t){return!t||("number"==typeof t?0===t:Object.prototype.hasOwnProperty.call(t,"length")?s(t.length,0):"object"==typeof t&&s((t=Object.keys(t)).length,0))}nt.ERROR_COUNT="errorCount",nt.WARN_COUNT="warnCount";var ut=u(rt);function it(t,n){return!(!n||t.fieldName!==n)}var ot=u((function(t,n){return t.groupName===n}));function st(t,n){return F().some((function(e){return at(e,t,n)}))}function at(t,n,e){return(e=!t.hasFailures()||e&&!it(t,e))||(t=t.warns(),e=n===Z.WARNINGS!=!!t),!e}function ct(t){return!!ft(t)||!st(Z.ERRORS,t)&&(!rt(F())&&!function(t){return ut(k().filter((function(n){return lt(n,t)})))}(t)&&function(t){return F().every((function(n){return!(!t||it(n,t))||dt(n,t)}))}(t))}function ft(t){return!!t&&!0===(null===(n=O(t))||void 0===n?void 0:n[1]);var n}function lt(t,n){return!(n&&!it(t,n))&&!0!==A(t.fieldName)}function dt(t,n){return!(!n||it(t,n))||(!0===A(t.fieldName)||t.isTested()||t.isOmitted())}function pt(){var t=S.useX().summary;return M(t),t}function vt(){var t=F(),n=i({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return t.reduce((function(t,n){var e=t.tests;e[n.fieldName]=ht(e,n),e[n.fieldName].valid=!1!==e[n.fieldName].valid&&ct(n.fieldName);var r=t.groups,u=n.groupName;return u&&(r[u]=r[u]||{},r[u][n.fieldName]=ht(r[u],n),e=r[u][n.fieldName],!1===r[u][n.fieldName].valid?n=!1:n=!!ft(n=n.fieldName)||!function(t,n,e){return F().some((function(r){return!ot(r,n)&&at(r,t,e)}))}(Z.ERRORS,u,n)&&!function(t,n){return ut(k().filter((function(e){return!ot(e,t)&&lt(e,n)})))}(u,n)&&function(t,n){return F().every((function(e){return!!ot(e,t)||dt(e,n)}))}(u,n),e.valid=n),t}),n),n.valid=ct(),function(t){for(var n in t.tests)t.errorCount+=t.tests[n].errorCount,t.warnCount+=t.tests[n].warnCount,t.testCount+=t.tests[n].testCount;return t}(n)}function ht(t,n){function e(t){var n=et(t);o[n]++,u&&(o[t]=(o[t]||[]).concat(u))}var r=n.fieldName,u=n.message;t[r]=t[r]||i({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var o=t[r];return n.isNonActionable()||(t[r].testCount++,n.isFailing()?e(Z.ERRORS):n.isWarning()&&e(Z.WARNINGS)),o}function gt(t,n,e){var r;return(null===(r=null==t?void 0:t[e])||void 0===r?void 0:r[n])||[]}function Et(t,n){var e,r={},u=et(n);for(e in t)a(t[e][u],0)&&(r[e]=t[e][n]||[]);return r}function Nt(t){return yt(Z.ERRORS,t)}function mt(t){return yt(Z.WARNINGS,t)}function yt(t,n){var e=pt().tests;return n?gt(e,t,n):Et(e,t)}function Rt(t,n){return St(t,Z.ERRORS,n)}function bt(t,n){return St(t,Z.WARNINGS,n)}function St(t,n,e){return t=pt().groups[t],e?gt(t,n,e):Et(t,n)}function Ct(t){return Tt(tt.ERROR_COUNT,t)}function Ot(t){return Tt(tt.WARN_COUNT,t)}function Tt(t,n){var e,r=pt();return a(n?null===(e=r.tests[n])||void 0===e?void 0:e[t]:r[t],0)}function At(t,n){return _t(Z.ERRORS,t,n)}function It(t,n){return _t(Z.WARNINGS,t,n)}function _t(t,n,e){var r,u,i=pt();if(t=et(t),!(n=i.groups[n]))return!1;if(e)return a(null===(r=n[e])||void 0===r?void 0:r[t],0);for(var o in n)if(a(null===(u=n[o])||void 0===u?void 0:u[t],0))return!0;return!1}function kt(t){var n=pt();return t?!!Ft(n.tests,t):n.valid}function Lt(t,n){if(!(t=pt().groups[t]))return!1;if(n)return Ft(t,n);for(var e in t)if(!Ft(t,e))return!1;return!0}function Ft(t,n){var e;return!(null===(e=t[n])||void 0===e||!e.valid)}var Ut=c(1);function Gt(){var t=F(),n={stateRef:C()};return Ut([t],S.bind(n,(function(){var t=vt(),n=C().suiteName()[0],e={summary:t};return i(t,{getErrors:S.bind(e,Nt),getErrorsByGroup:S.bind(e,Rt),getWarnings:S.bind(e,mt),getWarningsByGroup:S.bind(e,bt),hasErrors:S.bind(e,Ct),hasErrorsByGroup:S.bind(e,At),hasWarnings:S.bind(e,Ot),hasWarningsByGroup:S.bind(e,It),isValid:S.bind(e,kt),isValidByGroup:S.bind(e,Lt),suiteName:n})})))}function Pt(t){var n=k();return!rt(n)&&(t?n.some((function(n){return it(n,t)})):ut(n))}var Wt=c(20);function Xt(){var t=F(),n={stateRef:C()};return Wt([t],S.bind(n,(function(){return i({},Gt(),{done:S.bind(n,xt)})})))}function wt(t,n,e){return!(l(t)&&(!n||e.tests[n]&&!rt(e.tests[n].testCount)))}function Dt(t){return!(Pt()&&(!t||Pt(t)))}function xt(){function t(){return r(Gt())}for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];return n=n[1],e=Xt(),wt(r,n,e)?e:Dt(n)?(t(),e):(jt(t,n),e)}function jt(t,n){(0,C().testCallbacks()[1])((function(e){return n?e.fieldCallbacks[n]=(e.fieldCallbacks[n]||[]).concat(t):e.doneCallbacks.push(t),e}))}function Ht(t){return t.forEach((function(t){return t()}))}function Kt(){var t=function(){var t={};return{emit:function(n,e){(t[n]||[]).forEach((function(t){t(e)}))},on:function(n,e){return t[n]=(t[n]||[]).concat(e),{off:function(){t[n]=(t[n]||[]).filter((function(t){return t!==e}))}}}}}();return t.on(qt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var e=C().testCallbacks()[0].fieldCallbacks;n&&!Pt(n)&&Array.isArray(e[n])&&Ht(e[n]),Pt()||t.emit(qt.ALL_RUNNING_TESTS_FINISHED)}})),t.on(qt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function t(t){n[t.fieldName]&&(t.omit(),T(t.fieldName,(function(t){return[t[0],!0]})))}if(!rt(C().optionalFields()[0])){var n={};_((function(e){return h(e,(function(e){if(Object.prototype.hasOwnProperty.call(n,e.fieldName))t(e);else{var r=A(e.fieldName);l(r)&&(n[e.fieldName]=r(),t(e))}return e}))}))}}()})),t.on(qt.ALL_RUNNING_TESTS_FINISHED,(function(){Ht(C().testCallbacks()[0].doneCallbacks)})),t.on(qt.REMOVE_FIELD,(function(t){F().forEach((function(n){it(n,t)&&(n.cancel(),function(t){_((function(n){return h(n,(function(n){return t!==n?n:null}))}))}(n))}))})),t.on(qt.RESET_FIELD,(function(t){F().forEach((function(n){it(n,t)&&n.reset()}))})),t}function Mt(){var t=S.useX();return M(t.bus),t.bus}var qt,Bt=qt||(qt={});function Vt(t){return Jt(0,"tests",t)}function Yt(t){return Jt(1,"tests",t)}function Jt(t,n,e){var u=S.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){r(e)&&(u.exclusion[n][e]=0===t)}))}function zt(t){for(var n in t)if(!0===t[n])return!0;return!1}function Qt(){var t,n=S.useX().exclusion;for(t in n.groups)if(n.groups[t])return!0;return!1}function Zt(t){return"Wrong arguments passed to group. Group ".concat(t,".")}function $t(t,n,e){if(e||2===arguments.length)for(var r,u=0,i=n.length;u<i;u++)!r&&u in n||(r||(r=Array.prototype.slice.call(n,0,u)),r[u]=n[u]);return t.concat(r||Array.prototype.slice.call(n))}function tn(t){var n=t.asyncTest,e=t.message;if(n&&l(n.then)){var u=Mt().emit,i=C(),o=S.bind({stateRef:i},(function(){I(),u(qt.TEST_COMPLETED,t)}));i=S.bind({stateRef:i},(function(n){t.isCanceled()||(t.message=r(n)?n:e,t.fail(),o())}));try{n.then(o,i)}catch(t){i()}}}function nn(t){var n=C().testObjects()[0].prev;if(rt(n))return en(t),t;var e=J();if(n=E(n,e)[v(e)],!V(t.key)){n=t.key,(e=S.useX().isolate.keys.prev[n])&&(t=e),e=t;var r=S.useX().isolate.keys.current;return V(r[n])?r[n]=e:Y('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),en(t),t}return!ut(e=n)||e.fieldName===t.fieldName&&e.groupName===t.groupName||(S.useX().isolate.type===m.EACH||Y("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var t=C().testObjects(),n=t[1],e=t[0].prev;t=E(e,J());var r=S.useX().testCursor.cursorAt();t.splice(r),n((function(t){return{prev:e,current:t.current}}))}(),n=null),en(t=p(n,t)),t}function en(t){var n=J();_((function(e){return E(e,n)[v(n)]=t,e}))}function rn(t){var n=R.EAGER;if(n=!(S.useX().mode[0]!==n||!st(Z.ERRORS,t.fieldName)))return t.skip(),nn(t),z(),t;if(n=nn(t),S.useX().omitted)return n.omit(),z(),n;if(function(t){var n=t.fieldName;if(t=t.groupName,S.useX().skipped)return!0;var e=S.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[n];if(!1===i)return!0;if(i=!0===i,t){var o=S.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,t)?!1===o[t]:Qt())return!0;if(!0===r.groups[t])return!(i||!zt(u)&&!1!==u[n])}return!!(t=!!Qt()&&!t)||!i&&!!zt(u)&&!d(e[n])}(t))return n.skip(!!S.useX().skipped),z(),n;if(t!==n&&n.fieldName===t.fieldName&&n.groupName===t.groupName&&n.isPending()&&n.cancel(),en(t),z(),t.isUntested()){n=Mt();var e=function(t){return S.run({currentTest:t},(function(){return t.run()}))}(t);try{e&&l(e.then)?(t.asyncTest=e,t.setPending(),tn(t)):n.emit(qt.TEST_COMPLETED,t)}catch(n){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(t),".\n Error: ").concat(n,"."))}}else(n=t.asyncTest)&&l(n.then)&&(t.setPending(),tn(t));return t}function un(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var u=l(n[1])?n:$t([void 0],n,!0);n=u[0],e=u[1],u=u[2],M(r(t),sn("fieldName","string")),M(l(e),sn("Test callback","function"));var i=S.useX();return rn(n=new P(t,e,{message:n,groupName:i.groupName,key:u}))}Bt.TEST_COMPLETED="test_completed",Bt.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",Bt.REMOVE_FIELD="remove_field",Bt.RESET_FIELD="reset_field",Bt.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running",Vt.group=function(t){return Jt(0,"groups",t)},Yt.group=function(t){return Jt(1,"groups",t)};var on=i(un,{memo:function(t){var n=c(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=S.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[C().suiteId()[0],e,u].concat(i),null===(r=n.get(u))?n(u,(function(){return t(e,s,o)})):r[1].isCanceled()?(n.invalidate(u),n(u,(function(){return t(e,s,o)}))):rn(r[1])}}(un)});function sn(t,n){return"Incompatible params passed to test function. ".concat(t," must be a ").concat(n)}var an="4.4.0-dev-08ec91";function cn(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=(t=t.reverse())[0];t=t[1],M(l(r),"vest.create: Expected callback to be a function.");var u=Kt(),o=q();return t={stateRef:B(o,{suiteId:e(),suiteName:t}),bus:u},i(S.bind(t,(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return o.reset(),Q({type:m.SUITE},(function(){r.apply(void 0,t)})),u.emit(qt.SUITE_CALLBACK_DONE_RUNNING),Xt()})),{get:S.bind(t,Gt),remove:S.bind(t,(function(t){u.emit(qt.REMOVE_FIELD,t)})),reset:o.reset,resetField:S.bind(t,(function(t){u.emit(qt.RESET_FIELD,t)}))})}function fn(t,n){M(l(n),"each callback must be a function"),Q({type:m.EACH},(function(){t.forEach((function(t,e){n(t,e)}))}))}function ln(){var t=R.EAGER;S.useX().mode[0]=t}function dn(t,n){M(r(t),Zt("name must be a string")),M(l(n),Zt("callback must be a function")),Q({type:m.GROUP},(function(){S.run({groupName:t},n)}))}function pn(t){var n=S.useX(),e=n.inclusion;return n=n.exclusion,M(r(t)),e[t]=p(n.tests[t],!0),{when:function(n){var e=S.useX(),u=e.exclusion;e.inclusion[t]=function(){return Object.prototype.hasOwnProperty.call(u.tests,t)?p(u.tests[t],!0):r(n)?!!u.tests[n]:d(n,d(Gt))}}}}function vn(t,n){Q({type:m.OMIT_WHEN},(function(){S.run({omitted:!!S.useX().omitted||d(t,d(Gt))},(function(){return n()}))}))}function hn(t){if(Array.isArray(t)||r(t))[].concat(t).forEach((function(t){T(t,[!0,!1])}));else for(var n in t)T(n,[t[n],!1])}function gn(t,n){Q({type:m.SKIP_WHEN},(function(){S.run({skipped:!!S.useX().skipped||d(t,d(Gt))},(function(){return n()}))}))}function En(){var t=S.useX("warn hook called outside of a running suite.");M(t.currentTest,"warn called outside of a test."),t.currentTest.warn()}export{an as VERSION,S as context,cn as create,fn as each,ln as eager,dn as group,pn as include,vn as omitWhen,Vt as only,hn as optional,Yt as skip,gn as skipWhen,on as test,En as warn};