vest 4.2.1-dev-ee64be → 4.2.3-dev-87ebfa
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/classnames.development.js +21 -8
- package/dist/cjs/classnames.production.js +1 -1
- package/dist/cjs/enforce/compose.development.js +27 -59
- package/dist/cjs/enforce/compose.production.js +1 -1
- package/dist/cjs/promisify.development.js +21 -8
- package/dist/cjs/promisify.production.js +1 -1
- package/dist/cjs/vest.development.js +322 -313
- package/dist/cjs/vest.production.js +1 -1
- package/dist/es/classnames.development.js +21 -8
- package/dist/es/classnames.production.js +1 -1
- package/dist/es/enforce/compose.development.js +27 -59
- package/dist/es/enforce/compose.production.js +1 -1
- package/dist/es/promisify.development.js +21 -8
- package/dist/es/promisify.production.js +1 -1
- package/dist/es/vest.development.js +322 -313
- package/dist/es/vest.production.js +1 -1
- package/dist/umd/classnames.development.js +21 -8
- package/dist/umd/classnames.production.js +1 -1
- package/dist/umd/enforce/compose.development.js +73 -83
- package/dist/umd/enforce/compose.production.js +1 -1
- package/dist/umd/enforce/compounds.development.js +18 -20
- package/dist/umd/enforce/compounds.production.js +1 -1
- package/dist/umd/enforce/schema.development.js +18 -20
- package/dist/umd/enforce/schema.production.js +1 -1
- package/dist/umd/promisify.development.js +21 -8
- package/dist/umd/promisify.production.js +1 -1
- package/dist/umd/vest.development.js +279 -277
- package/dist/umd/vest.production.js +1 -1
- package/package.json +1 -1
- package/testUtils/mockThrowError.ts +3 -6
- package/testUtils/suiteDummy.ts +5 -5
- package/types/classnames.d.ts +9 -8
- package/types/parser.d.ts +9 -8
- package/types/promisify.d.ts +9 -8
- package/types/vest.d.ts +69 -68
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).vest={})}(this,(function(n){function t(n){return"function"==typeof n}function e(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function r(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function a(n,t){return n===t}function c(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return c(n)&&c(t)&&Number(n)>Number(t)}function l(n,t){return c(n)&&c(t)&&Number(n)>=Number(t)}function p(n){return!!Array.isArray(n)}function d(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function v(n,t){return c(n)&&c(t)&&Number(n)<=Number(t)}function h(n,t,e){return l(n,t)&&v(n,e)}function g(n){return i(n)||o(n)&&!n.trim()}function N(n){return!!n===n}function m(n){return"number"==typeof n}function y(n,t){return n.length===Number(t)}function E(n){if(n){if(m(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return y(n,0);if("object"==typeof n)return y(Object.keys(n),0)}return!0}function b(n,t){return n in t}function S(n){return Number.isNaN(n)}function T(n){return!!c(n)&&0>Number(n)}function C(n){return!!n}function O(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function R(n,t){return c(n)&&c(t)&&Number(n)<Number(t)}function I(n,t){return n.length>Number(t)}function k(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function A(n,t){return c(n)&&c(t)&&Number(n)===Number(t)}function _(n,t){return o(n)&&o(t)&&n.startsWith(t)}function F(n){for(var e in gt){var r=gt[e];t(r)&&n(e,r)}}function L(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return t(n)?n.apply(void 0,e):n}function w(n,t){var e;return null!==(e=L(n))&&void 0!==e?e:t}function P(n,t){throw Error(w(t,n))}function W(n,t){setTimeout((function(){P(n,t)}),0)}function x(n){function t(t,u){var i,o,s=e();return t=Vn({},s||{},null!==(i=L(n,t,s))&&void 0!==i?i:t),i=r.ctx=Object.freeze(t),r.ancestry.unshift(i),u=u(i),r.ancestry.shift(),r.ctx=null!==(o=r.ancestry[0])&&void 0!==o?o:null,u}function e(){return r.ctx}var r={ancestry:[]};return{bind:function(n,e){return function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return t(n,(function(){return e.apply(void 0,r)}))}},run:t,use:e,useX:function(n){var t;return null!==(t=r.ctx)&&void 0!==t?t:P(w(n,"Context was used after it was closed"))}}}function G(){return null}function X(n,t,e){if(e||2===arguments.length)for(var r,u=0,i=t.length;u<i;u++)!r&&u in t||(r||(r=Array.prototype.slice.call(t,0,u)),r[u]=t[u]);return n.concat(r||Array.prototype.slice.call(t))}function U(){try{return t(Proxy)}catch(n){return!1}}function D(n,t){return n={pass:n},t&&(n.message=t),n}function q(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return N(n)||n&&N(n.pass)||P("Incorrect return value for rule: "+JSON.stringify(n)),N(n)?D(n):D(n.pass,L.apply(void 0,X([n.message,t,e],r,!1)))}function K(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];if(!(i=q.apply(void 0,X([Nt.run({value:n},(function(){return e.apply(void 0,X([n],u,!1))})),r,n],u,!1))).pass){if(!E(i.message))throw i.message;P("enforce/".concat(r," failed with ").concat(JSON.stringify(n)))}return t}}var e={};if(!U())return F((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=gt[e])return t(r,n,e)}});return r}function j(n,t){function e(n){r=!0,u=n}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function B(n){var t,e=[];return function n(r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=gt[r];e.push((function(n){return q.apply(void 0,X([o.apply(void 0,X([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return w(j(e,(function(e,r){var u,i=Nt.run({value:n},(function(){return e(n)}));i.pass||r(D(!!i.pass,null!==(u=L(t,n,i.message))&&void 0!==u?u:i.message))})),D(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return U()?s=new Proxy(s,{get:function(t,e){return gt[e]?n(e):t[e]}}):(F((function(t){s[t]=n(t)})),s)}}(n)}function H(n){function t(n){return e.findIndex((function(t){var e=t[0];return y(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))}void 0===n&&(n=1);var e=[],r=function(t,u){var i=r.get(t);return i?i[1]:(u=u(),e.unshift([t.concat(),u]),I(e,n)&&(e.length=n),u)};return r.invalidate=function(n){-1<(n=t(n))&&e.splice(n,1)},r.get=function(n){return e[t(n)]||null},r}function M(n){return(n=[].concat(n))[n.length-1]}function V(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];p(u)?e.push(V(u,t)):(u=t(u),Jn(u)&&e.push(u))}return e}function J(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(J(t)):[].concat(n).concat(t)}),[])}function Y(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=w(n[r],[]),n=n[r]}return n}function z(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return M(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,M(t)},removeLevel:function(){t.pop()},reset:n}}function Q(){return St.useX().stateRef}function Z(){return Q().testObjects()}function $(){(0,Z()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function nn(n){(0,Z()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function tn(){return J(V(Z()[0].current,(function(n){return n.isPending()?n:null})))}function en(){var n=Z()[0].current;return Tt([n],(function(){return J(n)}))}function rn(n){function e(n,t,e){return u.references.push(),r(n,L(t,e)),function(){return[u.references[n],function(t){return r(n,L(t,u.references[n]))}]}}function r(e,r){var o=u.references[e];u.references[e]=r,t(e=i[e][1])&&e(r,o),t(n)&&n()}var u={references:[]},i=[];return{registerStateKey:function(n,t){var r=i.length;return i.push([n,t]),e(r,n)},reset:function(){var n=u.references;u.references=[],i.forEach((function(t,r){return e(r,t[0],n[r])}))}}}function un(n,t){var e=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(e),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function on(){return St.useX().testCursor.getCursor()}function sn(){return St.useX().testCursor.next()}function an(n,e){if(n=void 0===(n=n.type)?Bn.DEFAULT:n,t(e)){var r={current:{},prev:{}},u=on();return St.run({isolate:{type:n,keys:r}},(function(){St.useX().testCursor.addLevel(),r.prev=function(){var n=Z()[0].prev;return[].concat(Y(n,on())).reduce((function(n,t){return t instanceof Ot&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),nn((function(n){return Y(n,u)[M(u)]=[],n}));var n=e();return St.useX().testCursor.removeLevel(),sn(),n}))}}function cn(n,t){function e(n){i[n===Ct.ERRORS?"errorCount":"warnCount"]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||{errorCount:0,warnCount:0,testCount:0};var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(Ct.ERRORS):t.isWarning()&&e(Ct.WARNINGS)),i}function fn(n,t){return!(!t||n.fieldName!==t)}function ln(n,t,e){var r;void 0===e&&(e={});var u=(e=e||{}).group,i=e.fieldName;return t.reduce((function(t,e){if(u&&e.groupName!==u)var r=!0;else i&&!fn(e,i)?r=!0:(r=e.warns(),r=n===Ct.WARNINGS!=!!r);return r||!e.hasFailures()||(t[e.fieldName]=(t[e.fieldName]||[]).concat(e.message||[])),t}),mt({},i&&((r={})[i]=[],r)))}function pn(n){return vn(Ct.ERRORS,n)}function dn(n){return vn(Ct.WARNINGS,n)}function vn(n,t){return n=ln(n,en(),{fieldName:t}),t?n[t]:n}function hn(n,t){return n=Nn(Ct.ERRORS,n,t),t?n[t]:n}function gn(n,t){return n=Nn(Ct.WARNINGS,n,t),t?n[t]:n}function Nn(n,t,e){return t||P("get".concat(n[0].toUpperCase()).concat(n.slice(1),"ByGroup requires a group name. Received `").concat(t,"` instead.")),ln(n,en(),{group:t,fieldName:e})}function mn(n,t,e){return(e=!n.hasFailures()||e&&!fn(n,e))||(n=n.warns(),e=t===Ct.WARNINGS!=!!n),!e}function yn(n){return bn(Ct.ERRORS,n)}function En(n){return bn(Ct.WARNINGS,n)}function bn(n,t){return en().some((function(e){return mn(e,n,t)}))}function Sn(n,t){return Cn(Ct.ERRORS,n,t)}function Tn(n,t){return Cn(Ct.WARNINGS,n,t)}function Cn(n,t,e){return en().some((function(r){return t===r.groupName&&mn(r,n,e)}))}function On(){var n=en(),t={stateRef:Q()};return Wt([n],St.bind(t,(function(){var n=Q().suiteName()[0];return Vn(function(){var n=en(),t=Vn({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{}});return n.forEach((function(n){var e=n.fieldName,r=n.groupName;t.tests[e]=cn(t.tests,n),r&&(t.groups[r]=t.groups[r]||{},t.groups[r][e]=cn(t.groups[r],n))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}(),{getErrors:St.bind(t,pn),getErrorsByGroup:St.bind(t,hn),getWarnings:St.bind(t,dn),getWarningsByGroup:St.bind(t,gn),hasErrors:St.bind(t,yn),hasErrorsByGroup:St.bind(t,Sn),hasWarnings:St.bind(t,En),hasWarningsByGroup:St.bind(t,Tn),isValid:St.bind(t,(function(n){var t=On(),e=en().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(e=!!n&&!!e[n])?n=!0:t.hasErrors(n)?n=!1:n=!(E(e=en())||n&&E(t.tests[n])||function(n){var t=Q().optionalFields()[0];return st(tn().filter((function(e){return!(n&&!fn(e,n))&&!0!==t[e.fieldName]})))}(n))&&function(n){var t=en(),e=Q().optionalFields()[0];return t.every((function(t){return!(!n||fn(t,n))||!0===e[t.fieldName]||t.isTested()||t.isOmitted()}))}(n),n})),suiteName:n})})))}function Rn(n){var t=tn();return!E(t)&&(n?t.some((function(t){return fn(t,n)})):st(t))}function In(){var n=en(),t={stateRef:Q()};return xt([n],St.bind(t,(function(){return Vn({},On(),{done:St.bind(t,Gt)})})))}function kn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!E(r.tests[e].testCount)))}function An(n){return!(Rn()&&(!n||Rn(n)))}function _n(n,t){var e=St.bind({},n);(0,Q().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(e):n.doneCallbacks.push(e),n}))}function Fn(n){return n.forEach((function(n){return n()}))}function Ln(){var n=function(){var n={};return{emit:function(t,e){(n[t]||[]).forEach((function(n){n(e)}))},on:function(t,e){return n[t]=(n[t]||[]).concat(e),{off:function(){n[t]=n[t].filter((function(n){return n!==e}))}}}}}();return n.on(Pt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=Q().testCallbacks()[0].fieldCallbacks;t&&!Rn(t)&&p(e[t])&&Fn(e[t]),Rn()||n.emit(Pt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Pt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var n=Q().optionalFields()[0];if(!E(n)){var e={};nn((function(r){return V(r,(function(r){var u=r.fieldName;if(e.hasOwnProperty(u))e[r.fieldName]&&r.omit();else{var i=n[u];t(i)&&(e[u]=i(),e[r.fieldName]&&r.omit())}return r}))}))}}()})),n.on(Pt.ALL_RUNNING_TESTS_FINISHED,(function(){Fn(Q().testCallbacks()[0].doneCallbacks)})),n.on(Pt.REMOVE_FIELD,(function(n){en().forEach((function(t){fn(t,n)&&(t.cancel(),function(n){nn((function(t){return V(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Pt.RESET_FIELD,(function(n){en().forEach((function(t){fn(t,n)&&t.reset()}))})),n}function wn(){var n=St.useX();return n.bus||P(),n.bus}function Pn(n){return xn(0,"tests",n)}function Wn(n){return xn(1,"tests",n)}function xn(n,t,e){var r=St.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(e)&&(r.exclusion[t][e]=0===n)}))}function Gn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Xn(n){P("Wrong arguments passed to group. Group ".concat(n,"."))}function Un(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=wn().emit,i=Q(),s=St.bind({stateRef:i},(function(){$(),u(Pt.TEST_COMPLETED,n)}));i=St.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=o(t)?t:r,n.fail(),s())}));try{e.then(s,i)}catch(n){i()}}}function Dn(n){var t=on();nn((function(e){return Y(e,t)[M(t)]=n,e}))}function qn(n){var e=Z()[0].prev;if(E(e))Dn(n),e=n;else{var r=on();if(e=Y(e,r)[M(r)],i(n.key))!st(r=e)||r.fieldName===n.fieldName&&r.groupName===n.groupName||(St.useX().isolate.type!==Bn.EACH&&W("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(e.fieldName,"\n received: ").concat(n.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 n=Z(),t=n[1],e=n[0].prev;n=Y(e,on());var r=St.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),e=null),Dn(e=w(e,n));else{e=n.key;var s=St.useX().isolate.keys.prev[e];r=n,s&&(r=s),s=r;var a=St.useX().isolate.keys.current;i(a[e])?a[e]=s:W('Encountered the same test key "'.concat(e,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Dn(e=r)}}if(r=Mn.EAGER,r=!(St.useX().mode[0]!==r||!yn(n.fieldName)))return sn(),n.skip(),n;if(St.useX().omitted)return e.omit(),sn(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,St.useX().skipped)return!0;var e=St.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){n:{var o=St.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(o,n))var s=!1===o[n];else{for(s in o)if(!0===o[s]){s=!0;break n}s=!1}}if(s)return!0;if(!0===r.groups[n])return!(i||!Gn(u)&&!1!==u[t])}r=St.useX().exclusion;n:{for(a in(s=St.useX().exclusion).groups)if(s.groups[a]){var a=!0;break n}a=!1}return!(!a||n&&n in r.groups&&r.groups[n])||!i&&!!Gn(u)&&!L(e[t])}(n))return e.skip(!!St.useX().skipped),sn(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),Dn(n),sn(),n.isUntested()){e=wn(),r=function(n){return St.run({currentTest:n},(function(){try{var t=n.testFn()}catch(e){t=e,u(n.message)&&o(t)&&(n.message=e),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&t(r.then)?(n.asyncTest=r,n.setPending(),Un(n)):e.emit(Pt.TEST_COMPLETED,n)}catch(t){P("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}else(e=n.asyncTest)&&t(e.then)&&(n.setPending(),Un(n));return n}function Kn(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:X([void 0],e,!0);e=u[0],r=u[1],u=u[2],lt(n)&&jn("fieldName","string"),t(r)||jn("Test callback","function");var i=St.useX();return qn(e=new Ot(n,r,{message:e,groupName:i.groupName,key:u}))}function jn(n,t){P("Incompatible params passed to test function. ".concat(n," must be a ").concat(t))}var Bn,Hn,Mn,Vn=Object.assign,Jn=e(r),Yn=e(u),zn=e(i),Qn=e(s),Zn=e(a),$n=e(c),nt=e(p),tt=e(d),et=e(h),rt=e(g),ut=e(N),it=e(m),ot=e(y),st=e(E),at=e(b),ct=e(S),ft=e(T),lt=e(o),pt=e(C),dt=e(O),vt=e(k),ht=e(A),gt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:Qn,doesNotStartWith:e(_),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:l,gt:f,gte:l,inside:d,isArray:p,isBetween:h,isBlank:g,isBoolean:N,isEmpty:E,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:pt,isKeyOf:b,isNaN:S,isNegative:T,isNotArray:nt,isNotBetween:et,isNotBlank:rt,isNotBoolean:ut,isNotEmpty:st,isNotKeyOf:at,isNotNaN:ct,isNotNull:Jn,isNotNullish:zn,isNotNumber:it,isNotNumeric:$n,isNotString:lt,isNotUndefined:Yn,isNotValueOf:dt,isNull:r,isNullish:i,isNumber:m,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:ft,isString:o,isTruthy:C,isUndefined:u,isValueOf:O,lengthEquals:y,lengthNotEquals:ot,lessThan:R,lessThanOrEquals:v,longerThan:I,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:R,lte:v,matches:k,notEquals:Zn,notInside:tt,notMatches:vt,numberEquals:A,numberNotEquals:ht,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:_},Nt=x((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?Vn(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:Vn(e,{parent:G})})),mt=function(){return(mt=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var u in t=arguments[e])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)},yt=(Hn={context:function(){return Nt.useX()},extend:function(n){Vn(gt,n)}},U()?new Proxy(Vn(K,Hn),{get:function(n,t){return t in n?n[t]:gt[t]?B(t):void 0}}):(F((function(n){Hn[n]=B(n)})),Vn(K,Hn))),Et=function(n){return function(){return"".concat(n++)}}(0);!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(Bn||(Bn={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(Mn||(Mn={}));var bt,St=x((function(n,t){return t?null:Vn({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:Bn.DEFAULT,keys:{current:{},prev:{}}},mode:[Mn.ALL],testCursor:z()},n)})),Tt=H();!function(n){n.Error="error",n.Warning="warning"}(bt||(bt={}));var Ct,Ot=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=Et(),this.severity=bt.Error,this.status=Rt,this.fieldName=n,this.testFn=t,u&&(this.groupName=u),e&&(this.message=e),r&&(this.key=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,u(this.message)&&o(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==wt||(this.status=n)},n.prototype.warns=function(){return this.severity===bt.Warning},n.prototype.setPending=function(){this.setStatus(Ft)},n.prototype.fail=function(){this.setStatus(this.warns()?At:kt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(_t)},n.prototype.warn=function(){this.severity=bt.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(It)},n.prototype.cancel=function(){this.setStatus(Lt),$()},n.prototype.reset=function(){this.status=Rt,$()},n.prototype.omit=function(){this.setStatus(wt)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},n.prototype.isPending=function(){return this.statusEquals(Ft)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(wt)},n.prototype.isUntested=function(){return this.statusEquals(Rt)},n.prototype.isFailing=function(){return this.statusEquals(kt)},n.prototype.isCanceled=function(){return this.statusEquals(Lt)},n.prototype.isSkipped=function(){return this.statusEquals(It)},n.prototype.isPassing=function(){return this.statusEquals(_t)},n.prototype.isWarning=function(){return this.statusEquals(At)},n.prototype.statusEquals=function(n){return this.status===n},n}(),Rt="UNTESTED",It="SKIPPED",kt="FAILED",At="WARNING",_t="PASSING",Ft="PENDING",Lt="CANCELED",wt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Ct||(Ct={}));var Pt,Wt=H(20),xt=H(20),Gt=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];if(n=n[1],t=In(),kn(e,n,t))return t;var r=function(){return e(On())};return An(n)?(r(),t):(_n(r,n),t)};!function(n){n.TEST_COMPLETED="test_completed",n.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running"}(Pt||(Pt={})),Pn.group=function(n){return xn(0,"groups",n)},Wn.group=function(n){return xn(1,"groups",n)};var Xt=Vn(Kn,{memo:function(n){var t=H(100);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=St.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[Q().suiteId()[0],e,u].concat(i),null===(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):qn(r[1])}}(Kn)});n.VERSION="4.2.1-dev-ee64be",n.context=St,n.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],t(r)||P("vest.create: Expected callback to be a function.");var u=Ln(),i=rn();return n={stateRef:un(i,{suiteId:Et(),suiteName:n}),bus:u},Vn(St.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),an({type:Bn.SUITE},(function(){r.apply(void 0,n)})),u.emit(Pt.SUITE_CALLBACK_DONE_RUNNING),In()})),{get:St.bind(n,On),remove:St.bind(n,(function(n){u.emit(Pt.REMOVE_FIELD,n)})),reset:i.reset,resetField:St.bind(n,(function(n){u.emit(Pt.RESET_FIELD,n)}))})},n.each=function(n,e){t(e)||P("each callback must be a function"),an({type:Bn.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=Mn.EAGER;St.useX().mode[0]=n},n.enforce=yt,n.group=function(n,e){o(n)||Xn("name must be a string"),t(e)||Xn("callback must be a function"),an({type:Bn.GROUP},(function(){St.run({groupName:n},e)}))},n.include=function(n){function t(t){var e=St.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?w(r.tests[n],!0):o(t)?!!r.tests[t]:L(t,L(On))}}var e=St.useX();return n?(e.inclusion[n]=w(e.exclusion.tests[n],!0),{when:t}):{when:t}},n.omitWhen=function(n,t){an({type:Bn.OMIT_WHEN},(function(){St.run({omitted:!!St.useX().omitted||L(n,L(On))},(function(){return t()}))}))},n.only=Pn,n.optional=function(n){(0,Q().optionalFields()[1])((function(t){if(p(n)||o(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var e in n)t[e]=n[e];return t}))},n.skip=Wn,n.skipWhen=function(n,t){an({type:Bn.SKIP_WHEN},(function(){St.run({skipped:!!St.useX().skipped||L(n,L(On))},(function(){return t()}))}))},n.test=Xt,n.warn=function(){var n=St.useX("warn hook called outside of a running suite.");n.currentTest||P("warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
|
|
1
|
+
"use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).vest={})}(this,(function(n){function t(n){return"function"==typeof n}function e(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function r(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function a(n,t){return n===t}function c(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return c(n)&&c(t)&&Number(n)>Number(t)}function l(n,t){return c(n)&&c(t)&&Number(n)>=Number(t)}function p(n){return!!Array.isArray(n)}function d(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function v(n,t){return c(n)&&c(t)&&Number(n)<=Number(t)}function h(n,t,e){return l(n,t)&&v(n,e)}function N(n){return i(n)||o(n)&&!n.trim()}function g(n){return!!n===n}function m(n){return"number"==typeof n}function y(n,t){return n.length===Number(t)}function E(n){if(n){if(m(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return y(n,0);if("object"==typeof n)return y(Object.keys(n),0)}return!0}function b(n,t){return n in t}function S(n){return Number.isNaN(n)}function O(n){return!!c(n)&&0>Number(n)}function R(n){return!!n}function T(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function C(n,t){return c(n)&&c(t)&&Number(n)<Number(t)}function I(n,t){return n.length>Number(t)}function k(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function A(n,t){return c(n)&&c(t)&&Number(n)===Number(t)}function _(n,t){return o(n)&&o(t)&&n.startsWith(t)}function w(n){for(var e in mt){var r=mt[e];t(r)&&n(e,r)}}function F(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return t(n)?n.apply(void 0,e):n}function L(n,t){var e;return null!==(e=F(n))&&void 0!==e?e:t}function W(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?F(t):t)}function P(n){function t(t,u){var i,o,s=e();return t=Yn({},s||{},null!==(i=F(n,t,s))&&void 0!==i?i:t),i=r.ctx=Object.freeze(t),r.ancestry.unshift(i),u=u(i),r.ancestry.shift(),r.ctx=null!==(o=r.ancestry[0])&&void 0!==o?o:null,u}function e(){return r.ctx}var r={ancestry:[]};return{bind:function(n,e){return function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return t(n,(function(){return e.apply(void 0,r)}))}},run:t,use:e,useX:function(n){return W(r.ctx,L(n,"Context was used after it was closed")),r.ctx}}}function x(){return null}function U(n,t,e){if(e||2===arguments.length)for(var r,u=0,i=t.length;u<i;u++)!r&&u in t||(r||(r=Array.prototype.slice.call(t,0,u)),r[u]=t[u]);return n.concat(r||Array.prototype.slice.call(t))}function G(){try{return t(Proxy)}catch(n){return!1}}function X(n,t){return n={pass:n},t&&(n.message=t),n}function D(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return W(g(n)||n&&g(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),g(n)?X(n):X(n.pass,F.apply(void 0,U([n.message,t,e],r,!1)))}function q(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return W((i=D.apply(void 0,U([yt.run({value:n},(function(){return e.apply(void 0,U([n],u,!1))})),r,n],u,!1))).pass,E(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var e={};if(!G())return w((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=mt[e])return t(r,n,e)}});return r}function K(n,t){function e(n){r=!0,u=n}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function j(n){var t,e=[];return function n(r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=mt[r];e.push((function(n){return D.apply(void 0,U([o.apply(void 0,U([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return L(K(e,(function(e,r){var u,i=yt.run({value:n},(function(){return e(n)}));i.pass||r(X(!!i.pass,null!==(u=F(t,n,i.message))&&void 0!==u?u:i.message))})),X(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return G()?s=new Proxy(s,{get:function(t,e){return mt[e]?n(e):t[e]}}):(w((function(t){s[t]=n(t)})),s)}}(n)}function B(n){function e(n,t,e){return u.references.push(),r(n,F(t,e)),function(){return[u.references[n],function(t){return r(n,F(t,u.references[n]))}]}}function r(e,r){var o=u.references[e];u.references[e]=r,t(e=i[e][1])&&e(r,o),t(n)&&n()}var u={references:[]},i=[];return{registerStateKey:function(n,t){var r=i.length;return i.push([n,t]),e(r,n)},reset:function(){var n=u.references;u.references=[],i.forEach((function(t,r){return e(r,t[0],n[r])}))}}}function H(n,t){var e=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(e),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function M(n){return(n=[].concat(n))[n.length-1]}function V(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return M(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,M(t)},removeLevel:function(){t.pop()},reset:n}}function J(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];p(u)?e.push(J(u,t)):(u=t(u),zn(u)&&e.push(u))}return e}function Y(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(Y(t)):[].concat(n).concat(t)}),[])}function z(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=L(n[r],[]),n=n[r]}return n}function Q(n){setTimeout((function(){throw Error(n)}),0)}function Z(n){function t(n){return e.findIndex((function(t){var e=t[0];return y(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))}void 0===n&&(n=1);var e=[],r=function(t,u){var i=r.get(t);return i?i[1]:(u=u(),e.unshift([t.concat(),u]),I(e,n)&&(e.length=n),u)};return r.invalidate=function(n){-1<(n=t(n))&&e.splice(n,1)},r.get=function(n){return e[t(n)]||null},r}function $(){return Rt.useX().stateRef}function nn(){return $().testObjects()}function tn(){(0,nn()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function en(n){(0,nn()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function rn(){return Y(J(nn()[0].current,(function(n){return n.isPending()?n:null})))}function un(){var n=nn()[0].current;return Tt([n],(function(){return Y(n)}))}function on(){return Rt.useX().testCursor.getCursor()}function sn(){return Rt.useX().testCursor.next()}function an(n,e){if(n=void 0===(n=n.type)?Mn.DEFAULT:n,t(e)){var r={current:{},prev:{}},u=on();return Rt.run({isolate:{type:n,keys:r}},(function(){Rt.useX().testCursor.addLevel(),r.prev=function(){var n=nn()[0].prev;return[].concat(z(n,on())).reduce((function(n,t){return t instanceof kt&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),en((function(n){return z(n,u)[M(u)]=[],n}));var n=e();return Rt.useX().testCursor.removeLevel(),sn(),n}))}}function cn(n,t){function e(n){i[n===Ct.ERRORS?It.ERROR_COUNT:It.WARN_COUNT]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||{errorCount:0,warnCount:0,testCount:0};var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(Ct.ERRORS):t.isWarning()&&e(Ct.WARNINGS)),i}function fn(n,t){return!(!t||n.fieldName!==t)}function ln(n,t,e){var r;void 0===e&&(e={});var u=(e=e||{}).group,i=e.fieldName;return t.reduce((function(t,e){if(u&&e.groupName!==u)var r=!0;else i&&!fn(e,i)?r=!0:(r=e.warns(),r=n===Ct.WARNINGS!=!!r);return r||!e.hasFailures()||(t[e.fieldName]=(t[e.fieldName]||[]).concat(e.message||[])),t}),Et({},i&&((r={})[i]=[],r)))}function pn(n){return vn(Ct.ERRORS,n)}function dn(n){return vn(Ct.WARNINGS,n)}function vn(n,t){return n=ln(n,un(),{fieldName:t}),t?n[t]:n}function hn(n,t){return n=gn(Ct.ERRORS,n,t),t?n[t]:n}function Nn(n,t){return n=gn(Ct.WARNINGS,n,t),t?n[t]:n}function gn(n,t,e){return W(t,"get".concat(n[0].toUpperCase()).concat(n.slice(1),"ByGroup requires a group name. Received `").concat(t,"` instead.")),ln(n,un(),{group:t,fieldName:e})}function mn(n,t,e){return(e=!n.hasFailures()||e&&!fn(n,e))||(n=n.warns(),e=t===Ct.WARNINGS!=!!n),!e}function yn(n){return bn(Ct.ERRORS,n)}function En(n){return bn(Ct.WARNINGS,n)}function bn(n,t){return un().some((function(e){return mn(e,n,t)}))}function Sn(n,t){return Rn(Ct.ERRORS,n,t)}function On(n,t){return Rn(Ct.WARNINGS,n,t)}function Rn(n,t,e){return un().some((function(r){return t===r.groupName&&mn(r,n,e)}))}function Tn(n){var t=un().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(t=!!n&&!!t[n])||!yn(n)&&(!(E(t=un())||function(n){var t=un();return!!n&&!t.find((function(t){return t.fieldName===n}))}(n)||function(n){var t=$().optionalFields()[0];return ct(rn().filter((function(e){return!(n&&!fn(e,n))&&!0!==t[e.fieldName]})))}(n))&&function(n){var t=un(),e=$().optionalFields()[0];return t.every((function(t){return!(!n||fn(t,n))||(!0===e[t.fieldName]||t.isTested()||t.isOmitted())}))}(n))}function Cn(){var n=un(),t={stateRef:$()};return Gt([n],Rt.bind(t,(function(){var n=$().suiteName()[0];return Yn(function(){var n=un(),t=Yn({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{}});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=cn(e,t),e=n.groups;var r=t.groupName;return r&&(e[r]=e[r]||{},e[r][t.fieldName]=cn(e[r],t)),n}),t),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}(),{getErrors:Rt.bind(t,pn),getErrorsByGroup:Rt.bind(t,hn),getWarnings:Rt.bind(t,dn),getWarningsByGroup:Rt.bind(t,Nn),hasErrors:Rt.bind(t,yn),hasErrorsByGroup:Rt.bind(t,Sn),hasWarnings:Rt.bind(t,En),hasWarningsByGroup:Rt.bind(t,On),isValid:Rt.bind(t,Tn),suiteName:n})})))}function In(n){var t=rn();return!E(t)&&(n?t.some((function(t){return fn(t,n)})):ct(t))}function kn(){var n=un(),t={stateRef:$()};return Xt([n],Rt.bind(t,(function(){return Yn({},Cn(),{done:Rt.bind(t,Dt)})})))}function An(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!E(r.tests[e].testCount)))}function _n(n){return!(In()&&(!n||In(n)))}function wn(n,t){var e=Rt.bind({},n);(0,$().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(e):n.doneCallbacks.push(e),n}))}function Fn(n){return n.forEach((function(n){return n()}))}function Ln(){var n=function(){var n={};return{emit:function(t,e){(n[t]||[]).forEach((function(n){n(e)}))},on:function(t,e){return n[t]=(n[t]||[]).concat(e),{off:function(){n[t]=n[t].filter((function(n){return n!==e}))}}}}}();return n.on(Ut.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=$().testCallbacks()[0].fieldCallbacks;t&&!In(t)&&p(e[t])&&Fn(e[t]),In()||n.emit(Ut.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Ut.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var n=$().optionalFields()[0];if(!E(n)){var e={};en((function(r){return J(r,(function(r){var u=r.fieldName;if(e.hasOwnProperty(u))e[r.fieldName]&&r.omit();else{var i=n[u];t(i)&&(e[u]=i(),e[r.fieldName]&&r.omit())}return r}))}))}}()})),n.on(Ut.ALL_RUNNING_TESTS_FINISHED,(function(){Fn($().testCallbacks()[0].doneCallbacks)})),n.on(Ut.REMOVE_FIELD,(function(n){un().forEach((function(t){fn(t,n)&&(t.cancel(),function(n){en((function(t){return J(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Ut.RESET_FIELD,(function(n){un().forEach((function(t){fn(t,n)&&t.reset()}))})),n}function Wn(){var n=Rt.useX();return W(n.bus),n.bus}function Pn(n){return Un(0,"tests",n)}function xn(n){return Un(1,"tests",n)}function Un(n,t,e){var r=Rt.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(e)&&(r.exclusion[t][e]=0===n)}))}function Gn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Xn(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function Dn(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Wn().emit,i=$(),s=Rt.bind({stateRef:i},(function(){tn(),u(Ut.TEST_COMPLETED,n)}));i=Rt.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=o(t)?t:r,n.fail(),s())}));try{e.then(s,i)}catch(n){i()}}}function qn(n){var t=nn()[0].prev;if(E(t))return Kn(n),n;var e=on();if(t=z(t,e)[M(e)],!i(n.key)){t=n.key,(e=Rt.useX().isolate.keys.prev[t])&&(n=e),e=n;var r=Rt.useX().isolate.keys.current;return i(r[t])?r[t]=e:Q('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Kn(n),n}return!ct(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(Rt.useX().isolate.type===Mn.EACH||Q("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(t.fieldName,"\n received: ").concat(n.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 n=nn(),t=n[1],e=n[0].prev;n=z(e,on());var r=Rt.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),Kn(n=L(t,n)),n}function Kn(n){var t=on();en((function(e){return z(e,t)[M(t)]=n,e}))}function jn(n){var e=Jn.EAGER;if(e=!(Rt.useX().mode[0]!==e||!yn(n.fieldName)))return n.skip(),qn(n),sn(),n;if(e=qn(n),Rt.useX().omitted)return e.omit(),sn(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,Rt.useX().skipped)return!0;var e=Rt.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){n:{var o=Rt.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(o,n))var s=!1===o[n];else{for(s in o)if(!0===o[s]){s=!0;break n}s=!1}}if(s)return!0;if(!0===r.groups[n])return!(i||!Gn(u)&&!1!==u[t])}r=Rt.useX().exclusion;n:{for(a in(s=Rt.useX().exclusion).groups)if(s.groups[a]){var a=!0;break n}a=!1}return!(!a||n&&n in r.groups&&r.groups[n])||!i&&!!Gn(u)&&!F(e[t])}(n))return e.skip(!!Rt.useX().skipped),sn(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),Kn(n),sn(),n.isUntested()){e=Wn();var r=function(n){return Rt.run({currentTest:n},(function(){try{var t=n.testFn()}catch(e){t=e,u(n.message)&&o(t)&&(n.message=e),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&t(r.then)?(n.asyncTest=r,n.setPending(),Dn(n)):e.emit(Ut.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}else(e=n.asyncTest)&&t(e.then)&&(n.setPending(),Dn(n));return n}function Bn(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:U([void 0],e,!0);e=u[0],r=u[1],u=u[2],W(o(n),Hn("fieldName","string")),W(t(r),Hn("Test callback","function"));var i=Rt.useX();return jn(e=new kt(n,r,{message:e,groupName:i.groupName,key:u}))}function Hn(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var Mn,Vn,Jn,Yn=Object.assign,zn=e(r),Qn=e(u),Zn=e(i),$n=e(s),nt=e(a),tt=e(c),et=e(p),rt=e(d),ut=e(h),it=e(N),ot=e(g),st=e(m),at=e(y),ct=e(E),ft=e(b),lt=e(S),pt=e(O),dt=e(o),vt=e(R),ht=e(T),Nt=e(k),gt=e(A),mt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:$n,doesNotStartWith:e(_),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:l,gt:f,gte:l,inside:d,isArray:p,isBetween:h,isBlank:N,isBoolean:g,isEmpty:E,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:vt,isKeyOf:b,isNaN:S,isNegative:O,isNotArray:et,isNotBetween:ut,isNotBlank:it,isNotBoolean:ot,isNotEmpty:ct,isNotKeyOf:ft,isNotNaN:lt,isNotNull:zn,isNotNullish:Zn,isNotNumber:st,isNotNumeric:tt,isNotString:dt,isNotUndefined:Qn,isNotValueOf:ht,isNull:r,isNullish:i,isNumber:m,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:pt,isString:o,isTruthy:R,isUndefined:u,isValueOf:T,lengthEquals:y,lengthNotEquals:at,lessThan:C,lessThanOrEquals:v,longerThan:I,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:C,lte:v,matches:k,notEquals:nt,notInside:rt,notMatches:Nt,numberEquals:A,numberNotEquals:gt,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:_},yt=P((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?Yn(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:Yn(e,{parent:x})})),Et=function(){return(Et=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var u in t=arguments[e])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)},bt=(Vn={context:function(){return yt.useX()},extend:function(n){Yn(mt,n)}},G()?new Proxy(Yn(q,Vn),{get:function(n,t){return t in n?n[t]:mt[t]?j(t):void 0}}):(w((function(n){Vn[n]=j(n)})),Yn(q,Vn))),St=function(n){return function(){return"".concat(n++)}}(0);!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(Mn||(Mn={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(Jn||(Jn={}));var Ot,Rt=P((function(n,t){return t?null:Yn({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:Mn.DEFAULT,keys:{current:{},prev:{}}},mode:[Jn.ALL],testCursor:V()},n)})),Tt=Z();!function(n){n.Error="error",n.Warning="warning"}(Ot||(Ot={}));var Ct,It,kt=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=St(),this.severity=Ot.Error,this.status=At,this.fieldName=n,this.testFn=t,u&&(this.groupName=u),e&&(this.message=e),r&&(this.key=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,u(this.message)&&o(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==xt||(this.status=n)},n.prototype.warns=function(){return this.severity===Ot.Warning},n.prototype.setPending=function(){this.setStatus(Wt)},n.prototype.fail=function(){this.setStatus(this.warns()?Ft:wt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Lt)},n.prototype.warn=function(){this.severity=Ot.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(_t)},n.prototype.cancel=function(){this.setStatus(Pt),tn()},n.prototype.reset=function(){this.status=At,tn()},n.prototype.omit=function(){this.setStatus(xt)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},n.prototype.isPending=function(){return this.statusEquals(Wt)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(xt)},n.prototype.isUntested=function(){return this.statusEquals(At)},n.prototype.isFailing=function(){return this.statusEquals(wt)},n.prototype.isCanceled=function(){return this.statusEquals(Pt)},n.prototype.isSkipped=function(){return this.statusEquals(_t)},n.prototype.isPassing=function(){return this.statusEquals(Lt)},n.prototype.isWarning=function(){return this.statusEquals(Ft)},n.prototype.statusEquals=function(n){return this.status===n},n}(),At="UNTESTED",_t="SKIPPED",wt="FAILED",Ft="WARNING",Lt="PASSING",Wt="PENDING",Pt="CANCELED",xt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Ct||(Ct={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(It||(It={}));var Ut,Gt=Z(20),Xt=Z(20),Dt=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];if(n=n[1],t=kn(),An(e,n,t))return t;var r=function(){return e(Cn())};return _n(n)?(r(),t):(wn(r,n),t)};!function(n){n.TEST_COMPLETED="test_completed",n.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running"}(Ut||(Ut={})),Pn.group=function(n){return Un(0,"groups",n)},xn.group=function(n){return Un(1,"groups",n)};var qt=Yn(Bn,{memo:function(n){var t=Z(100);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=Rt.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[$().suiteId()[0],e,u].concat(i),null===(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):jn(r[1])}}(Bn)});n.VERSION="4.2.3-dev-87ebfa",n.context=Rt,n.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],W(t(r),"vest.create: Expected callback to be a function.");var u=Ln(),i=B();return n={stateRef:H(i,{suiteId:St(),suiteName:n}),bus:u},Yn(Rt.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),an({type:Mn.SUITE},(function(){r.apply(void 0,n)})),u.emit(Ut.SUITE_CALLBACK_DONE_RUNNING),kn()})),{get:Rt.bind(n,Cn),remove:Rt.bind(n,(function(n){u.emit(Ut.REMOVE_FIELD,n)})),reset:i.reset,resetField:Rt.bind(n,(function(n){u.emit(Ut.RESET_FIELD,n)}))})},n.each=function(n,e){W(t(e),"each callback must be a function"),an({type:Mn.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=Jn.EAGER;Rt.useX().mode[0]=n},n.enforce=bt,n.group=function(n,e){W(o(n),Xn("name must be a string")),W(t(e),Xn("callback must be a function")),an({type:Mn.GROUP},(function(){Rt.run({groupName:n},e)}))},n.include=function(n){function t(t){var e=Rt.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?L(r.tests[n],!0):o(t)?!!r.tests[t]:F(t,F(Cn))}}var e=Rt.useX();return n?(e.inclusion[n]=L(e.exclusion.tests[n],!0),{when:t}):{when:t}},n.omitWhen=function(n,t){an({type:Mn.OMIT_WHEN},(function(){Rt.run({omitted:!!Rt.useX().omitted||F(n,F(Cn))},(function(){return t()}))}))},n.only=Pn,n.optional=function(n){(0,$().optionalFields()[1])((function(t){if(p(n)||o(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var e in n)t[e]=n[e];return t}))},n.skip=xn,n.skipWhen=function(n,t){an({type:Mn.SKIP_WHEN},(function(){Rt.run({skipped:!!Rt.useX().skipped||F(n,F(Cn))},(function(){return t()}))}))},n.test=qt,n.warn=function(){var n=Rt.useX("warn hook called outside of a running suite.");W(n.currentTest,"warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
|
package/package.json
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
export default function mockThrowError() {
|
|
2
|
-
const
|
|
3
|
-
const throwError = jest.fn();
|
|
2
|
+
const deferThrow = jest.fn();
|
|
4
3
|
jest.resetModules();
|
|
5
4
|
jest.mock('throwError', () => ({
|
|
6
|
-
|
|
7
|
-
default: throwError,
|
|
5
|
+
deferThrow,
|
|
8
6
|
}));
|
|
9
7
|
const vest = require('vest');
|
|
10
8
|
|
|
11
9
|
return {
|
|
12
|
-
|
|
13
|
-
throwError,
|
|
10
|
+
deferThrow,
|
|
14
11
|
vest,
|
|
15
12
|
};
|
|
16
13
|
}
|
package/testUtils/suiteDummy.ts
CHANGED
|
@@ -5,25 +5,25 @@ import { dummyTest } from './testDummy';
|
|
|
5
5
|
import { optional, create, skip } from 'vest';
|
|
6
6
|
|
|
7
7
|
export function failing(failingFields?: string | string[]) {
|
|
8
|
-
return
|
|
8
|
+
return createSuiteRunResult(failingFields, fieldName => {
|
|
9
9
|
dummyTest.failing(fieldName);
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export function warning(failingFields?: string | string[]) {
|
|
14
|
-
return
|
|
14
|
+
return createSuiteRunResult(failingFields, fieldName => {
|
|
15
15
|
dummyTest.failingWarning(fieldName);
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export function failingAsync(failingFields?: string | string[]) {
|
|
20
|
-
return
|
|
20
|
+
return createSuiteRunResult(failingFields, fieldName => {
|
|
21
21
|
dummyTest.failingAsync(fieldName);
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export function passing(fields?: string | string[]) {
|
|
26
|
-
return
|
|
26
|
+
return createSuiteRunResult(fields, fieldName => {
|
|
27
27
|
dummyTest.passing(fieldName);
|
|
28
28
|
});
|
|
29
29
|
}
|
|
@@ -87,7 +87,7 @@ export function untested(fields?: string | string[]) {
|
|
|
87
87
|
return suite.get();
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
function
|
|
90
|
+
function createSuiteRunResult(
|
|
91
91
|
fieldNames: string[] | string | undefined,
|
|
92
92
|
callback: (fieldName?: string) => void // eslint-disable-line no-unused-vars
|
|
93
93
|
) {
|
package/types/classnames.d.ts
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Reads the testObjects list and gets full validation result from it.
|
|
3
3
|
*/
|
|
4
4
|
declare function genTestsSummary(): TTestSummary;
|
|
5
|
+
type TGroups = Record<string, TTestGroup>;
|
|
5
6
|
type TTestSummary = {
|
|
6
|
-
groups:
|
|
7
|
+
groups: TGroups;
|
|
7
8
|
tests: TTestGroup;
|
|
8
9
|
} & TTestSummaryBase;
|
|
9
10
|
type TTestGroup = Record<string, TSingleTestSummary>;
|
|
@@ -28,7 +29,7 @@ declare function hasErrors(fieldName?: string): boolean;
|
|
|
28
29
|
declare function hasWarnings(fieldName?: string): boolean;
|
|
29
30
|
declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
|
|
30
31
|
declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
|
|
31
|
-
type
|
|
32
|
+
type SuiteResult = ReturnType<typeof genTestsSummary> & {
|
|
32
33
|
/**
|
|
33
34
|
* Returns whether the suite as a whole is valid.
|
|
34
35
|
* Determined if there are no errors, and if no
|
|
@@ -44,22 +45,22 @@ type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
|
|
|
44
45
|
getErrorsByGroup: typeof getErrorsByGroup;
|
|
45
46
|
getWarningsByGroup: typeof getWarningsByGroup;
|
|
46
47
|
};
|
|
47
|
-
type
|
|
48
|
+
type SuiteRunResult = SuiteResult & {
|
|
48
49
|
done: IDone;
|
|
49
50
|
};
|
|
50
51
|
interface IDone {
|
|
51
52
|
(...args: [
|
|
52
|
-
cb: (res:
|
|
53
|
-
]):
|
|
53
|
+
cb: (res: SuiteResult) => void
|
|
54
|
+
]): SuiteRunResult;
|
|
54
55
|
(...args: [
|
|
55
56
|
fieldName: string,
|
|
56
|
-
cb: (res:
|
|
57
|
-
]):
|
|
57
|
+
cb: (res: SuiteResult) => void
|
|
58
|
+
]): SuiteRunResult;
|
|
58
59
|
}
|
|
59
60
|
/**
|
|
60
61
|
* Creates a function that returns class names that match the validation result
|
|
61
62
|
*/
|
|
62
|
-
declare function classnames(res:
|
|
63
|
+
declare function classnames(res: SuiteRunResult | SuiteResult, classes?: TSupportedClasses): (fieldName: string) => string;
|
|
63
64
|
type TSupportedClasses = {
|
|
64
65
|
valid?: string;
|
|
65
66
|
tested?: string;
|
package/types/parser.d.ts
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Reads the testObjects list and gets full validation result from it.
|
|
3
3
|
*/
|
|
4
4
|
declare function genTestsSummary(): TTestSummary;
|
|
5
|
+
type TGroups = Record<string, TTestGroup>;
|
|
5
6
|
type TTestSummary = {
|
|
6
|
-
groups:
|
|
7
|
+
groups: TGroups;
|
|
7
8
|
tests: TTestGroup;
|
|
8
9
|
} & TTestSummaryBase;
|
|
9
10
|
type TTestGroup = Record<string, TSingleTestSummary>;
|
|
@@ -28,7 +29,7 @@ declare function hasErrors(fieldName?: string): boolean;
|
|
|
28
29
|
declare function hasWarnings(fieldName?: string): boolean;
|
|
29
30
|
declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
|
|
30
31
|
declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
|
|
31
|
-
type
|
|
32
|
+
type SuiteResult = ReturnType<typeof genTestsSummary> & {
|
|
32
33
|
/**
|
|
33
34
|
* Returns whether the suite as a whole is valid.
|
|
34
35
|
* Determined if there are no errors, and if no
|
|
@@ -44,19 +45,19 @@ type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
|
|
|
44
45
|
getErrorsByGroup: typeof getErrorsByGroup;
|
|
45
46
|
getWarningsByGroup: typeof getWarningsByGroup;
|
|
46
47
|
};
|
|
47
|
-
type
|
|
48
|
+
type SuiteRunResult = SuiteResult & {
|
|
48
49
|
done: IDone;
|
|
49
50
|
};
|
|
50
51
|
interface IDone {
|
|
51
52
|
(...args: [
|
|
52
|
-
cb: (res:
|
|
53
|
-
]):
|
|
53
|
+
cb: (res: SuiteResult) => void
|
|
54
|
+
]): SuiteRunResult;
|
|
54
55
|
(...args: [
|
|
55
56
|
fieldName: string,
|
|
56
|
-
cb: (res:
|
|
57
|
-
]):
|
|
57
|
+
cb: (res: SuiteResult) => void
|
|
58
|
+
]): SuiteRunResult;
|
|
58
59
|
}
|
|
59
|
-
declare function parse(res:
|
|
60
|
+
declare function parse(res: SuiteRunResult | SuiteResult): {
|
|
60
61
|
valid: (fieldName?: string) => boolean;
|
|
61
62
|
tested: (fieldName?: string) => boolean;
|
|
62
63
|
invalid: (fieldName?: string) => boolean;
|
package/types/promisify.d.ts
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Reads the testObjects list and gets full validation result from it.
|
|
3
3
|
*/
|
|
4
4
|
declare function genTestsSummary(): TTestSummary;
|
|
5
|
+
type TGroups = Record<string, TTestGroup>;
|
|
5
6
|
type TTestSummary = {
|
|
6
|
-
groups:
|
|
7
|
+
groups: TGroups;
|
|
7
8
|
tests: TTestGroup;
|
|
8
9
|
} & TTestSummaryBase;
|
|
9
10
|
type TTestGroup = Record<string, TSingleTestSummary>;
|
|
@@ -28,7 +29,7 @@ declare function hasErrors(fieldName?: string): boolean;
|
|
|
28
29
|
declare function hasWarnings(fieldName?: string): boolean;
|
|
29
30
|
declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
|
|
30
31
|
declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
|
|
31
|
-
type
|
|
32
|
+
type SuiteResult = ReturnType<typeof genTestsSummary> & {
|
|
32
33
|
/**
|
|
33
34
|
* Returns whether the suite as a whole is valid.
|
|
34
35
|
* Determined if there are no errors, and if no
|
|
@@ -44,17 +45,17 @@ type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
|
|
|
44
45
|
getErrorsByGroup: typeof getErrorsByGroup;
|
|
45
46
|
getWarningsByGroup: typeof getWarningsByGroup;
|
|
46
47
|
};
|
|
47
|
-
type
|
|
48
|
+
type SuiteRunResult = SuiteResult & {
|
|
48
49
|
done: IDone;
|
|
49
50
|
};
|
|
50
51
|
interface IDone {
|
|
51
52
|
(...args: [
|
|
52
|
-
cb: (res:
|
|
53
|
-
]):
|
|
53
|
+
cb: (res: SuiteResult) => void
|
|
54
|
+
]): SuiteRunResult;
|
|
54
55
|
(...args: [
|
|
55
56
|
fieldName: string,
|
|
56
|
-
cb: (res:
|
|
57
|
-
]):
|
|
57
|
+
cb: (res: SuiteResult) => void
|
|
58
|
+
]): SuiteRunResult;
|
|
58
59
|
}
|
|
59
|
-
declare const promisify: (validatorFn: (...args: any[]) =>
|
|
60
|
+
declare const promisify: (validatorFn: (...args: any[]) => SuiteRunResult) => (...args: any[]) => Promise<SuiteResult>;
|
|
60
61
|
export { promisify as default };
|
package/types/vest.d.ts
CHANGED
|
@@ -1,59 +1,11 @@
|
|
|
1
1
|
import { enforce } from 'n4s';
|
|
2
|
-
declare enum TestSeverity {
|
|
3
|
-
Error = "error",
|
|
4
|
-
Warning = "warning"
|
|
5
|
-
}
|
|
6
|
-
declare class VestTest {
|
|
7
|
-
fieldName: string;
|
|
8
|
-
testFn: TTestFn;
|
|
9
|
-
asyncTest?: TAsyncTest;
|
|
10
|
-
groupName?: string;
|
|
11
|
-
message?: string;
|
|
12
|
-
key?: null | string;
|
|
13
|
-
id: string;
|
|
14
|
-
severity: TestSeverity;
|
|
15
|
-
status: KStatus;
|
|
16
|
-
constructor(fieldName: string, testFn: TTestFn, { message, groupName, key }?: {
|
|
17
|
-
message?: string;
|
|
18
|
-
groupName?: string;
|
|
19
|
-
key?: string;
|
|
20
|
-
});
|
|
21
|
-
run(): TTestResult;
|
|
22
|
-
setStatus(status: KStatus): void;
|
|
23
|
-
warns(): boolean;
|
|
24
|
-
setPending(): void;
|
|
25
|
-
fail(): void;
|
|
26
|
-
done(): void;
|
|
27
|
-
warn(): void;
|
|
28
|
-
isFinalStatus(): boolean;
|
|
29
|
-
skip(force?: boolean): void;
|
|
30
|
-
cancel(): void;
|
|
31
|
-
reset(): void;
|
|
32
|
-
omit(): void;
|
|
33
|
-
valueOf(): boolean;
|
|
34
|
-
hasFailures(): boolean;
|
|
35
|
-
isNonActionable(): boolean;
|
|
36
|
-
isPending(): boolean;
|
|
37
|
-
isTested(): boolean;
|
|
38
|
-
isOmitted(): boolean;
|
|
39
|
-
isUntested(): boolean;
|
|
40
|
-
isFailing(): boolean;
|
|
41
|
-
isCanceled(): boolean;
|
|
42
|
-
isSkipped(): boolean;
|
|
43
|
-
isPassing(): boolean;
|
|
44
|
-
isWarning(): boolean;
|
|
45
|
-
statusEquals(status: KStatus): boolean;
|
|
46
|
-
}
|
|
47
|
-
type TAsyncTest = Promise<string | void>;
|
|
48
|
-
type TTestResult = TAsyncTest | boolean | void;
|
|
49
|
-
type TTestFn = () => TTestResult;
|
|
50
|
-
type KStatus = "UNTESTED" | "SKIPPED" | "FAILED" | "WARNING" | "PASSING" | "PENDING" | "CANCELED" | "OMITTED";
|
|
51
2
|
/**
|
|
52
3
|
* Reads the testObjects list and gets full validation result from it.
|
|
53
4
|
*/
|
|
54
5
|
declare function genTestsSummary(): TTestSummary;
|
|
6
|
+
type TGroups = Record<string, TTestGroup>;
|
|
55
7
|
type TTestSummary = {
|
|
56
|
-
groups:
|
|
8
|
+
groups: TGroups;
|
|
57
9
|
tests: TTestGroup;
|
|
58
10
|
} & TTestSummaryBase;
|
|
59
11
|
type TTestGroup = Record<string, TSingleTestSummary>;
|
|
@@ -78,7 +30,7 @@ declare function hasErrors(fieldName?: string): boolean;
|
|
|
78
30
|
declare function hasWarnings(fieldName?: string): boolean;
|
|
79
31
|
declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
|
|
80
32
|
declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
|
|
81
|
-
type
|
|
33
|
+
type SuiteResult = ReturnType<typeof genTestsSummary> & {
|
|
82
34
|
/**
|
|
83
35
|
* Returns whether the suite as a whole is valid.
|
|
84
36
|
* Determined if there are no errors, and if no
|
|
@@ -94,27 +46,27 @@ type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
|
|
|
94
46
|
getErrorsByGroup: typeof getErrorsByGroup;
|
|
95
47
|
getWarningsByGroup: typeof getWarningsByGroup;
|
|
96
48
|
};
|
|
97
|
-
type
|
|
49
|
+
type SuiteRunResult = SuiteResult & {
|
|
98
50
|
done: IDone;
|
|
99
51
|
};
|
|
100
52
|
interface IDone {
|
|
101
53
|
(...args: [
|
|
102
|
-
cb: (res:
|
|
103
|
-
]):
|
|
54
|
+
cb: (res: SuiteResult) => void
|
|
55
|
+
]): SuiteRunResult;
|
|
104
56
|
(...args: [
|
|
105
57
|
fieldName: string,
|
|
106
|
-
cb: (res:
|
|
107
|
-
]):
|
|
58
|
+
cb: (res: SuiteResult) => void
|
|
59
|
+
]): SuiteRunResult;
|
|
108
60
|
}
|
|
109
61
|
type CreateProperties = {
|
|
110
|
-
get: () =>
|
|
62
|
+
get: () => SuiteResult;
|
|
111
63
|
reset: () => void;
|
|
112
64
|
resetField: (fieldName: string) => void;
|
|
113
65
|
remove: (fieldName: string) => void;
|
|
114
66
|
};
|
|
115
67
|
type CB = (...args: any[]) => void;
|
|
116
|
-
type
|
|
117
|
-
(...args: Parameters<T>):
|
|
68
|
+
type Suite<T extends CB> = {
|
|
69
|
+
(...args: Parameters<T>): SuiteRunResult;
|
|
118
70
|
} & CreateProperties;
|
|
119
71
|
/**
|
|
120
72
|
* Creates a new validation suite
|
|
@@ -127,8 +79,57 @@ type SuiteReturnType<T extends CB> = {
|
|
|
127
79
|
* });
|
|
128
80
|
* });
|
|
129
81
|
*/
|
|
130
|
-
declare function create<T extends CB>(suiteName: string, suiteCallback: T):
|
|
131
|
-
declare function create<T extends CB>(suiteCallback: T):
|
|
82
|
+
declare function create<T extends CB>(suiteName: string, suiteCallback: T): Suite<T>;
|
|
83
|
+
declare function create<T extends CB>(suiteCallback: T): Suite<T>;
|
|
84
|
+
declare enum TestSeverity {
|
|
85
|
+
Error = "error",
|
|
86
|
+
Warning = "warning"
|
|
87
|
+
}
|
|
88
|
+
declare class VestTest {
|
|
89
|
+
fieldName: string;
|
|
90
|
+
testFn: TTestFn;
|
|
91
|
+
asyncTest?: TAsyncTest;
|
|
92
|
+
groupName?: string;
|
|
93
|
+
message?: string;
|
|
94
|
+
key?: null | string;
|
|
95
|
+
id: string;
|
|
96
|
+
severity: TestSeverity;
|
|
97
|
+
status: KStatus;
|
|
98
|
+
constructor(fieldName: string, testFn: TTestFn, { message, groupName, key }?: {
|
|
99
|
+
message?: string;
|
|
100
|
+
groupName?: string;
|
|
101
|
+
key?: string;
|
|
102
|
+
});
|
|
103
|
+
run(): TTestResult;
|
|
104
|
+
setStatus(status: KStatus): void;
|
|
105
|
+
warns(): boolean;
|
|
106
|
+
setPending(): void;
|
|
107
|
+
fail(): void;
|
|
108
|
+
done(): void;
|
|
109
|
+
warn(): void;
|
|
110
|
+
isFinalStatus(): boolean;
|
|
111
|
+
skip(force?: boolean): void;
|
|
112
|
+
cancel(): void;
|
|
113
|
+
reset(): void;
|
|
114
|
+
omit(): void;
|
|
115
|
+
valueOf(): boolean;
|
|
116
|
+
hasFailures(): boolean;
|
|
117
|
+
isNonActionable(): boolean;
|
|
118
|
+
isPending(): boolean;
|
|
119
|
+
isTested(): boolean;
|
|
120
|
+
isOmitted(): boolean;
|
|
121
|
+
isUntested(): boolean;
|
|
122
|
+
isFailing(): boolean;
|
|
123
|
+
isCanceled(): boolean;
|
|
124
|
+
isSkipped(): boolean;
|
|
125
|
+
isPassing(): boolean;
|
|
126
|
+
isWarning(): boolean;
|
|
127
|
+
statusEquals(status: KStatus): boolean;
|
|
128
|
+
}
|
|
129
|
+
type TAsyncTest = Promise<string | void>;
|
|
130
|
+
type TTestResult = TAsyncTest | boolean | void;
|
|
131
|
+
type TTestFn = () => TTestResult;
|
|
132
|
+
type KStatus = "UNTESTED" | "SKIPPED" | "FAILED" | "WARNING" | "PASSING" | "PENDING" | "CANCELED" | "OMITTED";
|
|
132
133
|
declare function createCursor(): {
|
|
133
134
|
addLevel: () => void;
|
|
134
135
|
cursorAt: () => number;
|
|
@@ -175,8 +176,8 @@ declare function createStateRef(state: TState, { suiteId, suiteName }: {
|
|
|
175
176
|
suiteId: () => TStateHandlerReturn<string>;
|
|
176
177
|
suiteName: () => TStateHandlerReturn<string | void>;
|
|
177
178
|
testCallbacks: () => TStateHandlerReturn<{
|
|
178
|
-
fieldCallbacks: Record<string, ((res:
|
|
179
|
-
doneCallbacks: ((res:
|
|
179
|
+
fieldCallbacks: Record<string, ((res: SuiteResult) => void)[]>;
|
|
180
|
+
doneCallbacks: ((res: SuiteResult) => void)[];
|
|
180
181
|
}>;
|
|
181
182
|
testObjects: () => TStateHandlerReturn<{
|
|
182
183
|
prev: NestedArray<VestTest>;
|
|
@@ -265,7 +266,7 @@ declare namespace skip {
|
|
|
265
266
|
*/
|
|
266
267
|
declare function group(groupName: string, tests: () => void): void;
|
|
267
268
|
declare function include(fieldName: string): {
|
|
268
|
-
when: (condition: string | boolean | ((draft:
|
|
269
|
+
when: (condition: string | boolean | ((draft: SuiteResult) => boolean)) => void;
|
|
269
270
|
};
|
|
270
271
|
/**
|
|
271
272
|
* Sets the suite to "eager" (fail fast) mode.
|
|
@@ -296,7 +297,7 @@ declare function eager(): void;
|
|
|
296
297
|
* test('username', 'User already taken', async () => await doesUserExist(username)
|
|
297
298
|
* });
|
|
298
299
|
*/
|
|
299
|
-
declare function omitWhen(conditional: boolean | ((draft:
|
|
300
|
+
declare function omitWhen(conditional: boolean | ((draft: SuiteResult) => boolean), callback: (...args: any[]) => void): void;
|
|
300
301
|
/**
|
|
301
302
|
* Marks a field as optional, either just by name, or by a given condition.
|
|
302
303
|
*
|
|
@@ -320,7 +321,7 @@ type TOptionalsObject = Record<string, () => boolean>;
|
|
|
320
321
|
* test('username', 'User already taken', async () => await doesUserExist(username)
|
|
321
322
|
* });
|
|
322
323
|
*/
|
|
323
|
-
declare function skipWhen(conditional: boolean | ((draft:
|
|
324
|
+
declare function skipWhen(conditional: boolean | ((draft: SuiteResult) => boolean), callback: (...args: any[]) => void): void;
|
|
324
325
|
declare function testBase(fieldName: string, message: string, cb: TTestFn): VestTest;
|
|
325
326
|
declare function testBase(fieldName: string, cb: TTestFn): VestTest;
|
|
326
327
|
declare function testBase(fieldName: string, message: string, cb: TTestFn, key: string): VestTest;
|
|
@@ -344,6 +345,6 @@ declare const test: typeof testBase & {
|
|
|
344
345
|
* Sets a running test to warn only mode.
|
|
345
346
|
*/
|
|
346
347
|
declare function warn(): void;
|
|
347
|
-
declare const VERSION = "4.2.
|
|
348
|
+
declare const VERSION = "4.2.3-dev-87ebfa";
|
|
348
349
|
export { test, create, each, only, skip, warn, group, optional, skipWhen, omitWhen, enforce, VERSION, context, include, eager };
|
|
349
|
-
export type {
|
|
350
|
+
export type { SuiteResult, SuiteRunResult, VestTest, Suite };
|