vest 5.0.0-dev-781e21 → 5.0.2-dev-d315d9

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.
Files changed (182) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +2 -57
  3. package/dist/cjs/classnames.development.js +18 -16
  4. package/dist/cjs/classnames.production.js +1 -1
  5. package/dist/cjs/enforce/compose.development.js +5 -54
  6. package/dist/cjs/enforce/compose.production.js +1 -1
  7. package/dist/cjs/enforce/compounds.development.js +20 -83
  8. package/dist/cjs/enforce/compounds.production.js +1 -1
  9. package/dist/cjs/enforce/schema.development.js +19 -82
  10. package/dist/cjs/enforce/schema.production.js +1 -1
  11. package/dist/cjs/parser.development.js +12 -9
  12. package/dist/cjs/parser.production.js +1 -1
  13. package/dist/cjs/promisify.development.js +4 -8
  14. package/dist/cjs/promisify.production.js +1 -1
  15. package/dist/cjs/vest.development.js +1287 -1153
  16. package/dist/cjs/vest.production.js +1 -1
  17. package/dist/es/classnames.development.js +20 -18
  18. package/dist/es/classnames.production.js +1 -1
  19. package/dist/es/enforce/compose.development.js +1 -58
  20. package/dist/es/enforce/compose.production.js +1 -1
  21. package/dist/es/enforce/compounds.development.js +2 -90
  22. package/dist/es/enforce/compounds.production.js +1 -1
  23. package/dist/es/enforce/schema.development.js +2 -88
  24. package/dist/es/enforce/schema.production.js +1 -1
  25. package/dist/es/parser.development.js +12 -9
  26. package/dist/es/parser.production.js +1 -1
  27. package/dist/es/promisify.development.js +5 -9
  28. package/dist/es/promisify.production.js +1 -1
  29. package/dist/es/vest.development.js +1286 -1148
  30. package/dist/es/vest.production.js +1 -1
  31. package/dist/umd/classnames.development.js +21 -19
  32. package/dist/umd/classnames.production.js +1 -1
  33. package/dist/umd/enforce/compose.development.js +9 -57
  34. package/dist/umd/enforce/compose.production.js +1 -1
  35. package/dist/umd/enforce/compounds.development.js +32 -94
  36. package/dist/umd/enforce/compounds.production.js +1 -1
  37. package/dist/umd/enforce/schema.development.js +32 -94
  38. package/dist/umd/enforce/schema.production.js +1 -1
  39. package/dist/umd/parser.development.js +16 -13
  40. package/dist/umd/parser.production.js +1 -1
  41. package/dist/umd/promisify.development.js +7 -11
  42. package/dist/umd/promisify.production.js +1 -1
  43. package/dist/umd/vest.development.js +1289 -1155
  44. package/dist/umd/vest.production.js +1 -1
  45. package/package.json +12 -16
  46. package/src/__tests__/__snapshots__/integration.async-tests.test.ts.snap +71 -0
  47. package/src/__tests__/__snapshots__/integration.base.test.ts.snap +71 -0
  48. package/src/__tests__/__snapshots__/integration.stateful-async.test.ts.snap +243 -0
  49. package/src/__tests__/__snapshots__/integration.stateful-tests.test.ts.snap +376 -0
  50. package/src/__tests__/integration.async-tests.test.ts +90 -0
  51. package/src/__tests__/integration.base.test.ts +45 -0
  52. package/src/__tests__/integration.exclusive.test.ts +88 -0
  53. package/src/__tests__/integration.stateful-async.test.ts +137 -0
  54. package/src/__tests__/integration.stateful-tests.test.ts +155 -0
  55. package/src/__tests__/isolate.test.ts +288 -0
  56. package/src/__tests__/state_refill.test.ts +41 -0
  57. package/src/core/SuiteWalker/SuiteWalker.ts +64 -0
  58. package/src/core/SuiteWalker/__tests__/hasRemainingTests.test.ts +130 -0
  59. package/src/core/VestBus/VestBus.ts +78 -0
  60. package/src/core/context/PersistedContext.ts +243 -0
  61. package/src/core/context/SuiteContext.ts +74 -0
  62. package/src/core/isolate/IsolateTest/IsolateTest.ts +213 -0
  63. package/src/core/isolate/IsolateTest/IsolateTestReconciler.ts +156 -0
  64. package/src/core/isolate/IsolateTest/IsolateTestStateMachine.ts +69 -0
  65. package/src/core/isolate/IsolateTest/SimpleStateMachine.ts +43 -0
  66. package/src/core/isolate/IsolateTest/TestWalker.ts +77 -0
  67. package/src/core/isolate/IsolateTypes.ts +10 -0
  68. package/src/core/isolate/isIsolate.ts +6 -0
  69. package/src/core/isolate/isolate.ts +110 -0
  70. package/src/core/isolate/reconciler/Reconciler/Reconciler.ts +123 -0
  71. package/src/core/isolate/reconciler/cancelOverriddenPendingTest.ts +15 -0
  72. package/src/core/isolate/reconciler/isSameProfileTest.ts +12 -0
  73. package/src/core/isolate/walker.ts +127 -0
  74. package/src/core/test/TestTypes.ts +3 -0
  75. package/src/core/test/__tests__/IsolateTest.test.ts +152 -0
  76. package/src/core/test/__tests__/__snapshots__/IsolateTest.test.ts.snap +39 -0
  77. package/src/core/test/__tests__/__snapshots__/memo.test.ts.snap +101 -0
  78. package/src/core/test/__tests__/__snapshots__/test.test.ts.snap +231 -0
  79. package/src/core/test/__tests__/key.test.ts +195 -0
  80. package/src/core/test/__tests__/memo.test.ts +218 -0
  81. package/src/core/test/__tests__/merging_of_previous_test_runs.test.ts +341 -0
  82. package/src/core/test/__tests__/runAsyncTest.test.ts +175 -0
  83. package/src/core/test/__tests__/test.test.ts +226 -0
  84. package/src/core/test/helpers/__tests__/nonMatchingSeverityProfile.test.ts +52 -0
  85. package/src/core/test/helpers/asVestTest.ts +9 -0
  86. package/src/core/test/helpers/matchingFieldName.ts +16 -0
  87. package/src/core/test/helpers/matchingGroupName.ts +12 -0
  88. package/src/core/test/helpers/nonMatchingSeverityProfile.ts +14 -0
  89. package/src/core/test/helpers/shouldUseErrorMessage.ts +9 -0
  90. package/src/core/test/test.memo.ts +81 -0
  91. package/src/core/test/test.ts +64 -0
  92. package/src/core/test/testLevelFlowControl/runTest.ts +86 -0
  93. package/src/core/test/testLevelFlowControl/verifyTestRun.ts +32 -0
  94. package/src/core/test/testObjectIsolate.ts +11 -0
  95. package/src/errors/ErrorStrings.ts +4 -0
  96. package/src/exports/__tests__/classnames.test.ts +92 -0
  97. package/src/exports/__tests__/parser.test.ts +441 -0
  98. package/src/exports/__tests__/promisify.test.ts +77 -0
  99. package/src/exports/classnames.ts +35 -0
  100. package/src/exports/enforce@compose.ts +1 -0
  101. package/src/exports/enforce@compounds.ts +1 -0
  102. package/src/exports/enforce@schema.ts +1 -0
  103. package/src/exports/parser.ts +63 -0
  104. package/src/exports/promisify.ts +18 -0
  105. package/src/hooks/__tests__/__snapshots__/include.test.ts.snap +794 -0
  106. package/src/hooks/__tests__/eager.test.ts +130 -0
  107. package/src/hooks/__tests__/exclusive.test.ts +578 -0
  108. package/src/hooks/__tests__/include.test.ts +431 -0
  109. package/src/hooks/__tests__/optional.test.ts +83 -0
  110. package/src/hooks/__tests__/warn.test.ts +42 -0
  111. package/src/hooks/exclusive.ts +179 -0
  112. package/src/hooks/include.ts +54 -0
  113. package/src/hooks/mode.ts +47 -0
  114. package/src/hooks/optional/OptionalTypes.ts +31 -0
  115. package/src/hooks/optional/optional.ts +69 -0
  116. package/src/hooks/warn.ts +19 -0
  117. package/src/isolates/__tests__/__snapshots__/each.test.ts.snap +3 -0
  118. package/src/isolates/__tests__/__snapshots__/group.test.ts.snap +114 -0
  119. package/src/isolates/__tests__/__snapshots__/omitWhen.test.ts.snap +443 -0
  120. package/src/isolates/__tests__/__snapshots__/skipWhen.test.ts.snap +99 -0
  121. package/src/isolates/__tests__/each.test.ts +35 -0
  122. package/src/isolates/__tests__/group.test.ts +362 -0
  123. package/src/isolates/__tests__/omitWhen.test.ts +246 -0
  124. package/src/isolates/__tests__/skipWhen.test.ts +163 -0
  125. package/src/isolates/each.ts +30 -0
  126. package/src/isolates/group.ts +9 -0
  127. package/src/isolates/omitWhen.ts +41 -0
  128. package/src/isolates/skipWhen.ts +42 -0
  129. package/src/suite/__tests__/__snapshots__/create.test.ts.snap +67 -0
  130. package/src/suite/__tests__/create.test.ts +109 -0
  131. package/src/suite/__tests__/remove.test.ts +50 -0
  132. package/src/suite/__tests__/resetField.test.ts +74 -0
  133. package/src/suite/createSuite.ts +94 -0
  134. package/src/suite/runCallbacks.ts +28 -0
  135. package/src/suiteResult/Severity.ts +15 -0
  136. package/src/suiteResult/SuiteResultTypes.ts +42 -0
  137. package/src/suiteResult/__tests__/done.test.ts +334 -0
  138. package/src/suiteResult/__tests__/produce.test.ts +163 -0
  139. package/src/suiteResult/done/deferDoneCallback.ts +28 -0
  140. package/src/suiteResult/done/shouldSkipDoneRegistration.ts +20 -0
  141. package/src/suiteResult/selectors/__tests__/__snapshots__/collectFailureMessages.test.ts.snap +89 -0
  142. package/src/suiteResult/selectors/__tests__/collectFailureMessages.test.ts +124 -0
  143. package/src/suiteResult/selectors/__tests__/getFailures.test.ts +158 -0
  144. package/src/suiteResult/selectors/__tests__/getFailuresByGroup.test.ts +199 -0
  145. package/src/suiteResult/selectors/__tests__/hasFailures.test.ts +141 -0
  146. package/src/suiteResult/selectors/__tests__/hasFailuresByGroup.test.ts +185 -0
  147. package/src/suiteResult/selectors/__tests__/hasFailuresByTestObject.test.ts +88 -0
  148. package/src/suiteResult/selectors/__tests__/isValid.test.ts +359 -0
  149. package/src/suiteResult/selectors/__tests__/isValidByGroup.test.ts +480 -0
  150. package/src/suiteResult/selectors/collectFailures.ts +43 -0
  151. package/src/suiteResult/selectors/hasFailuresByTestObjects.ts +62 -0
  152. package/src/suiteResult/selectors/produceSuiteSummary.ts +135 -0
  153. package/src/suiteResult/selectors/shouldAddValidProperty.ts +148 -0
  154. package/src/suiteResult/selectors/suiteSelectors.ts +199 -0
  155. package/src/suiteResult/suiteResult.ts +15 -0
  156. package/src/suiteResult/suiteRunResult.ts +43 -0
  157. package/src/vest.ts +36 -0
  158. package/testUtils/TVestMock.ts +5 -0
  159. package/testUtils/__tests__/partition.test.ts +4 -4
  160. package/testUtils/mockThrowError.ts +4 -2
  161. package/testUtils/suiteDummy.ts +2 -1
  162. package/testUtils/testDummy.ts +12 -10
  163. package/testUtils/testPromise.ts +3 -0
  164. package/tsconfig.json +84 -2
  165. package/types/classnames.d.ts +39 -4
  166. package/types/classnames.d.ts.map +1 -0
  167. package/types/enforce/compose.d.ts +2 -126
  168. package/types/enforce/compose.d.ts.map +1 -0
  169. package/types/enforce/compounds.d.ts +2 -136
  170. package/types/enforce/compounds.d.ts.map +1 -0
  171. package/types/enforce/schema.d.ts +2 -144
  172. package/types/enforce/schema.d.ts.map +1 -0
  173. package/types/parser.d.ts +45 -10
  174. package/types/parser.d.ts.map +1 -0
  175. package/types/promisify.d.ts +36 -34
  176. package/types/promisify.d.ts.map +1 -0
  177. package/types/vest.d.ts +169 -224
  178. package/types/vest.d.ts.map +1 -0
  179. package/CHANGELOG.md +0 -87
  180. package/testUtils/expandStateRef.ts +0 -8
  181. package/testUtils/runCreateRef.ts +0 -10
  182. package/testUtils/testObjects.ts +0 -6
