vest 5.1.4 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/vest.development.js +147 -119
- package/dist/cjs/vest.development.js.map +1 -1
- package/dist/cjs/vest.production.js +1 -1
- package/dist/cjs/vest.production.js.map +1 -1
- package/dist/es/vest.development.js +149 -121
- package/dist/es/vest.development.js.map +1 -1
- package/dist/es/vest.production.js +1 -1
- package/dist/es/vest.production.js.map +1 -1
- package/dist/umd/vest.development.js +147 -119
- package/dist/umd/vest.development.js.map +1 -1
- package/dist/umd/vest.production.js +1 -1
- package/dist/umd/vest.production.js.map +1 -1
- package/package.json +6 -6
- package/types/SuiteSerializer.d.ts +12 -12
- package/types/SuiteSerializer.d.ts.map +1 -1
- package/types/classnames.d.ts +12 -12
- package/types/classnames.d.ts.map +1 -1
- package/types/parser.d.ts +12 -12
- package/types/parser.d.ts.map +1 -1
- package/types/promisify.d.ts +12 -12
- package/types/promisify.d.ts.map +1 -1
- package/types/vest.d.ts +12 -12
- package/types/vest.d.ts.map +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{enforce as t}from"n4s";export{enforce}from"n4s";import{assign as e,tinyState as n,cache as s,isArray as r,isStringValue as i,asArray as a,hasOwnProperty as o,seq as u,StateMachine as c,invariant as l,isPromise as E,optionalFunctionValue as f,isEmpty as d,callEach as N,bindNot as T,either as S,isPositive as g,greaterThan as R,defaultTo as I,noop as _,isNotEmpty as m,isNotNullish as p,deferThrow as D,text as O,isUndefined as A,isNull as C,isFunction as v,numberEquals as h}from"vest-utils";import{Isolate as L,VestRuntime as P,IsolateSelectors as U,Walker as F,Bus as G,IsolateInspector as b,Reconciler as y}from"vestjs-runtime";import{createCascade as W}from"context";const M="Each",w="Focused",B="Group",k="OmitWhen",j="SkipWhen",K="Suite",V="Test";class X{static setOptionalField(t,n,s){const r=t.data.optional,i=r[n];e(r,{[n]:e({},i,s(i))})}static getOptionalField(t,e){var n;return null!==(n=t.data.optional[e])&&void 0!==n?n:{}}static getOptionalFields(t){return t.data.optional}}var x,H;!function(t){t[t.CUSTOM_LOGIC=0]="CUSTOM_LOGIC",t[t.AUTO=1]="AUTO"}(x||(x={})),function(t){t.EAGER="EAGER",t.ALL="ALL",t.ONE="ONE"}(H||(H={}));const q=W(((t,s)=>s?null:e({inclusion:{},mode:n.createTinyState(H.EAGER),suiteParams:[],testMemoCache:J},t)));function Y(){return q.useX().inclusion}function z(){return q.useX().mode()}const J=s(10);function Q(e){var n;const s=P.useAvailableRoot(),u=q.useX().suiteParams,c=null!==(n=null==u?void 0:u[0])&&void 0!==n?n:{};if(r(e)||i(e))a(e).forEach((e=>{X.setOptionalField(s,e,(()=>({type:x.AUTO,applied:!!o(c,e)&&t.isBlank().test(null==c?void 0:c[e]),rule:null})))}));else for(const n in e){const r=e[n];X.setOptionalField(s,n,(()=>({type:x.CUSTOM_LOGIC,rule:r,applied:t.isBlank().test(r)||!0===r})))}}function Z(t){var e,n;if(!t)return!1;const s=P.useAvailableRoot();return null!==(n=null===(e=X.getOptionalField(s,t))||void 0===e?void 0:e.applied)&&void 0!==n&&n}var $;!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_RUN_STARTED="suite_run_started",t.SUITE_CALLBACK_RUN_FINISHED="SUITE_CALLBACK_RUN_FINISHED",t.DONE_TEST_OMISSION_PASS="DONE_TEST_OMISSION_PASS"}($||($={}));const tt=s();function et(){return P.useXAppData()}function nt(){return et().doneCallbacks()}function st(){return et().fieldCallbacks()}function rt(){return et().suiteId}function it(){et().suiteResultCache.invalidate([rt()])}function at(){const[,,t]=nt(),[,,e]=st();t(),e()}function ot(t){P.useLoadRootNode(t),it()}var ut,ct;!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"}(ut||(ut={})),function(t){t.RESET="RESET"}(ct||(ct={}));const lt={initial:ut.UNTESTED,states:{"*":{[ut.OMITTED]:ut.OMITTED,[ct.RESET]:ut.UNTESTED},[ut.UNTESTED]:{[ut.CANCELED]:ut.CANCELED,[ut.FAILED]:ut.FAILED,[ut.PASSING]:ut.PASSING,[ut.PENDING]:ut.PENDING,[ut.SKIPPED]:ut.SKIPPED,[ut.WARNING]:ut.WARNING},[ut.PENDING]:{[ut.CANCELED]:ut.CANCELED,[ut.FAILED]:ut.FAILED,[ut.PASSING]:ut.PASSING,[ut.SKIPPED]:[ut.SKIPPED,t=>!0===t],[ut.WARNING]:ut.WARNING},[ut.SKIPPED]:{},[ut.FAILED]:{},[ut.WARNING]:{},[ut.PASSING]:{},[ut.CANCELED]:{},[ut.OMITTED]:{}}};var Et,ft,dt;function Nt(t){return t===Et.ERRORS?ft.ERROR_COUNT:ft.WARN_COUNT}!function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(Et||(Et={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(ft||(ft={})),function(t){t.Error="error",t.Warning="warning"}(dt||(dt={}));const Tt=c(lt);class St{static getData(t){return l(t.data),t.data}static warns(t){return St.getData(t).severity===dt.Warning}static isPending(t){return St.statusEquals(t,ut.PENDING)}static isOmitted(t){return St.statusEquals(t,ut.OMITTED)}static isUntested(t){return St.statusEquals(t,ut.UNTESTED)}static isFailing(t){return St.statusEquals(t,ut.FAILED)}static isCanceled(t){return St.statusEquals(t,ut.CANCELED)}static isSkipped(t){return St.statusEquals(t,ut.SKIPPED)}static isPassing(t){return St.statusEquals(t,ut.PASSING)}static isWarning(t){return St.statusEquals(t,ut.WARNING)}static hasFailures(t){return St.isFailing(t)||St.isWarning(t)}static isNonActionable(t){return St.isSkipped(t)||St.isOmitted(t)||St.isCanceled(t)}static isTested(t){return St.hasFailures(t)||St.isPassing(t)}static awaitsResolution(t){return St.isSkipped(t)||St.isUntested(t)||St.isPending(t)}static isAsyncTest(t){return E(St.getData(t).asyncTest)}static statusEquals(t,e){return St.getData(t).status===e}static setPending(t){St.setStatus(t,ut.PENDING)}static fail(t){St.setStatus(t,St.warns(t)?ut.WARNING:ut.FAILED)}static pass(t){St.setStatus(t,ut.PASSING)}static warn(t){St.setData(t,(t=>Object.assign(Object.assign({},t),{severity:dt.Warning})))}static setData(t,e){t.data=f(e,St.getData(t))}static skip(t,e){St.setStatus(t,ut.SKIPPED,e)}static cancel(t){St.setStatus(t,ut.CANCELED),St.getData(t).abortController.abort(ut.CANCELED)}static omit(t){St.setStatus(t,ut.OMITTED)}static reset(t){St.setStatus(t,ct.RESET)}static setStatus(t,e,n){St.setData(t,(t=>Object.assign(Object.assign({},t),{status:Tt.staticTransition(t.status,e,n)})))}}function gt(t){return U.isIsolateType(t,V)}function Rt(t){l(gt(t))}function It(t){return Rt(t),t}function _t(t,e){return!!e&&!mt(t,e)}function mt(t,e){return!(!e||t.fieldName!==e)}class pt{static hasNoTests(t=pt.defaultRoot()){return!t||!F.has(t,gt)}static someIncompleteTests(t,e=pt.defaultRoot()){return!!e&&F.some(e,(e=>(Rt(e),St.isPending(e)&&t(e))),gt)}static someTests(t,e=pt.defaultRoot()){return!!e&&F.some(e,(e=>(Rt(e),t(e))),gt)}static everyTest(t,e=pt.defaultRoot()){return!!e&&F.every(e,(e=>(Rt(e),t(e))),gt)}static walkTests(t,e=pt.defaultRoot()){e&&F.walk(e,((e,n)=>{t(It(e),n)}),gt)}static hasRemainingTests(t){return pt.someIncompleteTests((e=>!t||mt(St.getData(e),t)))}static pluckTests(t,e=pt.defaultRoot()){e&&F.pluck(e,(e=>(Rt(e),t(e))),gt)}static resetField(t){pt.walkTests((e=>{mt(St.getData(e),t)&&St.reset(e)}),pt.defaultRoot())}static removeTestByFieldName(t,e=pt.defaultRoot()){pt.pluckTests((e=>mt(St.getData(e),t)),e)}}function Dt(){const t=P.useAvailableRoot(),e=X.getOptionalFields(t);if(d(e))return;const n=new Set;function s(e){const{fieldName:s}=St.getData(e);n.has(s)&&(St.omit(e),X.setOptionalField(t,s,(t=>Object.assign(Object.assign({},t),{applied:!0}))))}pt.walkTests((e=>{if(St.isPending(e))return;const{fieldName:r}=St.getData(e);n.has(r)?s(e):function(e){const{fieldName:r}=St.getData(e),i=X.getOptionalField(t,r);!0===f(i.rule)&&n.add(r);s(e)}(e)})),G.useEmit($.DONE_TEST_OMISSION_PASS)}function Ot(){const t=G.useBus();return e($.TEST_COMPLETED,(e=>{if(St.isCanceled(e))return;const{fieldName:n}=St.getData(e);!function(t){const[e]=st();t&&!pt.hasRemainingTests(t)&&r(e[t])&&N(e[t])}(n),pt.hasRemainingTests()||t.emit($.ALL_RUNNING_TESTS_FINISHED)})),e($.TEST_RUN_STARTED,(()=>{})),e($.DONE_TEST_OMISSION_PASS,(()=>{})),e($.ALL_RUNNING_TESTS_FINISHED,(()=>{pt.someTests(St.isAsyncTest)&&Dt(),function(){const[t]=nt();N(t)}()})),e($.RESET_FIELD,(t=>{pt.resetField(t)})),e($.SUITE_RUN_STARTED,(()=>{at()})),e($.SUITE_CALLBACK_RUN_FINISHED,(()=>{Dt()})),e($.REMOVE_FIELD,(t=>{pt.removeTestByFieldName(t)})),e($.RESET_SUITE,(()=>{at(),P.reset()})),{subscribe:function(e){return t.on("*",(()=>{e()})).off}};function e(e,n){t.on(e,((...t)=>{it(),n(...t)}))}}var At;pt.defaultRoot=P.useAvailableRoot,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",t.FIELD_NAME_REQUIRED="Field name must be passed",t.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION="Suite must be initialized with a function",t.PROMISIFY_REQUIRE_FUNCTION="Vest.Promisify must be called with a function",t.PARSER_EXPECT_RESULT_OBJECT="Vest parser: expected argument at position 0 to be Vest's result object.",t.WARN_MUST_BE_CALLED_FROM_TEST="Warn must be called from within the body of a test function",t.EACH_CALLBACK_MUST_BE_A_FUNCTION="Each must be called with a function",t.INVALID_PARAM_PASSED_TO_FUNCTION='Incompatible params passed to {fn_name} function. "{param}" must be of type {expected}',t.TESTS_CALLED_IN_DIFFERENT_ORDER='Vest Critical Error: Tests called in different order than previous run.\n expected: {fieldName}\n received: {prevName}\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.UNEXPECTED_TEST_REGISTRATION_ERROR="Unexpected error encountered during test registration.\n Please report this issue to Vest's Github repository.\n Test Object: {testObject}.\n Error: {error}.",t.UNEXPECTED_TEST_RUN_ERROR="Unexpected error encountered during test run. Please report this issue to Vest's Github repository.\n Test Object: {testObject}.",t.INCLUDE_SELF="Trying to call include.when on the same field."}(At||(At={}));function Ct(t,e){const{groupName:n}=St.getData(t),{groupName:s,fieldName:r}=St.getData(e);return mt(St.getData(t),r)&&n===s&&t.key===e.key}const vt=T((function(t,e){return St.getData(t).groupName===e}));function ht(t){return function(t,e){return pt.someTests((n=>Lt(n,t,e)))}(Et.ERRORS,t)}function Lt(t,e,n){return!!St.hasFailures(t)&&(!_t(St.getData(t),n)&&!function(t,e){return S(t===Et.WARNINGS,St.warns(e))}(e,t))}function Pt(t){const[,e]=z();e(t)}function Ut(t){const[e]=z();return e===t}function Ft(t){return Ut(H.ONE)?ht():!!Ut(H.EAGER)&&ht(t.fieldName)}function Gt(t,e,n){return n?function(t,e,n){var s;return(null===(s=null==t?void 0:t[n])||void 0===s?void 0:s[e])||[]}(t,e,n):function(t,e){const n={},s=Nt(e);for(const r in t)g(t[r][s])&&(n[r]=t[r][e]||[]);return n}(t,e)}function bt(t){const e={getError:function(e){return kt(Et.ERRORS,t,e)},getErrors:function(e){return yt(t,Et.ERRORS,e)},getErrorsByGroup:function(e,n){return Wt(t,Et.ERRORS,e,n)},getWarning:function(e){return kt(Et.WARNINGS,t,e)},getWarnings:function(e){return yt(t,Et.WARNINGS,e)},getWarningsByGroup:function(e,n){return Wt(t,Et.WARNINGS,e,n)},hasErrors:function(e){return Bt(t,ft.ERROR_COUNT,e)},hasErrorsByGroup:function(e,n){return wt(t,ft.ERROR_COUNT,e,n)},hasWarnings:function(e){return Bt(t,ft.WARN_COUNT,e)},hasWarningsByGroup:function(e,n){return wt(t,ft.WARN_COUNT,e,n)},isPending:function(e){var n;return R(e?null===(n=t.tests[e])||void 0===n?void 0:n.pendingCount:t.pendingCount,0)},isValid:function(e){var n;return e?Boolean(null===(n=t.tests[e])||void 0===n?void 0:n.valid):t.valid},isValidByGroup:function(e,n){const s=t.groups[e];if(!s)return!1;if(n)return Mt(s,n);for(const t in s)if(!Mt(s,t))return!1;return!0}};return e}function yt(t,e,n){return Gt(t.tests,e,n)}function Wt(t,e,n,s){return Gt(t.groups[n],e,s)}function Mt(t,e){var n;return!!(null===(n=t[e])||void 0===n?void 0:n.valid)}function wt(t,e,n,s){var r,i;const a=t.groups[n];if(!a)return!1;if(s)return g(null===(r=a[s])||void 0===r?void 0:r[e]);for(const t in a)if(g(null===(i=a[t])||void 0===i?void 0:i[e]))return!0;return!1}function Bt(t,e,n){var s;const r=n?null===(s=t.tests[n])||void 0===s?void 0:s[e]:t[e]||0;return g(r)}function kt(t,e,n){var s;const r=e[t];return n?null===(s=r.find((t=>mt(t,n))))||void 0===s?void 0:s.message:r[0]}var jt,Kt,Vt;class Xt{constructor(){this.errorCount=0,this.warnCount=0,this.testCount=0,this.pendingCount=0}}class xt extends Xt{constructor(){super(...arguments),this[jt]=[],this[Kt]=[],this.groups={},this.tests={},this.valid=!1}}jt=Et.ERRORS,Kt=Et.WARNINGS;class Ht{constructor(t,e,n){this.fieldName=t,this.message=e,this.groupName=n}static fromTestObject(t){const{fieldName:e,message:n,groupName:s}=St.getData(t);return new Ht(e,n,s)}}function qt(t){return!!Z(t)||!pt.hasNoTests()&&(!ht(t)&&(!function(t){return pt.someIncompleteTests((e=>!_t(St.getData(e),t)&&!Z(t)))}(t)&&function(t){return pt.everyTest((e=>zt(e,t)))}(t)))}function Yt(t,e){return!!Z(e)||!function(t,e,n){return pt.someTests((s=>!vt(s,e)&&Lt(s,t,n)))}(Et.ERRORS,t,e)&&(!function(t,e){return pt.someIncompleteTests((n=>!vt(n,t)&&(!_t(St.getData(n),e)&&!Z(e))))}(t,e)&&function(t,e){return pt.everyTest((n=>!!vt(n,t)||zt(n,e)))}(t,e))}function zt(t,e){return!!_t(St.getData(t),e)||(St.isOmitted(t)||St.isTested(t)||function(t){const e=P.useAvailableRoot(),{fieldName:n}=St.getData(t);return X.getOptionalField(e,n).type===x.AUTO&&St.awaitsResolution(t)}(t))}function Jt(){const t=new xt;return pt.walkTests((e=>{t.tests=function(t,e){const n=St.getData(e).fieldName,s=Object.assign({},t);return s[n]=Zt(s[n],e),s[n].valid=!1!==s[n].valid&&qt(n),s}(t.tests,e),t.groups=function(t,e){const{groupName:n,fieldName:s}=St.getData(e);if(!n)return t;const r=Object.assign({},t);return r[n]=r[n]||{},r[n][s]=Zt(r[n][s],e),r[n][s].valid=!1!==r[n][s].valid&&Yt(n,s),r}(t.groups,e),t.errors=Qt(Et.ERRORS,t.errors,e),t.warnings=Qt(Et.WARNINGS,t.warnings,e)})),t.valid=qt(),function(t){for(const e in t.tests)t.errorCount+=t.tests[e].errorCount,t.warnCount+=t.tests[e].warnCount,t.testCount+=t.tests[e].testCount,t.pendingCount+=t.tests[e].pendingCount;return t}(t)}function Qt(t,e,n){if(St.isOmitted(n))return e;return(t===Et.WARNINGS?St.isWarning(n):St.isFailing(n))?e.concat(Ht.fromTestObject(n)):e}function Zt(t,e){const{message:n}=St.getData(e),s=I(t?Object.assign({},t):null,$t);return St.isNonActionable(e)||(St.isPending(e)&&s.pendingCount++,St.isFailing(e)?r(Et.ERRORS):St.isWarning(e)&&r(Et.WARNINGS),s.testCount++),s;function r(t){const e=Nt(t);s[e]++,n&&(s[t]=(s[t]||[]).concat(n))}}function $t(){return e(new Xt,{errors:[],valid:!0,warnings:[]})}function te(){return t=()=>{const t=Jt(),n=et().suiteName;return Object.freeze(e(t,bt(t),{suiteName:n}))},(0,et().suiteResultCache)([rt()],t);var t}function ee(t,e){L.create(k,(()=>{q.run({omitted:ne()||f(t,f(te))},e)}))}function ne(){return function(){var t;return null!==(t=q.useX().omitted)&&void 0!==t&&t}()}function se(t,e){L.create(j,(()=>{q.run({skipped:re()||f(t,f(te))},e)}))}function re(){return function(){var t;return null!==(t=q.useX().skipped)&&void 0!==t&&t}()}function ie(t,e){return L.create(w,_,{focusMode:t,match:a(e).filter(i),matchAll:!0===e})}!function(t){t[t.ONLY=0]="ONLY",t[t.SKIP=1]="SKIP"}(Vt||(Vt={}));class ae{static isSkipFocused(t,e){return(null==t?void 0:t.data.focusMode)===Vt.SKIP&&(le(t,e)||!0===t.data.matchAll)}static isOnlyFocused(t,e){return(null==t?void 0:t.data.focusMode)===Vt.ONLY&&le(t,e)}static isIsolateFocused(t){return U.isIsolateType(t,w)}}function oe(t){return ie(Vt.ONLY,ce(t))}function ue(t){return ie(Vt.SKIP,ce(t))}function ce(t){return!1===t?[]:t}function le(t,e){var n,s;return m(null==t?void 0:t.data.match)&&(!e||(null===(s=null===(n=null==t?void 0:t.data.match)||void 0===n?void 0:n.includes(e))||void 0===s||s))}function Ee(t,e){return p(F.findClosest(t,(t=>!!ae.isIsolateFocused(t)&&ae.isOnlyFocused(t,e))))}function fe(t){const{fieldName:e}=St.getData(t);if(re())return!0;const n=Y(),s=function(t){return F.findClosest(t,(e=>{var n;if(!ae.isIsolateFocused(e))return!1;const{fieldName:s}=St.getData(t);return(null===(n=e.data.match)||void 0===n?void 0:n.includes(s))||e.data.matchAll}))}(t);if(ae.isSkipFocused(s))return!0;return!ae.isOnlyFocused(s)&&(!!Ee(t)&&!f(n[e],t))}function de(t,e=t){const n=St.getData(t);return Ft(n)?(s=t,St.skip(s),s):(r=n.fieldName,ne()||Z(r)?function(t){return St.omit(t),t}(t):fe(t)?function(t){return St.skip(t,re()),t}(e):t);var s,r}class Ne extends class{static match(t,e){return!1}static reconcile(t,e){return null!=t?t:e}}{static match(t,e){return gt(t)&>(e)}static reconcile(t,e){const n=function(t,e){const n=function(t,e){if(b.usesKey(t))return It(y.handleIsolateNodeWithKey(t));if(y.dropNextNodesOnReorder(Te,t,e))return function(t,e){if(b.canReorder(t))return;D(O(At.TESTS_CALLED_IN_DIFFERENT_ORDER,{fieldName:St.getData(t).fieldName,prevName:gt(e)?St.getData(e).fieldName:void 0}))}(t,e),t;if(!gt(e))return t;if(St.isOmitted(e))return t;return e}(e,t);return de(e,n)}(e,t);return function(t,e,n){t===e&>(e)&&(r=e)!==(s=n)&&Ct(s,r)&&St.isPending(s)&&St.cancel(s);var s,r}(n,t,e),n}}function Te(t,e){return gt(e)&&!Ct(e,t)}function Se(t,e){var n,s;return null!==(s=null===(n=[Ne].find((n=>n.match(t,e))))||void 0===n?void 0:n.reconcile(t,e))&&void 0!==s?s:null}function ge(...t){const[e,n]=t.reverse();return L.create(B,(()=>q.run(Object.assign({},n&&{groupName:n}),e)))}function Re(t){l(i(t));return Y()[t]=!0,{when:function(e){l(e!==t,At.INCLUDE_SELF);Y()[t]=function(t){return i(e)?Ee(t,e):f(e,f(te))}}}}function Ie(t,e,n){const s=Object.assign(Object.assign({},{severity:dt.Error,status:ut.UNTESTED,abortController:new AbortController}),{fieldName:e.fieldName,testFn:e.testFn});e.groupName&&(s.groupName=e.groupName),e.message&&(s.message=e.message);return L.create(V,t,s,null!=n?n:null)}function _e(t){if(de(t),St.isUntested(t))return function(t){const e=G.useBus(),n=function(t){return q.run({currentTest:t},(()=>{let e;const{message:n,testFn:s,abortController:r}=St.getData(t);try{e=s({signal:r.signal})}catch(s){(function(t,e){return A(t)&&i(e)})(n,s)&&(St.getData(t).message=s),e=!1}return!1===e&&St.fail(t),e}))}(t);try{E(n)?(St.getData(t).asyncTest=n,function(t){const{asyncTest:e,message:n}=St.getData(t);if(!E(e))return;St.setPending(t);const s=G.useBus(),r=P.persist((()=>{me(s,t)})),a=P.persist((e=>{St.isCanceled(t)||(St.getData(t).message=i(e)?e:n,St.fail(t),r())}));e.then(r,a)}(t)):me(e,t)}catch(e){throw new Error(O(At.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t),error:e}))}}(t);St.isNonActionable(t)||D(O(At.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t)}))}function me(t,e){St.pass(e),t.emit($.TEST_COMPLETED,e)}function pe(t,...e){const[n,s,r]=v(e[1])?e:[void 0,...e];!function(t,e){const n="test";l(i(t),O(At.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"fieldName",expected:"string"})),l(v(e),O(At.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"callback",expected:"function"}))}(t,s);const a={fieldName:t,groupName:q.useX().groupName,message:n,testFn:s};return G.useEmit($.TEST_RUN_STARTED),Ie(_e,a,r)}const De=e(pe,{memo:function(t){return function(e,...n){const[s,r,i]=n.reverse();return function(t,e){const n=q.useX().testMemoCache,s=n.get(t);if(C(s))return n(t,e);const[,r]=s;if(St.isCanceled(r))return n.invalidate(t),n(t,e);return P.addNodeToHistory(r),r}([rt(),e,P.useCurrentCursor()].concat(s),(function(){return t(e,i,r)}))}}(pe)});function Oe(){return{group:ge,include:Re,omitWhen:ee,only:oe,optional:Q,skip:ue,skipWhen:se,test:De}}function Ae(){return Object.freeze(e({done:P.persist(Ce)},te()))}function Ce(...t){const[n,s]=t.reverse(),r=Ae();if(function(t,e,n){var s,r;return!!(!v(t)||e&&h(null!==(r=null===(s=n.tests[e])||void 0===s?void 0:s.testCount)&&void 0!==r?r:0,0))}(n,s,r))return r;const i=()=>n(te());return pt.hasRemainingTests(s)?(function(t,n){const[,s]=st(),[,r]=nt();n?s((s=>e(s,{[n]:(s[n]||[]).concat(t)}))):r((e=>e.concat(t)))}(i,s),r):(i(),r)}function ve(...t){const[s,r]=t.reverse();!function(t){l(v(t),At.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION)}(s);const i=function({suiteName:t,VestReconciler:e}){const s={doneCallbacks:n.createTinyState((()=>[])),fieldCallbacks:n.createTinyState((()=>({}))),suiteId:u(),suiteName:t,suiteResultCache:tt};return P.createRef(e,s)}({suiteName:r,VestReconciler:Se});function a(...t){return q.run({suiteParams:t},(()=>{return G.useEmit($.SUITE_RUN_STARTED),e=function(t,...e){const n=G.useEmit();return()=>(t(...e),n($.SUITE_CALLBACK_RUN_FINISHED),Ae())}(s,...t),L.create(K,e,{optional:{}});var e})).output}return P.Run(i,(()=>{const t=Ot();return e(P.persist(a),Object.assign(Object.assign({dump:P.persist((()=>P.useAvailableRoot())),get:P.persist(te),remove:G.usePrepareEmitter($.REMOVE_FIELD),reset:G.usePrepareEmitter($.RESET_SUITE),resetField:G.usePrepareEmitter($.RESET_FIELD),resume:P.persist(ot),subscribe:t.subscribe},(n=P.persist(te),{getError:(...t)=>n().getError(...t),getErrors:(...t)=>n().getErrors(...t),getErrorsByGroup:(...t)=>n().getErrorsByGroup(...t),getWarning:(...t)=>n().getWarning(...t),getWarnings:(...t)=>n().getWarnings(...t),getWarningsByGroup:(...t)=>n().getWarningsByGroup(...t),hasErrors:(...t)=>n().hasErrors(...t),hasErrorsByGroup:(...t)=>n().hasErrorsByGroup(...t),hasWarnings:(...t)=>n().hasWarnings(...t),hasWarningsByGroup:(...t)=>n().hasWarningsByGroup(...t),isPending:(...t)=>n().isPending(...t),isValid:(...t)=>n().isValid(...t),isValidByGroup:(...t)=>n().isValidByGroup(...t)})),Oe()));var n}))}function he(t,e){l(v(e),At.EACH_CALLBACK_MUST_BE_A_FUNCTION),function(t){L.create(M,t,{allowReorder:!0})}((()=>{t.forEach(((t,n)=>{e(t,n)}))}))}function Le(t){return e(((...n)=>{const s=ve(t),r=s(...n);return Object.freeze(e({dump:s.dump},r))}),Object.assign({},Oe()))}const Pe=At.WARN_MUST_BE_CALLED_FROM_TEST;function Ue(){const t=(e=At.HOOK_CALLED_OUTSIDE,q.useX(e).currentTest);var e;l(t,Pe),St.warn(t)}export{H as Modes,ve as create,he as each,ge as group,Re as include,Pt as mode,ee as omitWhen,oe as only,Q as optional,ue as skip,se as skipWhen,Le as staticSuite,bt as suiteSelectors,De as test,Ue as warn};
|
|
1
|
+
import{enforce as t}from"n4s";export{enforce}from"n4s";import{assign as e,tinyState as n,cache as s,isArray as r,isStringValue as i,asArray as a,hasOwnProperty as o,seq as u,StateMachine as c,invariant as l,isPromise as E,optionalFunctionValue as f,Predicates as d,isNullish as N,isEmpty as T,callEach as I,bindNot as S,either as g,isPositive as R,greaterThan as _,defaultTo as D,noop as O,isNotEmpty as m,isNotNullish as p,deferThrow as A,text as C,isUndefined as v,isNull as h,isFunction as P,numberEquals as L}from"vest-utils";import{Isolate as U,VestRuntime as F,IsolateSelectors as G,IsolateMutator as b,Walker as y,Bus as W,RuntimeEvents as M,IsolateInspector as w,Reconciler as B}from"vestjs-runtime";import{createCascade as k}from"context";const j="Each",K="Focused",V="Group",X="OmitWhen",x="SkipWhen",H="Suite",q="Test";class Y{static setOptionalField(t,n,s){const r=t.data.optional,i=r[n];e(r,{[n]:e({},i,s(i))})}static getOptionalField(t,e){var n;return null!==(n=t.data.optional[e])&&void 0!==n?n:{}}static getOptionalFields(t){return t.data.optional}}var z,J;!function(t){t[t.CUSTOM_LOGIC=0]="CUSTOM_LOGIC",t[t.AUTO=1]="AUTO"}(z||(z={})),function(t){t.EAGER="EAGER",t.ALL="ALL",t.ONE="ONE"}(J||(J={}));const Q=k(((t,s)=>s?null:e({inclusion:{},mode:n.createTinyState(J.EAGER),suiteParams:[],testMemoCache:tt},t)));function Z(){return Q.useX().inclusion}function $(){return Q.useX().mode()}const tt=s(10);function et(e){var n;const s=F.useAvailableRoot(),u=Q.useX().suiteParams,c=null!==(n=null==u?void 0:u[0])&&void 0!==n?n:{};if(r(e)||i(e))a(e).forEach((e=>{Y.setOptionalField(s,e,(()=>({type:z.AUTO,applied:!!o(c,e)&&t.isBlank().test(null==c?void 0:c[e]),rule:null})))}));else for(const n in e){const r=e[n];Y.setOptionalField(s,n,(()=>({type:z.CUSTOM_LOGIC,rule:r,applied:t.isBlank().test(r)||!0===r})))}}function nt(t){var e,n;if(!t)return!1;const s=F.useAvailableRoot();return null!==(n=null===(e=Y.getOptionalField(s,t))||void 0===e?void 0:e.applied)&&void 0!==n&&n}var st;!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_RUN_STARTED="suite_run_started",t.SUITE_CALLBACK_RUN_FINISHED="SUITE_CALLBACK_RUN_FINISHED",t.DONE_TEST_OMISSION_PASS="DONE_TEST_OMISSION_PASS"}(st||(st={}));const rt=s();function it(){return F.useXAppData()}function at(){return it().doneCallbacks()}function ot(){return it().fieldCallbacks()}function ut(){return it().suiteId}function ct(){it().suiteResultCache.invalidate([ut()])}function lt(){const[,,t]=at(),[,,e]=ot();t(),e()}function Et(t){F.useLoadRootNode(t),ct()}const ft="PENDING",dt={[ft]:ft,INITIAL:"INITIAL",DONE:"DONE"};function Nt(t,e){return Tt.staticTransition(null!=t?t:dt.INITIAL,e)}const Tt=c({initial:dt.INITIAL,states:{[dt.DONE]:{},[dt.INITIAL]:{[dt.PENDING]:dt.PENDING,[dt.DONE]:dt.DONE},[dt.PENDING]:{[dt.DONE]:dt.DONE}}});var It;!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",t.FIELD_NAME_REQUIRED="Field name must be passed",t.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION="Suite must be initialized with a function",t.PROMISIFY_REQUIRE_FUNCTION="Vest.Promisify must be called with a function",t.PARSER_EXPECT_RESULT_OBJECT="Vest parser: expected argument at position 0 to be Vest's result object.",t.WARN_MUST_BE_CALLED_FROM_TEST="Warn must be called from within the body of a test function",t.EACH_CALLBACK_MUST_BE_A_FUNCTION="Each must be called with a function",t.INVALID_PARAM_PASSED_TO_FUNCTION='Incompatible params passed to {fn_name} function. "{param}" must be of type {expected}',t.TESTS_CALLED_IN_DIFFERENT_ORDER='Vest Critical Error: Tests called in different order than previous run.\n expected: {fieldName}\n received: {prevName}\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.UNEXPECTED_TEST_REGISTRATION_ERROR="Unexpected error encountered during test registration.\n Please report this issue to Vest's Github repository.\n Test Object: {testObject}.\n Error: {error}.",t.UNEXPECTED_TEST_RUN_ERROR="Unexpected error encountered during test run. Please report this issue to Vest's Github repository.\n Test Object: {testObject}.",t.INCLUDE_SELF="Trying to call include.when on the same field."}(It||(It={}));const St={[ft]:ft,CANCELED:"CANCELED",FAILED:"FAILED",OMITTED:"OMITTED",PASSING:"PASSING",SKIPPED:"SKIPPED",UNTESTED:"UNTESTED",WARNING:"WARNING"},gt="RESET",Rt=c({initial:St.UNTESTED,states:{"*":{[St.OMITTED]:St.OMITTED,[gt]:St.UNTESTED},[St.UNTESTED]:{[St.CANCELED]:St.CANCELED,[St.FAILED]:St.FAILED,[St.PASSING]:St.PASSING,[St.PENDING]:St.PENDING,[St.SKIPPED]:St.SKIPPED,[St.WARNING]:St.WARNING},[St.PENDING]:{[St.CANCELED]:St.CANCELED,[St.FAILED]:St.FAILED,[St.PASSING]:St.PASSING,[St.SKIPPED]:[St.SKIPPED,t=>!0===t],[St.WARNING]:St.WARNING},[St.SKIPPED]:{},[St.FAILED]:{},[St.WARNING]:{},[St.PASSING]:{},[St.CANCELED]:{},[St.OMITTED]:{}}});var _t,Dt,Ot;function mt(t){return t===_t.ERRORS?Dt.ERROR_COUNT:Dt.WARN_COUNT}!function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(_t||(_t={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(Dt||(Dt={})),function(t){t.Error="error",t.Warning="warning"}(Ot||(Ot={}));class pt{static getData(t){return l(t.data),t.data}static is(t){return G.isIsolateType(t,q)}static isX(t){l(pt.is(t),It.EXPECTED_VEST_TEST)}static cast(t){return pt.isX(t),t}static warns(t){return pt.getData(t).severity===Ot.Warning}static isPending(t){return pt.statusEquals(t,St.PENDING)}static isOmitted(t){return pt.statusEquals(t,St.OMITTED)}static isUntested(t){return pt.statusEquals(t,St.UNTESTED)}static isFailing(t){return pt.statusEquals(t,St.FAILED)}static isCanceled(t){return pt.statusEquals(t,St.CANCELED)}static isSkipped(t){return pt.statusEquals(t,St.SKIPPED)}static isPassing(t){return pt.statusEquals(t,St.PASSING)}static isWarning(t){return pt.statusEquals(t,St.WARNING)}static hasFailures(t){return pt.isFailing(t)||pt.isWarning(t)}static isNonActionable(t){return pt.isSkipped(t)||pt.isOmitted(t)||pt.isCanceled(t)}static isTested(t){return pt.hasFailures(t)||pt.isPassing(t)}static awaitsResolution(t){return pt.isSkipped(t)||pt.isUntested(t)||pt.isPending(t)}static isAsyncTest(t){return E(pt.getData(t).asyncTest)}static statusEquals(t,e){return t.status===e}static setPending(t){pt.setStatus(t,St.PENDING)}static fail(t){pt.setStatus(t,pt.warns(t)?St.WARNING:St.FAILED)}static pass(t){pt.setStatus(t,St.PASSING)}static warn(t){pt.setData(t,(t=>Object.assign(Object.assign({},t),{severity:Ot.Warning})))}static setData(t,e){t.data=f(e,pt.getData(t))}static skip(t,e){pt.setStatus(t,St.SKIPPED,e)}static cancel(t){pt.setStatus(t,St.CANCELED),b.abort(t,St.CANCELED)}static omit(t){pt.setStatus(t,St.OMITTED)}static reset(t){pt.setStatus(t,gt)}static setStatus(t,e,n){t.status=Rt.staticTransition(t.status,e,n)}}function At(t,e){return!!e&&!Ct(t,e)}function Ct(t,e){return!(!e||t.fieldName!==e)}class vt{static hasPending(t){const e=vt.defaultRoot();return!!e&&y.some(e,d.all(ht,null==t||t))}static hasRemainingWithTestNameMatching(t){return vt.hasPending(d.any(N(t),d.all(pt.is,(e=>function(t,e){return!e||Ct(t,e)}(pt.getData(e),t)))))}}function ht(t){return t.status===ft}vt.defaultRoot=F.useAvailableRoot;class Pt{static hasNoTests(t=Pt.defaultRoot()){return!t||!y.has(t,pt.is)}static someTests(t,e=Pt.defaultRoot()){return!!e&&y.some(e,(e=>(pt.isX(e),t(e))),pt.is)}static everyTest(t,e=Pt.defaultRoot()){return!!e&&y.every(e,(e=>(pt.isX(e),t(e))),pt.is)}static walkTests(t,e=Pt.defaultRoot()){e&&y.walk(e,((e,n)=>{t(pt.cast(e),n)}),pt.is)}static pluckTests(t,e=Pt.defaultRoot()){e&&y.pluck(e,(e=>(pt.isX(e),t(e))),pt.is)}static resetField(t){Pt.walkTests((e=>{Ct(pt.getData(e),t)&&pt.reset(e)}),Pt.defaultRoot())}static removeTestByFieldName(t,e=Pt.defaultRoot()){Pt.pluckTests((e=>Ct(pt.getData(e),t)),e)}}function Lt(){const t=F.useAvailableRoot(),e=Y.getOptionalFields(t);if(T(e))return;const n=new Set;function s(e){const{fieldName:s}=pt.getData(e);n.has(s)&&(pt.omit(e),Y.setOptionalField(t,s,(t=>Object.assign(Object.assign({},t),{applied:!0}))))}Pt.walkTests((e=>{if(pt.isPending(e))return;const{fieldName:r}=pt.getData(e);n.has(r)?s(e):function(e){const{fieldName:r}=pt.getData(e),i=Y.getOptionalField(t,r);!0===f(i.rule)&&n.add(r);s(e)}(e)})),W.useEmit(st.DONE_TEST_OMISSION_PASS)}function Ut(){const t=W.useBus();return e(st.TEST_COMPLETED,(t=>{if(pt.isCanceled(t))return;const{fieldName:e}=pt.getData(t);!function(t){const[e]=ot();t&&!vt.hasRemainingWithTestNameMatching(t)&&r(e[t])&&I(e[t])}(e)})),e(st.TEST_RUN_STARTED,(()=>{})),e(M.ISOLATE_PENDING,(t=>{pt.is(t)&&pt.setPending(t),function(t){t.status=Nt(t.status,dt.PENDING)}(t)})),e(M.ISOLATE_DONE,(e=>{pt.is(e)&&t.emit(st.TEST_COMPLETED,e),function(t){t.status=Nt(t.status,dt.DONE)}(e),vt.hasPending()||t.emit(st.ALL_RUNNING_TESTS_FINISHED)})),e(st.DONE_TEST_OMISSION_PASS,(()=>{})),e(st.ALL_RUNNING_TESTS_FINISHED,(()=>{Pt.someTests(pt.isAsyncTest)&&Lt(),function(){const[t]=at();I(t)}()})),e(st.RESET_FIELD,(t=>{Pt.resetField(t)})),e(st.SUITE_RUN_STARTED,(()=>{lt()})),e(st.SUITE_CALLBACK_RUN_FINISHED,(()=>{Lt()})),e(st.REMOVE_FIELD,(t=>{Pt.removeTestByFieldName(t)})),e(st.RESET_SUITE,(()=>{lt(),F.reset()})),{subscribe:function(e){return t.on("*",(()=>{e()})).off}};function e(e,n){t.on(e,((...t)=>{ct(),n(...t)}))}}Pt.defaultRoot=F.useAvailableRoot;function Ft(t,e){const{groupName:n}=pt.getData(t),{groupName:s,fieldName:r}=pt.getData(e);return Ct(pt.getData(t),r)&&n===s&&t.key===e.key}const Gt=S((function(t,e){return pt.getData(t).groupName===e}));function bt(t){return function(t,e){return Pt.someTests((n=>yt(n,t,e)))}(_t.ERRORS,t)}function yt(t,e,n){return!!pt.hasFailures(t)&&(!At(pt.getData(t),n)&&!function(t,e){return g(t===_t.WARNINGS,pt.warns(e))}(e,t))}function Wt(t){const[,e]=$();e(t)}function Mt(t){const[e]=$();return e===t}function wt(t){return Mt(J.ONE)?bt():!!Mt(J.EAGER)&&bt(t.fieldName)}function Bt(t,e,n){return n?function(t,e,n){var s;return(null===(s=null==t?void 0:t[n])||void 0===s?void 0:s[e])||[]}(t,e,n):function(t,e){const n={},s=mt(e);for(const r in t)R(t[r][s])&&(n[r]=t[r][e]||[]);return n}(t,e)}function kt(t){const e={getError:function(e){return Ht(_t.ERRORS,t,e)},getErrors:function(e){return jt(t,_t.ERRORS,e)},getErrorsByGroup:function(e,n){return Kt(t,_t.ERRORS,e,n)},getWarning:function(e){return Ht(_t.WARNINGS,t,e)},getWarnings:function(e){return jt(t,_t.WARNINGS,e)},getWarningsByGroup:function(e,n){return Kt(t,_t.WARNINGS,e,n)},hasErrors:function(e){return xt(t,Dt.ERROR_COUNT,e)},hasErrorsByGroup:function(e,n){return Xt(t,Dt.ERROR_COUNT,e,n)},hasWarnings:function(e){return xt(t,Dt.WARN_COUNT,e)},hasWarningsByGroup:function(e,n){return Xt(t,Dt.WARN_COUNT,e,n)},isPending:function(e){var n;return _(e?null===(n=t.tests[e])||void 0===n?void 0:n.pendingCount:t.pendingCount,0)},isValid:function(e){var n;return e?Boolean(null===(n=t.tests[e])||void 0===n?void 0:n.valid):t.valid},isValidByGroup:function(e,n){const s=t.groups[e];if(!s)return!1;if(n)return Vt(s,n);for(const t in s)if(!Vt(s,t))return!1;return!0}};return e}function jt(t,e,n){return Bt(t.tests,e,n)}function Kt(t,e,n,s){return Bt(t.groups[n],e,s)}function Vt(t,e){var n;return!!(null===(n=t[e])||void 0===n?void 0:n.valid)}function Xt(t,e,n,s){var r,i;const a=t.groups[n];if(!a)return!1;if(s)return R(null===(r=a[s])||void 0===r?void 0:r[e]);for(const t in a)if(R(null===(i=a[t])||void 0===i?void 0:i[e]))return!0;return!1}function xt(t,e,n){var s;const r=n?null===(s=t.tests[n])||void 0===s?void 0:s[e]:t[e]||0;return R(r)}function Ht(t,e,n){var s;const r=e[t];return n?null===(s=r.find((t=>Ct(t,n))))||void 0===s?void 0:s.message:r[0]}var qt,Yt,zt;class Jt{constructor(){this.errorCount=0,this.warnCount=0,this.testCount=0,this.pendingCount=0}}class Qt extends Jt{constructor(){super(...arguments),this[qt]=[],this[Yt]=[],this.groups={},this.tests={},this.valid=!1}}qt=_t.ERRORS,Yt=_t.WARNINGS;class Zt{constructor(t,e,n){this.fieldName=t,this.message=e,this.groupName=n}static fromTestObject(t){const{fieldName:e,message:n,groupName:s}=pt.getData(t);return new Zt(e,n,s)}}function $t(t){return!!nt(t)||!Pt.hasNoTests()&&(!bt(t)&&(!function(t){return vt.hasPending(d.all(pt.is,(e=>!At(pt.getData(e),t)),(()=>!nt(t))))}(t)&&function(t){return Pt.everyTest((e=>ee(e,t)))}(t)))}function te(t,e){return!!nt(e)||!function(t,e,n){return Pt.someTests((s=>!Gt(s,e)&&yt(s,t,n)))}(_t.ERRORS,t,e)&&(!function(t,e){return vt.hasPending(d.all(pt.is,(e=>!Gt(e,t)),(t=>!At(pt.getData(t),e)),(()=>!nt(e))))}(t,e)&&function(t,e){return Pt.everyTest((n=>!!Gt(n,t)||ee(n,e)))}(t,e))}function ee(t,e){return!!At(pt.getData(t),e)||(pt.isOmitted(t)||pt.isTested(t)||function(t){const e=F.useAvailableRoot(),{fieldName:n}=pt.getData(t);return Y.getOptionalField(e,n).type===z.AUTO&&pt.awaitsResolution(t)}(t))}function ne(){const t=new Qt;return Pt.walkTests((e=>{t.tests=function(t,e){const n=pt.getData(e).fieldName,s=Object.assign({},t);return s[n]=re(s[n],e),s[n].valid=!1!==s[n].valid&&$t(n),s}(t.tests,e),t.groups=function(t,e){const{groupName:n,fieldName:s}=pt.getData(e);if(!n)return t;const r=Object.assign({},t);return r[n]=r[n]||{},r[n][s]=re(r[n][s],e),r[n][s].valid=!1!==r[n][s].valid&&te(n,s),r}(t.groups,e),t.errors=se(_t.ERRORS,t.errors,e),t.warnings=se(_t.WARNINGS,t.warnings,e)})),t.valid=$t(),function(t){for(const e in t.tests)t.errorCount+=t.tests[e].errorCount,t.warnCount+=t.tests[e].warnCount,t.testCount+=t.tests[e].testCount,t.pendingCount+=t.tests[e].pendingCount;return t}(t)}function se(t,e,n){if(pt.isOmitted(n))return e;return(t===_t.WARNINGS?pt.isWarning(n):pt.isFailing(n))?e.concat(Zt.fromTestObject(n)):e}function re(t,e){const{message:n}=pt.getData(e),s=D(t?Object.assign({},t):null,ie);return pt.isNonActionable(e)||(pt.isPending(e)&&s.pendingCount++,pt.isFailing(e)?r(_t.ERRORS):pt.isWarning(e)&&r(_t.WARNINGS),s.testCount++),s;function r(t){const e=mt(t);s[e]++,n&&(s[t]=(s[t]||[]).concat(n))}}function ie(){return e(new Jt,{errors:[],valid:!0,warnings:[]})}function ae(){return t=()=>{const t=ne(),n=it().suiteName;return Object.freeze(e(t,kt(t),{suiteName:n}))},(0,it().suiteResultCache)([ut()],t);var t}function oe(t,e){U.create(X,(()=>{Q.run({omitted:ue()||f(t,f(ae))},e)}))}function ue(){return function(){var t;return null!==(t=Q.useX().omitted)&&void 0!==t&&t}()}function ce(t,e){U.create(x,(()=>{Q.run({skipped:le()||f(t,f(ae))},e)}))}function le(){return function(){var t;return null!==(t=Q.useX().skipped)&&void 0!==t&&t}()}function Ee(t,e){return U.create(K,O,{focusMode:t,match:a(e).filter(i),matchAll:!0===e})}!function(t){t[t.ONLY=0]="ONLY",t[t.SKIP=1]="SKIP"}(zt||(zt={}));class fe{static isSkipFocused(t,e){return(null==t?void 0:t.data.focusMode)===zt.SKIP&&(Ie(t,e)||!0===t.data.matchAll)}static isOnlyFocused(t,e){return(null==t?void 0:t.data.focusMode)===zt.ONLY&&Ie(t,e)}static isIsolateFocused(t){return G.isIsolateType(t,K)}}function de(t){return Ee(zt.ONLY,Te(t))}function Ne(t){return Ee(zt.SKIP,Te(t))}function Te(t){return!1===t?[]:t}function Ie(t,e){var n,s;return m(null==t?void 0:t.data.match)&&(!e||(null===(s=null===(n=null==t?void 0:t.data.match)||void 0===n?void 0:n.includes(e))||void 0===s||s))}function Se(t,e){return p(y.findClosest(t,(t=>!!fe.isIsolateFocused(t)&&fe.isOnlyFocused(t,e))))}function ge(t){const{fieldName:e}=pt.getData(t);if(le())return!0;const n=Z(),s=function(t){return y.findClosest(t,(e=>{var n;if(!fe.isIsolateFocused(e))return!1;const{fieldName:s}=pt.getData(t);return(null===(n=e.data.match)||void 0===n?void 0:n.includes(s))||e.data.matchAll}))}(t);if(fe.isSkipFocused(s))return!0;return!fe.isOnlyFocused(s)&&(!!Se(t)&&!f(n[e],t))}function Re(t,e=t){const n=pt.getData(t);return wt(n)?(s=t,pt.skip(s),s):(r=n.fieldName,ue()||nt(r)?function(t){return pt.omit(t),t}(t):ge(t)?function(t){return pt.skip(t,le()),t}(e):t);var s,r}class _e extends class{static match(t,e){return!1}static reconcile(t,e){return null!=t?t:e}}{static match(t,e){return pt.is(t)&&pt.is(e)}static reconcile(t,e){const n=function(t,e){const n=function(t,e){if(w.usesKey(t))return pt.cast(B.handleIsolateNodeWithKey(t));if(B.dropNextNodesOnReorder(De,t,e))return function(t,e){if(w.canReorder(t))return;A(C(It.TESTS_CALLED_IN_DIFFERENT_ORDER,{fieldName:pt.getData(t).fieldName,prevName:pt.is(e)?pt.getData(e).fieldName:void 0}))}(t,e),t;if(!pt.is(e))return t;if(pt.isOmitted(e))return t;return e}(e,t);return Re(e,n)}(e,t);return function(t,e,n){t===e&&pt.is(e)&&(r=e)!==(s=n)&&Ft(s,r)&&pt.isPending(s)&&pt.cancel(s);var s,r}(n,t,e),n}}function De(t,e){return pt.is(e)&&!Ft(e,t)}function Oe(t,e){var n,s;return null!==(s=null===(n=[_e].find((n=>n.match(t,e))))||void 0===n?void 0:n.reconcile(t,e))&&void 0!==s?s:null}function me(...t){const[e,n]=t.reverse();return U.create(V,(()=>Q.run(Object.assign({},n&&{groupName:n}),e)))}function pe(t){l(i(t));return Z()[t]=!0,{when:function(e){l(e!==t,It.INCLUDE_SELF);Z()[t]=function(t){return i(e)?Se(t,e):f(e,f(ae))}}}}function Ae(t,e,n){const s=Object.assign(Object.assign({},{severity:Ot.Error,status:Rt.initial()}),{fieldName:e.fieldName,testFn:e.testFn});e.groupName&&(s.groupName=e.groupName),e.message&&(s.message=e.message);return U.create(q,t,s,null!=n?n:null)}function Ce(t){if(Re(t),pt.isUntested(t))return function(t){const e=function(t){return Q.run({currentTest:t},(()=>{let e;const{message:n,testFn:s}=pt.getData(t);try{e=s({signal:t.abortController.signal})}catch(s){(function(t,e){return v(t)&&i(e)})(n,s)&&(pt.getData(t).message=s),e=!1}return!1===e&&pt.fail(t),e}))}(t);try{if(E(e))return pt.getData(t).asyncTest=e,function(t){const{asyncTest:e,message:n}=pt.getData(t);if(!E(e))return;const s=F.persist((()=>{ve(t)})),r=F.persist((e=>{pt.isCanceled(t)||(pt.getData(t).message=i(e)?e:n,pt.fail(t),s())}));return e.then(s,r)}(t);ve(t)}catch(e){throw new Error(C(It.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t),error:e}))}}(t);pt.isNonActionable(t)||A(C(It.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t)}))}function ve(t){pt.pass(t)}function he(t,...e){const[n,s,r]=P(e[1])?e:[void 0,...e];!function(t,e){const n="test";l(i(t),C(It.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"fieldName",expected:"string"})),l(P(e),C(It.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"callback",expected:"function"}))}(t,s);const a={fieldName:t,groupName:Q.useX().groupName,message:n,testFn:s};return W.useEmit(st.TEST_RUN_STARTED),Ae(Ce,a,r)}const Pe=e(he,{memo:function(t){return function(e,...n){const[s,r,i]=n.reverse();return function(t,e){const n=Q.useX().testMemoCache,s=n.get(t);if(h(s))return n(t,e);const[,r]=s;if(pt.isCanceled(r))return n.invalidate(t),n(t,e);return F.addNodeToHistory(r),r}([ut(),e,F.useCurrentCursor()].concat(s),(function(){return t(e,i,r)}))}}(he)});function Le(){return{group:me,include:pe,omitWhen:oe,only:de,optional:et,skip:Ne,skipWhen:ce,test:Pe}}function Ue(){return Object.freeze(e({done:F.persist(Fe)},ae()))}function Fe(...t){const[n,s]=t.reverse(),r=Ue();if(function(t,e,n){var s,r;return!!(!P(t)||e&&L(null!==(r=null===(s=n.tests[e])||void 0===s?void 0:s.testCount)&&void 0!==r?r:0,0))}(n,s,r))return r;const i=()=>n(ae());return vt.hasRemainingWithTestNameMatching(s)?(function(t,n){const[,s]=ot(),[,r]=at();n?s((s=>e(s,{[n]:(s[n]||[]).concat(t)}))):r((e=>e.concat(t)))}(i,s),r):(i(),r)}function Ge(...t){const[s,r]=t.reverse();!function(t){l(P(t),It.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION)}(s);const i=function({suiteName:t,VestReconciler:e}){const s={doneCallbacks:n.createTinyState((()=>[])),fieldCallbacks:n.createTinyState((()=>({}))),suiteId:u(),suiteName:t,suiteResultCache:rt};return F.createRef(e,s)}({suiteName:r,VestReconciler:Oe});function a(...t){return Q.run({suiteParams:t},(()=>{return W.useEmit(st.SUITE_RUN_STARTED),e=function(t,...e){const n=W.useEmit();return()=>(t(...e),n(st.SUITE_CALLBACK_RUN_FINISHED),Ue())}(s,...t),U.create(H,e,{optional:{}});var e})).output}return F.Run(i,(()=>{const t=Ut();return e(F.persist(a),Object.assign(Object.assign({dump:F.persist((()=>F.useAvailableRoot())),get:F.persist(ae),remove:W.usePrepareEmitter(st.REMOVE_FIELD),reset:W.usePrepareEmitter(st.RESET_SUITE),resetField:W.usePrepareEmitter(st.RESET_FIELD),resume:F.persist(Et),subscribe:t.subscribe},(n=F.persist(ae),{getError:(...t)=>n().getError(...t),getErrors:(...t)=>n().getErrors(...t),getErrorsByGroup:(...t)=>n().getErrorsByGroup(...t),getWarning:(...t)=>n().getWarning(...t),getWarnings:(...t)=>n().getWarnings(...t),getWarningsByGroup:(...t)=>n().getWarningsByGroup(...t),hasErrors:(...t)=>n().hasErrors(...t),hasErrorsByGroup:(...t)=>n().hasErrorsByGroup(...t),hasWarnings:(...t)=>n().hasWarnings(...t),hasWarningsByGroup:(...t)=>n().hasWarningsByGroup(...t),isPending:(...t)=>n().isPending(...t),isValid:(...t)=>n().isValid(...t),isValidByGroup:(...t)=>n().isValidByGroup(...t)})),Le()));var n}))}function be(t,e){l(P(e),It.EACH_CALLBACK_MUST_BE_A_FUNCTION),function(t){U.create(j,t,{allowReorder:!0})}((()=>{t.forEach(((t,n)=>{e(t,n)}))}))}function ye(t){return e(((...n)=>{const s=Ge(t),r=s(...n);return Object.freeze(e({dump:s.dump},r))}),Object.assign({},Le()))}const We=It.WARN_MUST_BE_CALLED_FROM_TEST;function Me(){const t=(e=It.HOOK_CALLED_OUTSIDE,Q.useX(e).currentTest);var e;l(t,We),pt.warn(t)}export{J as Modes,Ge as create,be as each,me as group,pe as include,Wt as mode,oe as omitWhen,de as only,et as optional,Ne as skip,ce as skipWhen,ye as staticSuite,kt as suiteSelectors,Pe as test,Me as warn};
|
|
2
2
|
//# sourceMappingURL=vest.production.js.map
|