@@ -1 +1 @@
1
- "use strict";!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("n4s"),require("vest-utils"),require("context")):"function"==typeof define&&define.amd?define(["exports","n4s","vest-utils","context"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).vest={},t.n4s,t["vest-utils"],t.context)}(this,(function(t,n,e,r){function i(){var t=0;return{current:function(){return t},next:function(){t++}}}function u(t,n){return void 0===n&&(n=[]),{cursor:i(),keys:{current:{},prev:{}},path:n,type:t}}function s(){return rt.useX().stateRef}function o(t,n){(0,s().optionalFields()[1])((function(r){var i;return e.assign(r,((i={})[t]=e.assign({},r[t],n(r[t])),i))}))}function a(t){var n;return null!==(n=s().optionalFields()[0][t])&&void 0!==n?n:{}}function c(){f((function(t){return t}))}function f(t){(0,s().testObjects()[1])((function(n){return{prev:n.prev,current:e.asArray(t(n.current))}}))}function l(){return d().filter((function(t){return t.isPending()}))}function d(){var t=s().testObjects()[0].current;return it([t],(function(){return e.nestedArray.flatten(t)}))}function p(t){function n(t,n,u){return i.references.push(),r(t,e.optionalFunctionValue(n,u)),function(){return[i.references[t],function(n){return r(t,e.optionalFunctionValue(n,i.references[t]))}]}}function r(n,r){var s=i.references[n];i.references[n]=r,n=u[n][1],e.isFunction(n)&&n(r,s),e.isFunction(t)&&t()}var i={references:[]},u=[];return{registerStateKey:function(t,e){var r=u.length;return u.push([t,e]),n(r,t)},reset:function(){var t=i.references;i.references=[],u.forEach((function(e,r){return n(r,e[0],t[r])}))}}}function v(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 E(){return rt.useX().isolate}function h(){var t=E();return t.path.concat(t.cursor.current())}function g(t,n){t=void 0===(t=t.type)?$.DEFAULT:t,e.invariant(e.isFunction(n));var r=u(t,h());return t=rt.run({isolate:r},(function(){return r.keys.prev=function(){var t=s().testObjects()[0].prev;return e.asArray(e.nestedArray.getCurrent(t,h())).reduce((function(t,n){return n instanceof ot&&!e.isNullish(n.key)?(t[n.key]=n,t):t}),{})}(),f((function(t){return e.nestedArray.setValueAtPath(t,r.path,[])})),n()})),E().cursor.next(),t}function N(t,n){return!(!n||t.fieldName!==n)}function m(t,n){return d().some((function(e){return y(e,t,n)}))}function y(t,n,r){return!(!t.hasFailures()||r&&!N(t,r)||e.either(n===ut.WARNINGS,t.warns()))}function R(t){return!!t&&a(t).applied}function S(t){if(R(t))return!0;var n=d();return!(e.isEmpty(n)||m(ut.ERRORS,t)||function(t){return e.isNotEmpty(l().filter((function(n){return T(n,t)})))}(t))&&function(t){return d().every((function(n){return C(n,t)}))}(t)}function T(t,n){return!(n&&!N(t,n))&&R(n)}function C(t,n){return!(!n||N(t,n))||(a(t.fieldName).type===ht.Delayed&&t.awaitsResolution()||t.isTested()||t.isOmitted())}function O(){var t=d(),n=e.assign({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return t.reduce((function(t,n){var r=t.tests;r[n.fieldName]=A(r,n),r[n.fieldName].valid=!1!==r[n.fieldName].valid&&S(n.fieldName);var i=t.groups,u=n.groupName;return u&&(i[u]=i[u]||{},i[u][n.fieldName]=A(i[u],n),r=i[u][n.fieldName],!1===i[u][n.fieldName].valid?n=!1:n=!!R(n=n.fieldName)||!function(t,n,e){return d().some((function(r){return!gt(r,n)&&y(r,t,e)}))}(ut.ERRORS,u,n)&&!function(t,n){return e.isNotEmpty(l().filter((function(e){return!gt(e,t)&&T(e,n)})))}(u,n)&&function(t,n){return d().every((function(e){return!!gt(e,t)||C(e,n)}))}(u,n),r.valid=n),t}),n),n.valid=S(),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 A(t,n){function r(t){s[t===ut.ERRORS?st.ERROR_COUNT:st.WARN_COUNT]++,u&&(s[t]=(s[t]||[]).concat(u))}var i=n.fieldName,u=n.message;t[i]=t[i]||e.assign({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var s=t[i];return n.isNonActionable()||(t[i].testCount++,n.isFailing()?r(ut.ERRORS):n.isWarning()&&r(ut.WARNINGS)),s}function _(t,n,r){if(r){var i;t=(null===(i=null==t?void 0:t[r])||void 0===i?void 0:i[n])||[]}else{for(var u in i={},r=n===ut.ERRORS?st.ERROR_COUNT:st.WARN_COUNT,t)e.isPositive(t[u][r])&&(i[u]=t[u][n]||[]);t=i}return t}function b(t){return{getErrors:function(n){return _(t.tests,ut.ERRORS,n)},getErrorsByGroup:function(n,e){return _(t.groups[n],ut.ERRORS,e)},getWarnings:function(n){return _(t.tests,ut.WARNINGS,n)},getWarningsByGroup:function(n,e){return _(t.groups[n],ut.WARNINGS,e)},hasErrors:function(n){return k(t,st.ERROR_COUNT,n)},hasErrorsByGroup:function(n,e){return I(t,st.ERROR_COUNT,n,e)},hasWarnings:function(n){return k(t,st.WARN_COUNT,n)},hasWarningsByGroup:function(n,e){return I(t,st.WARN_COUNT,n,e)},isValid:function(n){var e;return n?!(null===(e=t.tests[n])||void 0===e||!e.valid):t.valid},isValidByGroup:function(n,e){if(!(n=t.groups[n]))return!1;if(e)return F(n,e);for(var r in n)if(!F(n,r))return!1;return!0}}}function F(t,n){var e;return!(null===(e=t[n])||void 0===e||!e.valid)}function I(t,n,r,i){var u,s;if(!(t=t.groups[r]))return!1;if(i)return e.isPositive(null===(u=t[i])||void 0===u?void 0:u[n]);for(var o in t)if(e.isPositive(null===(s=t[o])||void 0===s?void 0:s[n]))return!0;return!1}function k(t,n,r){var i;return t=r?null===(i=t.tests[r])||void 0===i?void 0:i[n]:t[n]||0,e.isPositive(t)}function P(){var t=d(),n={stateRef:s()};return mt([t],rt.bind(n,(function(){var t=O(),n=s().suiteName()[0];return e.assign(t,b(t),{suiteName:n})})))}function U(t){var n=l();return!e.isEmpty(n)&&(!t||n.some((function(n){return N(n,t)})))}function L(){var t=d(),n={stateRef:s()};return yt([t],rt.bind(n,(function(){return e.assign({},P(),{done:rt.bind(n,Rt)})})))}function W(t,n,r){var i;return!!(!e.isFunction(t)||n&&e.numberEquals(null===(i=r.tests[n])||void 0===i?void 0:i.testCount,0))}function D(t){return!(U()&&(!t||U(t)))}function V(t,n){(0,s().testCallbacks()[1])((function(e){return n?e.fieldCallbacks[n]=(e.fieldCallbacks[n]||[]).concat(t):e.doneCallbacks.push(t),e}))}function w(){var t=e.bus.createBus();return t.on(Nt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var r=s().testCallbacks()[0].fieldCallbacks;n&&!U(n)&&e.isArray(r[n])&&e.callEach(r[n]),U()||t.emit(Nt.ALL_RUNNING_TESTS_FINISHED)}})),t.on(Nt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function t(t){r[t.fieldName]&&(t.omit(),o(t.fieldName,(function(){return{applied:!0}})))}var n=s().optionalFields()[0];if(!e.isEmpty(n)){var r={};d().forEach((function(n){if(e.hasOwnProperty(r,n.fieldName))t(n);else{var i=a(n.fieldName);i.type===ht.Immediate&&(r[n.fieldName]=e.optionalFunctionValue(i.rule),t(n))}})),c()}}()})),t.on(Nt.ALL_RUNNING_TESTS_FINISHED,(function(){var t=s().testCallbacks()[0].doneCallbacks;e.callEach(t)})),t.on(Nt.REMOVE_FIELD,(function(t){d().forEach((function(n){N(n,t)&&(n.cancel(),function(t){f((function(n){return e.nestedArray.transform(n,(function(n){return t!==n?n:null}))}))}(n))}))})),t.on(Nt.RESET_FIELD,(function(t){d().forEach((function(n){N(n,t)&&n.reset()}))})),t}function G(){var t=rt.useX();return e.invariant(t.bus),t.bus}function x(t){return q(0,"tests",t)}function X(t){return q(1,"tests",t)}function q(t,n,r){var i=rt.useX("hook called outside of a running suite.");r&&e.asArray(r).forEach((function(r){e.isStringValue(r)&&(i.exclusion[n][r]=0===t)}))}function H(t){for(var n in t)if(!0===t[n])return!0;return!1}function K(){var t,n=rt.useX().exclusion;for(t in n.groups)if(n.groups[t])return!0;return!1}function M(t){return"Wrong arguments passed to group. Group ".concat(t,".")}function j(t,n,e){if(e||2===arguments.length)for(var r,i=0,u=n.length;i<u;i++)!r&&i in n||(r||(r=Array.prototype.slice.call(n,0,i)),r[i]=n[i]);return t.concat(r||Array.prototype.slice.call(n))}function B(t){var n=t.asyncTest,r=t.message;if(e.isPromise(n)){var i=G().emit,u=s(),o=rt.bind({stateRef:u},(function(){c(),i(Nt.TEST_COMPLETED,t)}));u=rt.bind({stateRef:u},(function(n){t.isCanceled()||(t.message=e.isStringValue(n)?n:r,t.fail(),o())}));try{n.then(o,u)}catch(t){u()}}}function Y(t){var n=s().testObjects()[0].prev;if(e.isEmpty(n))return J(t),t;var r=h();if(n=e.nestedArray.valueAtPath(n,r),!e.isNullish(t.key)){n=t.key,(r=E().keys.prev[n])&&(t=r),r=t;var i=E().keys.current;return e.isNullish(i[n])?i[n]=r:e.deferThrow('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),J(t),t}return r=n,!e.isNotEmpty(r)||r.fieldName===t.fieldName&&r.groupName===t.groupName||(E().type===$.EACH||e.deferThrow("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=E().cursor.current();f((function(n){return n.splice(t),n}))}(),n=null),J(t=e.defaultTo(n,t)),t}function J(t){var n=h();f((function(r){return e.nestedArray.setValueAtPath(r,n,t)}))}function z(t){var n=E().cursor,r=nt.EAGER;if(rt.useX().mode[0]===r&&m(ut.ERRORS,t.fieldName))return t.skip(),Y(t),n.next(),t;if(r=Y(t),rt.useX().omitted||R(t.fieldName))return r.omit(),n.next(),r;if(function(t){var n=t.fieldName;if(t=t.groupName,rt.useX().skipped)return!0;var r=rt.useX(),i=r.exclusion;r=r.inclusion;var u=i.tests,s=u[n];if(!1===s)return!0;if(s=!0===s,t){var o=rt.useX().exclusion.groups;if(o=e.hasOwnProperty(o,t)?!1===o[t]:K())return!0;if(!0===i.groups[t])return!(s||!H(u)&&!1!==u[n])}return!!(t=!!K()&&!t)||!s&&!!H(u)&&!e.optionalFunctionValue(r[n])}(t))return r.skip(!!rt.useX().skipped),n.next(),r;if(t!==r&&r.fieldName===t.fieldName&&r.groupName===t.groupName&&r.isPending()&&r.cancel(),J(t),t.isUntested()){r=G();var i=function(t){return rt.run({currentTest:t},(function(){return t.run()}))}(t);try{e.isPromise(i)?(t.asyncTest=i,t.setPending(),B(t)):r.emit(Nt.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 e.isPromise(t.asyncTest)&&(t.setPending(),B(t));return n.next(),t}function Q(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var i=e.isFunction(n[1])?n:j([void 0],n,!0);n=i[0],r=i[1],i=i[2],e.invariant(e.isStringValue(t),Z("fieldName","string")),e.invariant(e.isFunction(r),Z("Test callback","function"));var u=rt.useX();return z(n=new ot(t,r,{message:n,groupName:u.groupName,key:i}))}function Z(t,n){return"Incompatible params passed to test function. ".concat(t," must be a ").concat(n)}var $,tt,nt;(tt=$||($={}))[tt.DEFAULT=0]="DEFAULT",tt[tt.SUITE=1]="SUITE",tt[tt.EACH=2]="EACH",tt[tt.SKIP_WHEN=3]="SKIP_WHEN",tt[tt.OMIT_WHEN=4]="OMIT_WHEN",tt[tt.GROUP=5]="GROUP",function(t){t[t.ALL=0]="ALL",t[t.EAGER=1]="EAGER"}(nt||(nt={}));var et,rt=r.createCascade((function(t,n){return n?null:e.assign({exclusion:{tests:{},groups:{}},inclusion:{},isolate:u($.DEFAULT),mode:[nt.ALL]},t)})),it=e.cache();!function(t){t.Error="error",t.Warning="warning"}(et||(et={}));var ut,st,ot=function(){function t(t,n,r){var i=void 0===r?{}:r;r=i.message;var u=i.groupName;i=i.key,this.key=null,this.id=e.seq(),this.severity=et.Error,this.status=at,this.fieldName=t,this.testFn=n,u&&(this.groupName=u),r&&(this.message=r),i&&(this.key=i)}return t.prototype.run=function(){try{var t=this.testFn()}catch(n){t=n,e.isUndefined(this.message)&&e.isStringValue(t)&&(this.message=n),t=!1}return!1===t&&this.fail(),t},t.prototype.setStatus=function(t){this.isFinalStatus()&&t!==Et||(this.status=t)},t.prototype.warns=function(){return this.severity===et.Warning},t.prototype.setPending=function(){this.setStatus(pt)},t.prototype.fail=function(){this.setStatus(this.warns()?lt:ft)},t.prototype.done=function(){this.isFinalStatus()||this.setStatus(dt)},t.prototype.warn=function(){this.severity=et.Warning},t.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},t.prototype.skip=function(t){this.isPending()&&!t||this.setStatus(ct)},t.prototype.cancel=function(){this.setStatus(vt),c()},t.prototype.reset=function(){this.status=at,c()},t.prototype.omit=function(){this.setStatus(Et)},t.prototype.valueOf=function(){return!this.isFailing()},t.prototype.isPending=function(){return this.statusEquals(pt)},t.prototype.isOmitted=function(){return this.statusEquals(Et)},t.prototype.isUntested=function(){return this.statusEquals(at)},t.prototype.isFailing=function(){return this.statusEquals(ft)},t.prototype.isCanceled=function(){return this.statusEquals(vt)},t.prototype.isSkipped=function(){return this.statusEquals(ct)},t.prototype.isPassing=function(){return this.statusEquals(dt)},t.prototype.isWarning=function(){return this.statusEquals(lt)},t.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},t.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},t.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},t.prototype.awaitsResolution=function(){return this.isSkipped()||this.isUntested()||this.isPending()},t.prototype.statusEquals=function(t){return this.status===t},t}(),at="UNTESTED",ct="SKIPPED",ft="FAILED",lt="WARNING",dt="PASSING",pt="PENDING",vt="CANCELED",Et="OMITTED";!function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(ut||(ut={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(st||(st={}));var ht,gt=e.bindNot((function(t,n){return t.groupName===n}));!function(t){t[t.Immediate=0]="Immediate",t[t.Delayed=1]="Delayed"}(ht||(ht={}));var Nt,mt=e.cache(1),yt=e.cache(20),Rt=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var e=(t=t.reverse())[0];if(t=t[1],n=L(),W(e,t,n))return n;var r=function(){return e(P())};return D(t)?(r(),n):(V(r,t),n)};!function(t){t.TEST_COMPLETED="test_completed",t.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",t.REMOVE_FIELD="remove_field",t.RESET_FIELD="reset_field",t.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running"}(Nt||(Nt={})),x.group=function(t){return q(0,"groups",t)},X.group=function(t){return q(1,"groups",t)},r=e.assign(Q,{memo:function(t){var n=e.cache(10);return function(r){for(var i=[],u=1;u<arguments.length;u++)i[u-1]=arguments[u];u=E().cursor.current();var o=(i=i.reverse())[0],a=i[1],c=i[2];return u=[s().suiteId()[0],r,u].concat(o),i=n.get(u),e.isNull(i)?n(u,(function(){return t(r,c,a)})):i[1].isCanceled()?(n.invalidate(u),n(u,(function(){return t(r,c,a)}))):z(i[1])}}(Q)}),Object.defineProperty(t,"enforce",{enumerable:!0,get:function(){return n.enforce}}),t.VERSION="5.0.0-dev-781e21",t.context=rt,t.create=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=(t=t.reverse())[0];t=t[1],e.invariant(e.isFunction(r),"vest.create: Expected callback to be a function.");var i=w(),u=p();return t={stateRef:v(u,{suiteId:e.seq(),suiteName:t}),bus:i},e.assign(rt.bind(t,(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return u.reset(),g({type:$.SUITE},(function(){r.apply(void 0,t)})),i.emit(Nt.SUITE_CALLBACK_DONE_RUNNING),L()})),{get:rt.bind(t,P),remove:rt.bind(t,(function(t){i.emit(Nt.REMOVE_FIELD,t)})),reset:u.reset,resetField:rt.bind(t,(function(t){i.emit(Nt.RESET_FIELD,t)}))})},t.each=function(t,n){e.invariant(e.isFunction(n),"each callback must be a function"),g({type:$.EACH},(function(){t.forEach((function(t,e){n(t,e)}))}))},t.eager=function(){var t=nt.EAGER;rt.useX().mode[0]=t},t.group=function(t,n){e.invariant(e.isStringValue(t),M("name must be a string")),e.invariant(e.isFunction(n),M("callback must be a function")),g({type:$.GROUP},(function(){rt.run({groupName:t},n)}))},t.include=function(t){var n=rt.useX(),r=n.inclusion;return n=n.exclusion,e.invariant(e.isStringValue(t)),r[t]=e.defaultTo(n.tests[t],!0),{when:function(n){var r=rt.useX(),i=r.exclusion;r.inclusion[t]=function(){return e.hasOwnProperty(i.tests,t)?e.defaultTo(i.tests[t],!0):e.isStringValue(n)?!!i.tests[n]:e.optionalFunctionValue(n,e.optionalFunctionValue(P))}}}},t.omitWhen=function(t,n){g({type:$.OMIT_WHEN},(function(){rt.run({omitted:!!rt.useX().omitted||e.optionalFunctionValue(t,e.optionalFunctionValue(P))},(function(){return n()}))}))},t.only=x,t.optional=function(t){if(e.isArray(t)||e.isStringValue(t))e.asArray(t).forEach((function(t){o(t,(function(){return{type:ht.Delayed,applied:!1,rule:null}}))}));else{var n,r=function(n){var r=t[n];o(n,(function(){return{type:ht.Immediate,rule:r,applied:e.optionalFunctionValue(r)}}))};for(n in t)r(n)}},t.skip=X,t.skipWhen=function(t,n){g({type:$.SKIP_WHEN},(function(){rt.run({skipped:!!rt.useX().skipped||e.optionalFunctionValue(t,e.optionalFunctionValue(P))},(function(){return n()}))}))},t.suiteSelectors=b,t.test=r,t.warn=function(){var t=rt.useX("warn hook called outside of a running suite.");e.invariant(t.currentTest,"warn called outside of a test."),t.currentTest.warn()},Object.defineProperty(t,"__esModule",{value:!0})}));
1
+ !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("n4s"),require("vest-utils"),require("context")):"function"==typeof define&&define.amd?define(["exports","n4s","vest-utils","context"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).vest={},t.n4s,t["vest-utils"],t.context)}(this,(function(t,n,e,i){"use strict";var s,r,u,o,a;!function(t){t[t.Immediate=0]="Immediate",t[t.Delayed=1]="Delayed"}(s||(s={})),function(t){t.DEFAULT="DEFAULT",t.TEST="TEST",t.SUITE="SUITE",t.EACH="EACH",t.GROUP="GROUP",t.SKIP_WHEN="SKIP_WHEN",t.OMIT_WHEN="OMIT_WHEN",t.TEST_MEMO="TEST_MEMO"}(r||(r={}));class c{static reconciler(t,n){return e.isNullish(n),t}static reconcile(t,n){var i;const s=Rt(),r=mt();let u=r;s&&(u=null!==(i=null==r?void 0:r.at(It()))&&void 0!==i?i:null);const o=this.reconciler(t,u);return e.invariant(o),Object.is(o,t)?[t,l(u,t,n)]:[o,o.output]}static removeAllNextNodesInIsolate(){const t=Rt(),n=mt();n&&t&&n.slice(It())}static handleCollision(t,n){return t.usesKey()?this.handleIsolateNodeWithKey(t):(this.nodeReorderDetected(t,n)&&this.onNodeReorder(t,n),n||t)}static nodeReorderDetected(t,n){return!(null!=t?t:n)}static onNodeReorder(t,n){return this.removeAllNextNodesInIsolate(),null!=t?t:n}static handleIsolateNodeWithKey(t){e.invariant(t.usesKey());const n=function(t){var n;if(e.isNullish(t))return null;const i=at.useX().historyNode;return null!==(n=null==i?void 0:i.keys[t])&&void 0!==n?n:null}(t.key);let i=t;return e.isNullish(n)||(i=n),function(t,n){if(!t)return;const i=Rt();if(e.invariant(i,"Not within an active isolate"),e.isNullish(i.keys[t]))return void(i.keys[t]=n);e.deferThrow(`Encountered the same test key "${t}" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.`)}(t.key,t),i}}function l(t,n,e){const i=gt(),s=at.run(Object.assign({historyNode:t,runtimeNode:n},!i&&{runtimeRoot:n}),(()=>e(n)));return n.output=s,s}function f(t,n){return t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.key===n.key}function d(t){return t===o.ERRORS?a.ERROR_COUNT:a.WARN_COUNT}function E(t,n){return!!n&&!N(t,n)}function N(t,n){return!(!n||t.fieldName!==n)}!function(t){t.HOOK_CALLED_OUTSIDE="hook called outside of a running suite.",t.EXPECTED_VEST_TEST="Expected value to be an instance of IsolateTest"}(u||(u={})),function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(o||(o={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(a||(a={}));const h=e.bindNot((function(t,n){return t.groupName===n}));function T(t){return function(t,n){return rt.someTests((e=>S(e,t,n)))}(o.ERRORS,t)}function S(t,n,i){return!!t.hasFailures()&&(!E(t,i)&&!function(t,n){return e.either(t===o.WARNINGS,n.warns())}(n,t))}var v;function m(){return function(t){const[n]=y();return n===t}(v.EAGER)}function p(t){return m()&&T(t.fieldName)}!function(t){t[t.ALL=0]="ALL",t[t.EAGER=1]="EAGER"}(v||(v={}));const R=i.createCascade(((t,n)=>n?null:e.assign({exclusion:{tests:{},groups:{}},inclusion:{},mode:e.tinyState.createTinyState(v.ALL),testMemoCache:D},t)));function I(t){return R.useX(t).exclusion}function g(){return R.useX().inclusion}function y(){return R.useX().mode()}const D=e.cache(10);class A{constructor(t,n){this.type=t,this.children=[],this.keys={},this.parent=null,this.key=null}setParent(t){return this.parent=t,this}saveOutput(t){return this.output=t,this}setKey(t){return this.key=t,this}usesKey(){return e.isNotNullish(this.key)}addChild(t){e.invariant(this.children),this.children.push(t)}removeChild(t){var n,e;this.children=null!==(e=null===(n=this.children)||void 0===n?void 0:n.filter((n=>n!==t)))&&void 0!==e?e:null}slice(t){e.isNullish(this.children)||(this.children.length=t)}at(t){var n,e;return null!==(e=null===(n=this.children)||void 0===n?void 0:n[t])&&void 0!==e?e:null}cursor(){var t,n;return null!==(n=null===(t=this.children)||void 0===t?void 0:t.length)&&void 0!==n?n:0}static create(t,n,e){return this.createImplementation(t,n,e)}static createImplementation(t,n,e){const i=Rt(),s=new this(t,e).setParent(i),[r,u]=this.reconciler.reconcile(s,n);return r.saveOutput(u),this.setNode(r),r}static setNode(t){Rt()?function(t){const n=Rt();e.invariant(n,"Not within an active isolate"),n.addChild(t)}(t):function(t){const n=at.useX(),[,e]=n.historyRoot();e(t)}(t)}static is(t){return t instanceof A}}function C(t){return!!Dt(t)||!rt.hasNoTests()&&(!T(t)&&(!function(t){return rt.someIncompleteTests((n=>O(n,t)))}(t)&&function(t){return rt.everyTest((n=>P(n,t)))}(t)))}function _(t,n){return!!Dt(n)||!function(t,n,e){return rt.someTests((i=>!h(i,n)&&S(i,t,e)))}(o.ERRORS,t,n)&&(!function(t,n){return rt.someIncompleteTests((e=>!h(e,t)&&O(e,n)))}(t,n)&&function(t,n){return rt.everyTest((e=>!!h(e,t)||P(e,n)))}(t,n))}function O(t,n){return!E(t,n)&&Dt(n)}function P(t,n){return!!E(t,n)||(function(t){return ht(t.fieldName).type===s.Delayed&&t.awaitsResolution()}(t)||t.isTested()||t.isOmitted())}function U(){const t=e.assign({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return rt.walkTests((n=>{!function(t,n){t[n.fieldName]=F(t,n),t[n.fieldName].valid=!1!==t[n.fieldName].valid&&C(n.fieldName)}(t.tests,n),function(t,n){const{groupName:e}=n;if(!e)return;t[e]=t[e]||{},t[e][n.fieldName]=F(t[e],n),t[e][n.fieldName].valid=!1!==t[e][n.fieldName].valid&&_(e,n.fieldName)}(t.groups,n)})),t.valid=C(),function(t){for(const n in t.tests)t.errorCount+=t.tests[n].errorCount,t.warnCount+=t.tests[n].warnCount,t.testCount+=t.tests[n].testCount;return t}(t)}function F(t,n){const{fieldName:i,message:s}=n;t[i]=t[i]||e.assign({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});const r=t[i];return n.isNonActionable()||(t[i].testCount++,n.isFailing()?u(o.ERRORS):n.isWarning()&&u(o.WARNINGS)),r;function u(t){const n=d(t);r[n]++,s&&(r[t]=(r[t]||[]).concat(s))}}function L(t,n,i){return i?function(t,n,e){var i;return(null===(i=null==t?void 0:t[e])||void 0===i?void 0:i[n])||[]}(t,n,i):function(t,n){const i={},s=d(n);for(const r in t)e.isPositive(t[r][s])&&(i[r]=t[r][n]||[]);return i}(t,n)}function k(t){const n={getErrors:function(n){return G(t,o.ERRORS,n)},getErrorsByGroup:function(n,e){return W(t,o.ERRORS,n,e)},getWarnings:function(n){return G(t,o.WARNINGS,n)},getWarningsByGroup:function(n,e){return W(t,o.WARNINGS,n,e)},hasErrors:function(n){return M(t,a.ERROR_COUNT,n)},hasErrorsByGroup:function(n,e){return b(t,a.ERROR_COUNT,n,e)},hasWarnings:function(n){return M(t,a.WARN_COUNT,n)},hasWarningsByGroup:function(n,e){return b(t,a.WARN_COUNT,n,e)},isValid:function(n){var e;return n?Boolean(null===(e=t.tests[n])||void 0===e?void 0:e.valid):t.valid},isValidByGroup:function(n,e){const i=t.groups[n];if(!i)return!1;if(e)return w(i,e);for(const t in i)if(!w(i,t))return!1;return!0}};return n}function G(t,n,e){return L(t.tests,n,e)}function W(t,n,e,i){return L(t.groups[e],n,i)}function w(t,n){var e;return!!(null===(e=t[n])||void 0===e?void 0:e.valid)}function b(t,n,i,s){var r,u;const o=t.groups[i];if(!o)return!1;if(s)return e.isPositive(null===(r=o[s])||void 0===r?void 0:r[n]);for(const t in o)if(e.isPositive(null===(u=o[t])||void 0===u?void 0:u[n]))return!0;return!1}function M(t,n,i){var s;const r=i?null===(s=t.tests[i])||void 0===s?void 0:s[n]:t[n]||0;return e.isPositive(r)}function X(){const t=U(),n=at.useX().suiteName;return i=()=>e.assign(t,k(t),{suiteName:n}),(0,at.useX().suiteResultCache)([pt()],i);var i}function K(){return null!==(t=R.useX().skipped)&&void 0!==t&&t;var t}function V(t){return q(0,"tests",t)}function x(t){return q(1,"tests",t)}function H(t){const{fieldName:n,groupName:i}=t;if(K())return!0;const s=I(),r=g(),u=s.tests,o=u[n];if(!1===o)return!0;const a=!0===o;if(i){if(function(t){const n=I().groups;if(e.hasOwnProperty(n,t))return!1===n[t];return $()}(i))return!0;if(!0===s.groups[i])return!a&&(!!B(u)||!1===u[n])}return!!function(t){if(!$())return!1;return!t}(i)||!a&&(!!B(u)&&!e.optionalFunctionValue(r[n]))}function q(t,n,i){const s=I(u.HOOK_CALLED_OUTSIDE);i&&e.asArray(i).forEach((i=>{e.isStringValue(i)&&(s[n][i]=0===t)}))}function B(t){for(const n in t)if(!0===t[n])return!0;return!1}function $(){const t=I();for(const n in t.groups)if(t.groups[n])return!0;return!1}function j(){return null!==(t=R.useX().omitted)&&void 0!==t&&t;var t}A.reconciler=c,V.group=t=>q(0,"groups",t),x.group=t=>q(1,"groups",t);var Y,J;function z(){return function(t){let n=t.initial;return{getState:function(){return n},transition:function(e,i){let s=t.states[n][e];if(Array.isArray(s)){const[,t]=s;if(!t(i))return;s=s[0]}s&&s!==n&&(n=s)}}}(Q)}!function(t){t.UNTESTED="UNTESTED",t.SKIPPED="SKIPPED",t.FAILED="FAILED",t.WARNING="WARNING",t.PASSING="PASSING",t.PENDING="PENDING",t.CANCELED="CANCELED",t.OMITTED="OMITTED"}(Y||(Y={})),function(t){t.RESET="RESET"}(J||(J={}));const Q={initial:Y.UNTESTED,states:{[Y.UNTESTED]:{[Y.CANCELED]:Y.CANCELED,[Y.FAILED]:Y.FAILED,[Y.OMITTED]:Y.OMITTED,[Y.PASSING]:Y.PASSING,[Y.PENDING]:Y.PENDING,[Y.SKIPPED]:Y.SKIPPED,[Y.WARNING]:Y.WARNING},[Y.SKIPPED]:{[J.RESET]:Y.UNTESTED},[Y.FAILED]:{[J.RESET]:Y.UNTESTED},[Y.WARNING]:{[J.RESET]:Y.UNTESTED},[Y.PASSING]:{[J.RESET]:Y.UNTESTED},[Y.PENDING]:{[J.RESET]:Y.UNTESTED,[Y.CANCELED]:Y.CANCELED,[Y.FAILED]:Y.FAILED,[Y.OMITTED]:Y.OMITTED,[Y.PASSING]:Y.PASSING,[Y.SKIPPED]:[Y.SKIPPED,t=>!0===t],[Y.WARNING]:Y.WARNING},[Y.CANCELED]:{[J.RESET]:Y.UNTESTED},[Y.OMITTED]:{[J.RESET]:Y.UNTESTED}}};class Z extends A{constructor(t,{fieldName:n,testFn:i,message:s,groupName:r,key:u=null}){super(t),this.children=null,this.id=e.seq(),this.severity=tt.Error,this.stateMachine=z(),this.fieldName=n,this.testFn=i,r&&(this.groupName=r),s&&(this.message=s),this.setKey(u)}static factory(t,n){return super.create(r.TEST,t,n)}get status(){return this.stateMachine.getState()}setStatus(t,n){this.stateMachine.transition(t,n)}run(){let t;try{t=this.testFn()}catch(n){(function(t,n){return e.isUndefined(t)&&e.isStringValue(n)})(this.message,n)&&(this.message=n),t=!1}return!1===t&&this.fail(),t}warns(){return this.severity===tt.Warning}isPending(){return this.statusEquals(Y.PENDING)}isOmitted(){return this.statusEquals(Y.OMITTED)}isUntested(){return this.statusEquals(Y.UNTESTED)}isFailing(){return this.statusEquals(Y.FAILED)}isCanceled(){return this.statusEquals(Y.CANCELED)}isSkipped(){return this.statusEquals(Y.SKIPPED)}isPassing(){return this.statusEquals(Y.PASSING)}isWarning(){return this.statusEquals(Y.WARNING)}hasFailures(){return this.isFailing()||this.isWarning()}isNonActionable(){return this.isSkipped()||this.isOmitted()||this.isCanceled()}isTested(){return this.hasFailures()||this.isPassing()}awaitsResolution(){return this.isSkipped()||this.isUntested()||this.isPending()}statusEquals(t){return this.status===t}setPending(){this.setStatus(Y.PENDING)}fail(){this.setStatus(this.warns()?Y.WARNING:Y.FAILED)}pass(){this.setStatus(Y.PASSING)}warn(){this.severity=tt.Warning}skip(t){this.setStatus(Y.SKIPPED,t)}cancel(){this.setStatus(Y.CANCELED)}reset(){this.stateMachine.transition(J.RESET)}omit(){this.setStatus(Y.OMITTED)}valueOf(){return!this.isFailing()}isAsyncTest(){return e.isPromise(this.asyncTest)}static is(t){return t instanceof Z}static isX(t){e.invariant(this.is(t))}}var tt,nt;function et(t,n,i){if(e.isNullish(t.children))return;let s=!1;for(const u of t.children){if(s)return;if((e.isNullish(i)||e.optionalFunctionValue(i,u))&&n(u,r),s)return;et(u,((t,e)=>{n(t,(()=>{e(),r()}))}),i)}function r(){s=!0}}function it(t,n,e){let i=!1;return et(t,((t,e)=>{n(t)&&(e(),i=!0)}),e),i}Z.reconciler=class extends c{static reconciler(t,n){if(!Z.is(t))return t;if(e.isNullish(n))return this.handleNoHistoryNode(t);if(!Z.is(n))return t;const i=this.pickNode(n,t);return function(t,n,e){t===n&&Z.is(n)&&(s=n)!==(i=e)&&f(i,s)&&i.isPending()&&i.cancel();var i,s}(i,t,n),i}static nodeReorderDetected(t,n){return!!Z.is(n)&&!f(n,t)}static handleCollision(t,n){return t.usesKey()?this.handleIsolateNodeWithKey(t):this.nodeReorderDetected(t,n)?this.onNodeReorder(t,n):n||t}static onNodeReorder(t,n){return function(t,n){if(function(t){const n=t.parent;return e.invariant(n),function(t,n){return t.type===n}(n,r.EACH)}(t))return;e.deferThrow(`Vest Critical Error: Tests called in different order than previous run.\n expected: ${t.fieldName}\n received: ${Z.is(n)?n.fieldName:void 0}\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.`)}(t,n),this.removeAllNextNodesInIsolate(),t}static pickNode(t,n){const e=this.handleCollision(n,t);return p(n)?((i=n).skip(),i):(s=n,j()||Dt(s.fieldName)?function(t){return t.omit(),t}(n):H(n)?function(t){return t.skip(K()),t}(e):n);var i,s}static handleNoHistoryNode(t){return t.usesKey()?this.handleIsolateNodeWithKey(t):t}},function(t){t.Error="error",t.Warning="warning"}(tt||(tt={}));class st{static walk(t,n){const e=yt();e&&et(e,t,n)}static some(t,n){const e=yt();return!!e&&it(e,t,n)}static has(t){const n=yt();return!!n&&function(t,n){return it(t,(()=>!0),n)}(n,t)}static find(t,n){const e=yt();return e?function(t,n,e){let i=null;return et(t,((t,e)=>{n(t)&&(e(),i=t)}),e),i}(e,t,n):null}static every(t,n){const e=yt();return!!e&&function(t,n,e){let i=!0;return et(t,((t,e)=>{n(t)||(e(),i=!1)}),e),i}(e,t,n)}static pluck(t,n){const e=yt();if(e)return function(t,n,e){et(t,(t=>{n(t)&&t.parent&&t.parent.removeChild(t)}),e)}(e,t,n)}}class rt{static hasNoTests(){return!st.has(Z.is)}static someIncompleteTests(t){return st.some((n=>(Z.isX(n),n.isPending()&&t(n))),Z.is)}static someTests(t){return st.some((n=>(Z.isX(n),t(n))),Z.is)}static everyTest(t){return st.every((n=>(Z.isX(n),t(n))),Z.is)}static walkTests(t){st.walk(((n,e)=>{Z.isX(n),t(n,e)}),Z.is)}static hasRemainingTests(t){return rt.someIncompleteTests((n=>!t||N(n,t)))}static pluckTests(t){st.pluck((n=>(Z.isX(n),t(n))),Z.is)}static resetField(t){rt.walkTests((n=>{N(n,t)&&n.reset()}))}static removeTestByFieldName(t){rt.pluckTests((n=>N(n,t)))}}function ut(){const t=e.bus.createBus();return n(nt.TEST_COMPLETED,(n=>{n.isCanceled()||(n.pass(),function(t){const[n]=St();t&&!rt.hasRemainingTests(t)&&e.isArray(n[t])&&e.callEach(n[t])}(n.fieldName),rt.hasRemainingTests()||t.emit(nt.ALL_RUNNING_TESTS_FINISHED))})),n(nt.TEST_RUN_STARTED,(()=>{})),n(nt.ALL_RUNNING_TESTS_FINISHED,(()=>{!function(){const[t]=Tt();e.callEach(t)}()})),n(nt.RESET_FIELD,(t=>{rt.resetField(t)})),n(nt.SUITE_RUN_STARTED,(()=>{lt()})),n(nt.REMOVE_FIELD,(t=>{rt.removeTestByFieldName(t)})),n(nt.RESET_SUITE,(()=>{!function(){lt();const[,,t]=vt();t()}()})),t;function n(n,e){t.on(n,((...t)=>{at.useX().suiteResultCache.invalidate([pt()]),e(...t)}))}}!function(t){t.TEST_RUN_STARTED="test_run_started",t.TEST_COMPLETED="test_completed",t.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",t.REMOVE_FIELD="remove_field",t.RESET_FIELD="reset_field",t.RESET_SUITE="reset_suite",t.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running",t.SUITE_RUN_STARTED="suite_run_started"}(nt||(nt={}));const ot=e.cache(),at=i.createCascade(((t,n)=>{if(n)return null;e.invariant(t.historyRoot);const[i]=t.historyRoot(),s={};return e.assign(s,{historyNode:i,optional:{},runtimeNode:null,runtimeRoot:null},t),s}));function ct(t){const n=at.useX();return function(...e){var i;const s=null!==(i=at.use())&&void 0!==i?i:n;return at.run(s,(()=>t(...e)))}}function lt(){const[,,t]=Tt(),[,,n]=St();t(),n()}function ft(){return at.useX().VestBus}function dt(){return ct(ft().emit)}function Et(t){const n=dt();return e=>n(t,e)}function Nt(){return at.useX().optional}function ht(t){var n;return null!==(n=Nt()[t])&&void 0!==n?n:{}}function Tt(){return at.useX().doneCallbacks()}function St(){return at.useX().fieldCallbacks()}function vt(){return at.useX().historyRoot()}function mt(){return at.useX().historyNode}function pt(){return at.useX().suiteId}function Rt(){var t;return null!==(t=at.useX().runtimeNode)&&void 0!==t?t:null}function It(){var t,n;return null!==(n=null===(t=Rt())||void 0===t?void 0:t.cursor())&&void 0!==n?n:0}function gt(){return at.useX().runtimeRoot}function yt(){const t=gt();if(t)return t;const[n]=vt();return n}function Dt(t){return!!t&&ht(t).applied}function At(t,n){const i=Nt(),s=ht(t);e.assign(i,{[t]:e.assign({},s,n(s))})}function Ct(){return e.assign({},X(),{done:ct(_t)})}function _t(...t){const[n,i]=t.reverse(),s=Ct();if(function(t,n,i){var s;return!!(!e.isFunction(t)||n&&e.numberEquals(null===(s=i.tests[n])||void 0===s?void 0:s.testCount,0))}(n,i,s))return s;const r=()=>n(X());return rt.hasRemainingTests(i)?(function(t,n){const[,i]=St(),[,s]=Tt();n?i((i=>e.assign(i,{[n]:(i[n]||[]).concat(t)}))):s((n=>n.concat(t)))}(r,i),s):(r(),s)}function Ot(t){!function(t){p(t)?t.skip():j()||Dt(t.fieldName)?t.omit():H(t)&&t.skip(K())}(t),t.isNonActionable()||(t.isUntested()?function(t){const n=ft(),i=function(t){return R.run({currentTest:t},(()=>t.run()))}(t);try{e.isPromise(i)?(t.asyncTest=i,t.setPending(),Pt(t)):n.emit(nt.TEST_COMPLETED,t)}catch(n){throw new Error(`Unexpected error encountered during test registration.\n Test Object: ${JSON.stringify(t)}.\n Error: ${n}.`)}}(t):t.isAsyncTest()&&(t.setPending(),Pt(t)))}function Pt(t){const{asyncTest:n,message:i}=t;if(!e.isPromise(n))return;const s=ft(),r=ct((()=>{s.emit(nt.TEST_COMPLETED,t)})),u=ct((n=>{t.isCanceled()||(t.message=e.isStringValue(n)?n:i,t.fail(),r())}));n.then(r,u)}function Ut(t,...n){const[i,s,r]=e.isFunction(n[1])?n:[void 0,...n];e.invariant(e.isStringValue(t),Lt("fieldName","string")),e.invariant(e.isFunction(s),Lt("callback","function"));const u={fieldName:t,groupName:R.useX().groupName,key:r,message:i,testFn:s};return dt()(nt.TEST_RUN_STARTED),function(t){return Z.factory((t=>Ot(t)),t)}(u)}const Ft=e.assign(Ut,{memo:function(t){return function(n,...i){const[s,r,u]=i.reverse();return function(t,n){const i=R.useX().testMemoCache,s=i.get(t);if(e.isNull(s))return i(t,n);const[,r]=s;if(r.isCanceled())return i.invalidate(t),i(t,n);return Z.setNode(r),r}([pt(),n,It()].concat(s),(function(){return t(n,u,r)}))}}(Ut)});function Lt(t,n){return`Incompatible params passed to test function. Test ${t} must be a ${n}`}Object.defineProperty(t,"enforce",{enumerable:!0,get:function(){return n.enforce}}),t.create=function(...t){const[n,i]=t.reverse();!function(t){e.invariant(e.isFunction(t),"vest.create: Expected callback to be a function.")}(n);const s=function({suiteName:t}){return{VestBus:ut(),doneCallbacks:e.tinyState.createTinyState((()=>[])),fieldCallbacks:e.tinyState.createTinyState((()=>({}))),historyRoot:e.tinyState.createTinyState(null),optional:{},suiteId:e.seq(),suiteName:t,suiteResultCache:ot}}({suiteName:i});function u(...t){return R.run({},(()=>(dt()(nt.SUITE_RUN_STARTED),A.create(r.SUITE,function(...t){return()=>(n(...t),Ct())}(...t))))).output}return at.run(s,(()=>e.assign(at.bind(s,u),{get:ct(X),remove:Et(nt.REMOVE_FIELD),reset:Et(nt.RESET_SUITE),resetField:Et(nt.RESET_FIELD)})))},t.each=function(t,n){e.invariant(e.isFunction(n),"each callback must be a function"),A.create(r.EACH,(()=>{t.forEach(((t,e)=>{n(t,e)}))}))},t.eager=function(){const[,t]=y();t(v.EAGER)},t.group=function(t,n){return A.create(r.GROUP,(()=>{R.run({groupName:t},n)}))},t.include=function(t){const n=g(),i=I();return e.invariant(e.isStringValue(t)),n[t]=e.defaultTo(i.tests[t],!0),{when:function(n){const i=g(),s=I();i[t]=()=>e.hasOwnProperty(s.tests,t)?e.defaultTo(s.tests[t],!0):e.isStringValue(n)?Boolean(s.tests[n]):e.optionalFunctionValue(n,e.optionalFunctionValue(X))}}},t.omitWhen=function(t,n){A.create(r.OMIT_WHEN,(()=>{R.run({omitted:j()||e.optionalFunctionValue(t,e.optionalFunctionValue(X))},n)}))},t.only=V,t.optional=function(t){if(e.isArray(t)||e.isStringValue(t))e.asArray(t).forEach((t=>{At(t,(()=>({type:s.Delayed,applied:!1,rule:null})))}));else for(const n in t){const i=t[n];At(n,(()=>({type:s.Immediate,rule:i,applied:e.optionalFunctionValue(i)})))}},t.skip=x,t.skipWhen=function(t,n){A.create(r.SKIP_WHEN,(()=>{R.run({skipped:K()||e.optionalFunctionValue(t,e.optionalFunctionValue(X))},n)}))},t.suiteSelectors=k,t.test=Ft,t.warn=function(){const t=(n=u.HOOK_CALLED_OUTSIDE,R.useX(n).currentTest);var n;e.invariant(t,"warn called outside of a test."),t.warn()},Object.defineProperty(t,"__esModule",{value:!0})}));
package/package.json CHANGED
@@ -1,16 +1,14 @@
1
1
  {
2
- "version": "5.0.0-dev-781e21",
3
- "license": "MIT",
4
2
  "name": "vest",
3
+ "version": "5.0.2-dev-d315d9",
4
+ "description": "Declarative Form Validations Framework",
5
+ "license": "MIT",
5
6
  "author": "ealush",
6
- "scripts": {
7
- "test": "vx test",
8
- "build": "vx build",
9
- "release": "vx release"
10
- },
11
7
  "main": "./dist/cjs/vest.js",
12
- "types": "./types/vest.d.ts",
13
8
  "module": "./dist/es/vest.production.js",
9
+ "unpkg": "./dist/umd/vest.production.js",
10
+ "jsdelivr": "./dist/umd/vest.production.js",
11
+ "types": "./types/vest.d.ts",
14
12
  "repository": {
15
13
  "type": "git",
16
14
  "url": "https://github.com/ealush/vest.git",
@@ -20,11 +18,11 @@
20
18
  "url": "https://github.com/ealush/vest.git/issues"
21
19
  },
22
20
  "dependencies": {
23
- "context": "^3.0.0-dev-781e21",
24
- "n4s": "^5.0.0-dev-781e21",
25
- "vest-utils": "^0.0.2"
21
+ "context": "^3.0.5-dev-d315d9",
22
+ "n4s": "^4.3.5-dev-d315d9",
23
+ "vast": "^1.0.15-dev-d315d9",
24
+ "vest-utils": "^0.1.0-dev-d315d9"
26
25
  },
27
- "homepage": "https://vestjs.dev/",
28
26
  "exports": {
29
27
  "./classnames": {
30
28
  "production": {
@@ -227,8 +225,6 @@
227
225
  "default": "./dist/cjs/vest.production.js"
228
226
  },
229
227
  "./package.json": "./package.json",
230
- "./": "./"
231
- },
232
- "unpkg": "./dist/umd/vest.production.js",
233
- "jsdelivr": "./dist/umd/vest.production.js"
228
+ "./*": "./*"
229
+ }
234
230
  }
@@ -0,0 +1,71 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Stateful behavior Should have all fields 1`] = `
4
+ {
5
+ "field_1": {
6
+ "errorCount": 1,
7
+ "errors": [
8
+ "field_statement_1",
9
+ ],
10
+ "testCount": 1,
11
+ "valid": false,
12
+ "warnCount": 0,
13
+ "warnings": [],
14
+ },
15
+ "field_2": {
16
+ "errorCount": 1,
17
+ "errors": [
18
+ "field_statement_2",
19
+ ],
20
+ "testCount": 1,
21
+ "valid": false,
22
+ "warnCount": 0,
23
+ "warnings": [],
24
+ },
25
+ "field_3": {
26
+ "errorCount": 0,
27
+ "errors": [],
28
+ "testCount": 1,
29
+ "valid": true,
30
+ "warnCount": 0,
31
+ "warnings": [],
32
+ },
33
+ "field_4": {
34
+ "errorCount": 0,
35
+ "errors": [],
36
+ "testCount": 2,
37
+ "valid": true,
38
+ "warnCount": 1,
39
+ "warnings": [
40
+ "field_statement_4",
41
+ ],
42
+ },
43
+ "field_5": {
44
+ "errorCount": 2,
45
+ "errors": [
46
+ "field_statement_5",
47
+ "field_statement_6",
48
+ ],
49
+ "testCount": 2,
50
+ "valid": false,
51
+ "warnCount": 0,
52
+ "warnings": [],
53
+ },
54
+ "field_6": {
55
+ "errorCount": 0,
56
+ "errors": [],
57
+ "testCount": 1,
58
+ "valid": false,
59
+ "warnCount": 0,
60
+ "warnings": [],
61
+ },
62
+ "field_7": {
63
+ "errorCount": 0,
64
+ "errors": [],
65
+ "testCount": 1,
66
+ "valid": false,
67
+ "warnCount": 0,
68
+ "warnings": [],
69
+ },
70
+ }
71
+ `;
@@ -0,0 +1,71 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Base behavior Should produce correct validation result 1`] = `
4
+ {
5
+ "done": [Function],
6
+ "errorCount": 2,
7
+ "getErrors": [Function],
8
+ "getErrorsByGroup": [Function],
9
+ "getWarnings": [Function],
10
+ "getWarningsByGroup": [Function],
11
+ "groups": {},
12
+ "hasErrors": [Function],
13
+ "hasErrorsByGroup": [Function],
14
+ "hasWarnings": [Function],
15
+ "hasWarningsByGroup": [Function],
16
+ "isValid": [Function],
17
+ "isValidByGroup": [Function],
18
+ "suiteName": undefined,
19
+ "testCount": 5,
20
+ "tests": {
21
+ "field_1": {
22
+ "errorCount": 1,
23
+ "errors": [
24
+ "field_statement_1",
25
+ ],
26
+ "testCount": 1,
27
+ "valid": false,
28
+ "warnCount": 0,
29
+ "warnings": [],
30
+ },
31
+ "field_2": {
32
+ "errorCount": 1,
33
+ "errors": [
34
+ "field_statement_2",
35
+ ],
36
+ "testCount": 1,
37
+ "valid": false,
38
+ "warnCount": 0,
39
+ "warnings": [],
40
+ },
41
+ "field_3": {
42
+ "errorCount": 0,
43
+ "errors": [],
44
+ "testCount": 1,
45
+ "valid": true,
46
+ "warnCount": 0,
47
+ "warnings": [],
48
+ },
49
+ "field_4": {
50
+ "errorCount": 0,
51
+ "errors": [],
52
+ "testCount": 2,
53
+ "valid": true,
54
+ "warnCount": 1,
55
+ "warnings": [
56
+ "field_statement_4",
57
+ ],
58
+ },
59
+ "field_5": {
60
+ "errorCount": 0,
61
+ "errors": [],
62
+ "testCount": 0,
63
+ "valid": false,
64
+ "warnCount": 0,
65
+ "warnings": [],
66
+ },
67
+ },
68
+ "valid": false,
69
+ "warnCount": 1,
70
+ }
71
+ `;
@@ -0,0 +1,243 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Stateful async tests Merges skipped validations from previous suite 1`] = `
4
+ {
5
+ "done": [Function],
6
+ "errorCount": 1,
7
+ "getErrors": [Function],
8
+ "getErrorsByGroup": [Function],
9
+ "getWarnings": [Function],
10
+ "getWarningsByGroup": [Function],
11
+ "groups": {
12
+ "group": {
13
+ "field_1": {
14
+ "errorCount": 0,
15
+ "errors": [],
16
+ "testCount": 0,
17
+ "valid": false,
18
+ "warnCount": 0,
19
+ "warnings": [],
20
+ },
21
+ "field_4": {
22
+ "errorCount": 0,
23
+ "errors": [],
24
+ "testCount": 0,
25
+ "valid": false,
26
+ "warnCount": 0,
27
+ "warnings": [],
28
+ },
29
+ },
30
+ },
31
+ "hasErrors": [Function],
32
+ "hasErrorsByGroup": [Function],
33
+ "hasWarnings": [Function],
34
+ "hasWarningsByGroup": [Function],
35
+ "isValid": [Function],
36
+ "isValidByGroup": [Function],
37
+ "suiteName": undefined,
38
+ "testCount": 3,
39
+ "tests": {
40
+ "field_1": {
41
+ "errorCount": 1,
42
+ "errors": [
43
+ "field_message_1",
44
+ ],
45
+ "testCount": 1,
46
+ "valid": false,
47
+ "warnCount": 0,
48
+ "warnings": [],
49
+ },
50
+ "field_2": {
51
+ "errorCount": 0,
52
+ "errors": [],
53
+ "testCount": 2,
54
+ "valid": false,
55
+ "warnCount": 0,
56
+ "warnings": [],
57
+ },
58
+ "field_3": {
59
+ "errorCount": 0,
60
+ "errors": [],
61
+ "testCount": 0,
62
+ "valid": false,
63
+ "warnCount": 0,
64
+ "warnings": [],
65
+ },
66
+ "field_4": {
67
+ "errorCount": 0,
68
+ "errors": [],
69
+ "testCount": 0,
70
+ "valid": false,
71
+ "warnCount": 0,
72
+ "warnings": [],
73
+ },
74
+ },
75
+ "valid": false,
76
+ "warnCount": 0,
77
+ }
78
+ `;
79
+
80
+ exports[`Stateful async tests Merges skipped validations from previous suite 2`] = `
81
+ {
82
+ "errorCount": 2,
83
+ "getErrors": [Function],
84
+ "getErrorsByGroup": [Function],
85
+ "getWarnings": [Function],
86
+ "getWarningsByGroup": [Function],
87
+ "groups": {
88
+ "group": {
89
+ "field_1": {
90
+ "errorCount": 0,
91
+ "errors": [],
92
+ "testCount": 0,
93
+ "valid": false,
94
+ "warnCount": 0,
95
+ "warnings": [],
96
+ },
97
+ "field_4": {
98
+ "errorCount": 0,
99
+ "errors": [],
100
+ "testCount": 0,
101
+ "valid": false,
102
+ "warnCount": 0,
103
+ "warnings": [],
104
+ },
105
+ },
106
+ },
107
+ "hasErrors": [Function],
108
+ "hasErrorsByGroup": [Function],
109
+ "hasWarnings": [Function],
110
+ "hasWarningsByGroup": [Function],
111
+ "isValid": [Function],
112
+ "isValidByGroup": [Function],
113
+ "suiteName": undefined,
114
+ "testCount": 3,
115
+ "tests": {
116
+ "field_1": {
117
+ "errorCount": 1,
118
+ "errors": [
119
+ "field_message_1",
120
+ ],
121
+ "testCount": 1,
122
+ "valid": false,
123
+ "warnCount": 0,
124
+ "warnings": [],
125
+ },
126
+ "field_2": {
127
+ "errorCount": 1,
128
+ "errors": [
129
+ "rejection_message_1",
130
+ ],
131
+ "testCount": 2,
132
+ "valid": false,
133
+ "warnCount": 0,
134
+ "warnings": [],
135
+ },
136
+ "field_3": {
137
+ "errorCount": 0,
138
+ "errors": [],
139
+ "testCount": 0,
140
+ "valid": false,
141
+ "warnCount": 0,
142
+ "warnings": [],
143
+ },
144
+ "field_4": {
145
+ "errorCount": 0,
146
+ "errors": [],
147
+ "testCount": 0,
148
+ "valid": false,
149
+ "warnCount": 0,
150
+ "warnings": [],
151
+ },
152
+ },
153
+ "valid": false,
154
+ "warnCount": 0,
155
+ }
156
+ `;
157
+
158
+ exports[`Stateful async tests Merges skipped validations from previous suite 3`] = `
159
+ {
160
+ "errorCount": 5,
161
+ "getErrors": [Function],
162
+ "getErrorsByGroup": [Function],
163
+ "getWarnings": [Function],
164
+ "getWarningsByGroup": [Function],
165
+ "groups": {
166
+ "group": {
167
+ "field_1": {
168
+ "errorCount": 1,
169
+ "errors": [
170
+ "field_1_group_message",
171
+ ],
172
+ "testCount": 1,
173
+ "valid": false,
174
+ "warnCount": 0,
175
+ "warnings": [],
176
+ },
177
+ "field_4": {
178
+ "errorCount": 1,
179
+ "errors": [
180
+ "field_4_group_message",
181
+ ],
182
+ "testCount": 1,
183
+ "valid": false,
184
+ "warnCount": 0,
185
+ "warnings": [],
186
+ },
187
+ },
188
+ },
189
+ "hasErrors": [Function],
190
+ "hasErrorsByGroup": [Function],
191
+ "hasWarnings": [Function],
192
+ "hasWarningsByGroup": [Function],
193
+ "isValid": [Function],
194
+ "isValidByGroup": [Function],
195
+ "suiteName": undefined,
196
+ "testCount": 7,
197
+ "tests": {
198
+ "field_1": {
199
+ "errorCount": 2,
200
+ "errors": [
201
+ "field_1_group_message",
202
+ "field_message_1",
203
+ ],
204
+ "testCount": 2,
205
+ "valid": false,
206
+ "warnCount": 0,
207
+ "warnings": [],
208
+ },
209
+ "field_2": {
210
+ "errorCount": 1,
211
+ "errors": [
212
+ "rejection_message_1",
213
+ ],
214
+ "testCount": 2,
215
+ "valid": false,
216
+ "warnCount": 0,
217
+ "warnings": [],
218
+ },
219
+ "field_3": {
220
+ "errorCount": 1,
221
+ "errors": [
222
+ "field_message_3",
223
+ ],
224
+ "testCount": 2,
225
+ "valid": false,
226
+ "warnCount": 0,
227
+ "warnings": [],
228
+ },
229
+ "field_4": {
230
+ "errorCount": 1,
231
+ "errors": [
232
+ "field_4_group_message",
233
+ ],
234
+ "testCount": 1,
235
+ "valid": false,
236
+ "warnCount": 0,
237
+ "warnings": [],
238
+ },
239
+ },
240
+ "valid": false,
241
+ "warnCount": 0,
242
+ }
243
+ `;