vest 4.0.0-dev-366a8b → 4.0.0-dev-8851ff
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/CHANGELOG.md +2 -2
- package/dist/cjs/vest.development.js +38 -32
- package/dist/cjs/vest.production.js +1 -1
- package/dist/es/vest.development.js +38 -32
- package/dist/es/vest.production.js +1 -1
- package/dist/umd/vest.development.js +38 -32
- package/dist/umd/vest.production.js +1 -1
- package/package.json +1 -1
- package/types/vest.d.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
-
## 4.0.0 - 2021-10-
|
|
7
|
+
## 4.0.0 - 2021-10-25
|
|
8
8
|
### Changed or removed
|
|
9
9
|
- f5ba507 major(context): used named export in context (ealush)
|
|
10
10
|
- eaed68f breaking(vest, enforce): prepare next major (ealush)
|
|
@@ -19,7 +19,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
|
|
|
19
19
|
- 990c68f feat(n4s): context propagation within enforce (undefined)
|
|
20
20
|
|
|
21
21
|
### Fixed and improved
|
|
22
|
-
-
|
|
22
|
+
- 8851ff5 patch(vest): Add isolate module for containing re-orders (ealush)
|
|
23
23
|
- 0593c0f patch(vest): refresh tests after cancel (ealush)
|
|
24
24
|
- e915b53 patch: add cursor util (ealush)
|
|
25
25
|
- f54ae8b patch(vest): move cursor into context (ealush)
|
|
@@ -885,7 +885,7 @@ function createStateRef(state, _a) {
|
|
|
885
885
|
}); }),
|
|
886
886
|
testObjects: state.registerStateKey(function (prev) {
|
|
887
887
|
return {
|
|
888
|
-
prev:
|
|
888
|
+
prev: (prev ? prev.current : []),
|
|
889
889
|
current: []
|
|
890
890
|
};
|
|
891
891
|
})
|
|
@@ -949,23 +949,21 @@ var ctx = createContext(function (ctxRef, parentContext) {
|
|
|
949
949
|
}, ctxRef);
|
|
950
950
|
});
|
|
951
951
|
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
}
|
|
957
|
-
return callback(item);
|
|
958
|
-
});
|
|
959
|
-
}
|
|
960
|
-
function filter(array, predicate) {
|
|
952
|
+
// This is sort of a map/filter in one function.
|
|
953
|
+
// Normally, behaves like a nested-array map
|
|
954
|
+
// Returning `null` will drop the element from the array
|
|
955
|
+
function transform(array, cb) {
|
|
961
956
|
var res = [];
|
|
962
957
|
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
|
|
963
958
|
var v = array_1[_i];
|
|
964
959
|
if (isArray(v)) {
|
|
965
|
-
res.push(
|
|
960
|
+
res.push(transform(v, cb));
|
|
966
961
|
}
|
|
967
|
-
else
|
|
968
|
-
|
|
962
|
+
else {
|
|
963
|
+
var output = cb(v);
|
|
964
|
+
if (isNotNull(output)) {
|
|
965
|
+
res.push(output);
|
|
966
|
+
}
|
|
969
967
|
}
|
|
970
968
|
}
|
|
971
969
|
return res;
|
|
@@ -986,11 +984,6 @@ function flatten(values) {
|
|
|
986
984
|
return asArray(acc).concat(value);
|
|
987
985
|
}, []);
|
|
988
986
|
}
|
|
989
|
-
function removeAtPath(array, path) {
|
|
990
|
-
var current = getCurrent(array, path);
|
|
991
|
-
current.splice(path[last(path)], 1);
|
|
992
|
-
return array;
|
|
993
|
-
}
|
|
994
987
|
function getCurrent(array, path) {
|
|
995
988
|
var current = array;
|
|
996
989
|
for (var _i = 0, _a = path.slice(0, -1); _i < _a.length; _i++) {
|
|
@@ -1081,7 +1074,9 @@ function useSetTests(handler) {
|
|
|
1081
1074
|
// Derived state
|
|
1082
1075
|
function useAllIncomplete() {
|
|
1083
1076
|
var current = useTestObjects()[0].current;
|
|
1084
|
-
return flatten(
|
|
1077
|
+
return flatten(transform(current, function (testObject) {
|
|
1078
|
+
return testObject.isPending() ? testObject : null;
|
|
1079
|
+
}));
|
|
1085
1080
|
}
|
|
1086
1081
|
function useOmittedFields() {
|
|
1087
1082
|
var testObjects = useTestsFlat();
|
|
@@ -1155,7 +1150,7 @@ function omitOptionalTests() {
|
|
|
1155
1150
|
}
|
|
1156
1151
|
var shouldOmit = {};
|
|
1157
1152
|
useSetTests(function (tests) {
|
|
1158
|
-
return
|
|
1153
|
+
return transform(tests, function (testObject) {
|
|
1159
1154
|
var fieldName = testObject.fieldName;
|
|
1160
1155
|
if (shouldOmit.hasOwnProperty(fieldName)) {
|
|
1161
1156
|
omit(testObject);
|
|
@@ -1531,7 +1526,9 @@ function deferDoneCallback(doneCallback, fieldName) {
|
|
|
1531
1526
|
* Removes test object from suite state
|
|
1532
1527
|
*/
|
|
1533
1528
|
function removeTestFromState (testObject) {
|
|
1534
|
-
useSetTests(function (tests) {
|
|
1529
|
+
useSetTests(function (tests) {
|
|
1530
|
+
return transform(tests, function (test) { return (testObject !== test ? test : null); });
|
|
1531
|
+
});
|
|
1535
1532
|
}
|
|
1536
1533
|
|
|
1537
1534
|
function createBus() {
|
|
@@ -2019,7 +2016,16 @@ function registerTest(testObject) {
|
|
|
2019
2016
|
}
|
|
2020
2017
|
}
|
|
2021
2018
|
|
|
2022
|
-
|
|
2019
|
+
/**
|
|
2020
|
+
* This module serves as the "collision detection" mechanism for Vest.
|
|
2021
|
+
* It is used to ensure that tests are not called in a different order than
|
|
2022
|
+
* they were called in the previous run.
|
|
2023
|
+
* If they are, it will throw a deferred error unless explicitly allowed.
|
|
2024
|
+
*
|
|
2025
|
+
* For now it seems pretty safe, and it covers most common use cases, but it can
|
|
2026
|
+
* be improved in the future both in terms of performance and scenarios it covers.
|
|
2027
|
+
*/
|
|
2028
|
+
// eslint-disable-next-line max-statements, max-lines-per-function
|
|
2023
2029
|
function useTestAtCursor(newTestObject) {
|
|
2024
2030
|
var _a = useTestObjects(), testObjects = _a[0], setTestObjects = _a[1];
|
|
2025
2031
|
var prevTests = testObjects.prev;
|
|
@@ -2031,16 +2037,14 @@ function useTestAtCursor(newTestObject) {
|
|
|
2031
2037
|
if (shouldPurgePrevTest(prevTest, newTestObject)) {
|
|
2032
2038
|
throwTestOrderError(prevTest, newTestObject);
|
|
2033
2039
|
// Here we handle just the omission of tests in the middle of the test suite.
|
|
2034
|
-
// We need to also handle a case in which tests are added in between other tests
|
|
2035
|
-
//
|
|
2040
|
+
// We need to also handle a case in which tests are added in between other tests.
|
|
2041
|
+
// At the moment all we can do is just splice the tests out of the array when this happens.
|
|
2036
2042
|
// A viable solution would be to use something like React's key prop to identify tests regardless
|
|
2037
2043
|
// of their position in the suite. https://reactjs.org/docs/lists-and-keys.html#keys
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
}
|
|
2043
|
-
// We actually don't mind mutating the state directly (as we do above). There is no harm in it
|
|
2044
|
+
var current = getCurrent(prevTests, usePath());
|
|
2045
|
+
var cursorAt = useCursorAt();
|
|
2046
|
+
current.splice(cursorAt);
|
|
2047
|
+
// We actually don't mind mutating the state directly (as can be seen above). There is no harm in it
|
|
2044
2048
|
// since we're only touching the "prev" state. The reason we still use the setter function is
|
|
2045
2049
|
// to prevent future headaches if we ever do need to rely on prev-state immutability.
|
|
2046
2050
|
setTestObjects(function (_a) {
|
|
@@ -2050,6 +2054,8 @@ function useTestAtCursor(newTestObject) {
|
|
|
2050
2054
|
current: current
|
|
2051
2055
|
});
|
|
2052
2056
|
});
|
|
2057
|
+
// Need to see if this has any effect at all.
|
|
2058
|
+
prevTest = null;
|
|
2053
2059
|
}
|
|
2054
2060
|
var nextTest = defaultTo(prevTest, newTestObject);
|
|
2055
2061
|
useSetTestAtCursor(nextTest);
|
|
@@ -2072,7 +2078,7 @@ function throwTestOrderError(prevTest, newTestObject) {
|
|
|
2072
2078
|
if (shouldAllowReorder()) {
|
|
2073
2079
|
return;
|
|
2074
2080
|
}
|
|
2075
|
-
throwErrorDeferred("Vest Critical Error: Tests called in different order than previous run.\n expected: " + prevTest.fieldName + "\n received: " + newTestObject.fieldName + "\n This
|
|
2081
|
+
throwErrorDeferred("Vest Critical Error: Tests called in different order than previous run.\n expected: " + prevTest.fieldName + "\n received: " + newTestObject.fieldName + "\n This happens when you conditionally call your tests using if/else.\n This might lead to incorrect validation results.\n Replacing if/else with skipWhen solves these issues.");
|
|
2076
2082
|
}
|
|
2077
2083
|
|
|
2078
2084
|
function registerPrevRunTest(testObject) {
|
|
@@ -2172,7 +2178,7 @@ var test = assign(testBase, {
|
|
|
2172
2178
|
memo: bindTestMemo(testBase)
|
|
2173
2179
|
});
|
|
2174
2180
|
|
|
2175
|
-
var VERSION = "4.0.0-dev-
|
|
2181
|
+
var VERSION = "4.0.0-dev-8851ff";
|
|
2176
2182
|
|
|
2177
2183
|
exports.VERSION = VERSION;
|
|
2178
2184
|
exports.create = create;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=function(){return(n=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)};function t(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||t)}var r=Object.assign;function e(n){return"function"==typeof n}function u(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function i(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return e(n)?n.apply(void 0,t):n}function o(n,t){var r;return null!==(r=i(n))&&void 0!==r?r:t}function s(n,t){return n={pass:n},t&&(n.message=t),n}function a(){return s(!1)}function f(){return s(!0)}function c(n){return o(n,a())}function l(n){return o(n,f())}function p(n,t){try{return n.run(t)}catch(n){return a()}}function v(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){(t=p(t,n)).pass||r(t)})))}function d(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return c(u(t,(function(t,r){(t=p(t,n)).pass&&r(t)})))}function g(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){p(t,n).pass&&r(a())})))}function h(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function m(n,t){return n.length===Number(t)}var y=h(m);function N(n,t){return n.length>Number(t)}function b(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(N(e,1))return!1;(t=p(t,n)).pass&&e.push(t)})),s(m(e,1))}function E(n){return null===n}var C=h(E);function T(n){return void 0===n}var S=h(T);function O(n,t){return T(n)||E(n)?f():p(t,n)}function x(n){return String(n)===n}function w(n,t){return x(n)&&x(t)&&n.endsWith(t)}var P=h(w);function k(n,t){return n===t}var F=h(k);function I(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var A=h(I);function W(n,t){return I(n)&&I(t)&&Number(n)>Number(t)}function R(n,t){return I(n)&&I(t)&&Number(n)>=Number(t)}function U(n){return!!Array.isArray(n)}var X=h(U);function D(n,t){return!!(U(t)||x(t)&&x(n))&&-1!==t.indexOf(n)}var L=h(D);function G(n,t){return I(n)&&I(t)&&Number(n)<=Number(t)}function j(n,t,r){return R(n,t)&&G(n,r)}var q=h(j);function B(n){return x(n)&&!n.trim()}var _=h(B);function K(n){return!!n===n}var H=h(K);function M(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function J(n){return"number"==typeof n}var V=h(J);function z(n){if(n){if(J(n))return 0===n;if(M(n,"length"))return m(n,0);if("object"==typeof n)return m(Object.keys(n),0)}return!0}var Y=h(z),Q=function(n){return!!I(n)&&0==n%2};function Z(n){return Number.isNaN(n)}var $=h(Z);function nn(n){return!!I(n)&&0>Number(n)}var tn=h(nn),rn=function(n){return!!I(n)&&0!=n%2},en=h(x);function un(n){return!!n}var on=h(un);function sn(n,t){return I(n)&&I(t)&&Number(n)<Number(t)}function an(n,t){return n.length>=Number(t)}function fn(n,t){return t instanceof RegExp?t.test(n):!!x(t)&&new RegExp(t).test(n)}var cn=h(fn);function ln(n,t){return I(n)&&I(t)&&Number(n)===Number(t)}var pn=h(ln);function vn(n,t){try{return t(n)}catch(n){return!1}}function dn(n,t){return n.length<Number(t)}function gn(n,t){return n.length<=Number(t)}function hn(n,t){return x(n)&&x(t)&&n.startsWith(t)}var mn=h(hn);function yn(n,t){throw Error(o(t,n))}function Nn(n){function t(t,i){var o,s,a=e();return t=r({},a||{},null!==(o=null==n?void 0:n(t,a))&&void 0!==o?o:t),o=u.ctx=Object.freeze(t),u.ancestry.unshift(o),i=i(o),u.ancestry.shift(),u.ctx=null!==(s=u.ancestry[0])&&void 0!==s?s:null,i}function e(){return u.ctx}var u={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:e,useX:function(n){var t;return null!==(t=u.ctx)&&void 0!==t?t:yn(o(n,"Context was used after it was closed"))}}}var bn=Nn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return function(n){return n?{value:n.value,meta:n.meta,parent:n.parent}:n}(t)}}):t:r(e,{parent:En})}));function En(){return null}function Cn(n,t){return l(u(n,(function(n,r,e){(e=bn.run({value:n,set:!0,meta:{index:e}},(function(){return p(t,n)}))).pass||r(e)})))}function Tn(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=bn.run({value:e,set:!0,meta:{key:r}},(function(){return p(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return f()}function Sn(n,t){var r=Tn(n,t);if(!r.pass)return r;for(var e in n)if(!M(t,e))return a();return f()}var On=r({condition:vn,doesNotEndWith:P,doesNotStartWith:mn,endsWith:w,equals:k,greaterThan:W,greaterThanOrEquals:R,gt:W,gte:R,inside:D,isArray:U,isBetween:j,isBlank:B,isBoolean:K,isEmpty:z,isEven:Q,isFalsy:on,isNaN:Z,isNegative:nn,isNotArray:X,isNotBetween:q,isNotBlank:_,isNotBoolean:H,isNotEmpty:Y,isNotNaN:$,isNotNull:C,isNotNumber:V,isNotNumeric:A,isNotString:en,isNotUndefined:S,isNull:E,isNumber:J,isNumeric:I,isOdd:rn,isPositive:tn,isString:x,isTruthy:un,isUndefined:T,lengthEquals:m,lengthNotEquals:y,lessThan:sn,lessThanOrEquals:G,longerThan:N,longerThanOrEquals:an,lt:sn,lte:G,matches:fn,notEquals:F,notInside:L,notMatches:cn,numberEquals:ln,numberNotEquals:pn,shorterThan:dn,shorterThanOrEquals:gn,startsWith:hn},{allOf:v,anyOf:d,noneOf:g,oneOf:b,optional:O},{shape:Sn,loose:Tn,isArrayOf:Cn});function xn(n){return On[n]}function wn(n){for(var t in On){var r=xn(t);e(r)&&n(t,r)}}function Pn(){return"function"==typeof Proxy}function kn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return Fn(n),K(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u)))}function Fn(n){K(n)||n&&K(n.pass)||yn("Incorrect return value for rule: "+JSON.stringify(n))}function In(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=kn.apply(void 0,t([bn.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!z(o.message))throw o.message;yn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!Pn())return wn((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=xn(t))return r(u,n,t)}});return u}function An(n){var r,e=[];return function n(o){return function(){for(var a=[],f=0;f<arguments.length;f++)a[f]=arguments[f];var c=xn(o);e.push((function(n){return kn.apply(void 0,t([c.apply(void 0,t([n],a)),o,n],a))}));var p={run:function(n){return l(u(e,(function(t,e){var u,o=bn.run({value:n},(function(){return t(n)}));o.pass||e(s(!!o.pass,null!==(u=i(r,n,o.message))&&void 0!==u?u:o.message))})))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return Pn()?p=new Proxy(p,{get:function(t,r){return xn(r)?n(r):t[r]}}):(wn((function(t){p[t]=n(t)})),p)}}(n)}function Wn(n){var t,r={};for(t in n)r[t]=Xn.optional(n[t]);return r}var Rn,Un,Xn=(Rn=n({context:function(){return bn.useX()},extend:function(n){r(On,n)}},{partial:Wn}),Pn()?new Proxy(r(In,Rn),{get:function(n,t){return t in n?n[t]:xn(t)?An(t):void 0}}):(wn((function(n){Rn[n]=An(n)})),Rn)),Dn=function(n){return function(){return""+n++}}(0);function Ln(n){return[].concat(n)}function Gn(n){return(n=Ln(n))[n.length-1]}function jn(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return Gn(t)},getCursor:function(){return Ln(t)},next:function(){return t[t.length-1]++,Gn(t)},removeLevel:function(){t.pop()},reset:n}}!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.GROUP=4]="GROUP"}(Un||(Un={}));var qn=Nn((function(n,t){return t?null:r({},{isolate:{type:Un.DEFAULT},testCursor:jn(),exclusion:{tests:{},groups:{}}},n)}));function Bn(n,t){return n.map((function(n){return U(n)?Bn(n,t):t(n)}))}function _n(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];U(u)?r.push(_n(u,t)):t(u)&&r.push(u)}return r}function Kn(n,t,r){return Jn(n,t)[Gn(t)]=r,n}function Hn(n){return Ln(n).reduce((function(n,t){return U(t)?n.concat(Hn(t)):Ln(n).concat(t)}),[])}function Mn(n,t){return Jn(n,t).splice(t[Gn(t)],1),n}function Jn(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=o(n[e],[]),n=n[e]}return n}function Vn(n){void 0===n&&(n=1);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),N(t,n)&&(t.length=n),u)};return r.invalidate=function(n){var r=t.findIndex((function(t){var r=t[0];return m(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<r&&t.splice(r,1)},r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return m(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function zn(){return qn.useX().stateRef}function Yn(){return zn().suiteId()}function Qn(){return zn().testCallbacks()}function Zn(){return zn().optionalFields()}function $n(){return zn().testObjects()}function nt(){(0,$n()[1])((function(n){return{prev:n.prev,current:Ln(n.current)}}))}function tt(n){(0,$n()[1])((function(t){return{prev:t.prev,current:Ln(n(t.current))}}))}function rt(){return Hn(_n($n()[0].current,(function(n){return n.isPending()})))}var et=Vn();function ut(){var n=$n()[0].current;return et([n],(function(){return Hn(n)}))}function it(){return qn.useX().testCursor.getCursor()}function ot(){return qn.useX().testCursor.cursorAt()}function st(){return qn.useX().testCursor.next()}function at(n,t){if(n=void 0===(n=n.type)?Un.DEFAULT:n,e(t)){var r=it();return qn.run({isolate:{type:n}},(function(){qn.useX().testCursor.addLevel(),tt((function(n){return Kn(n,r,[])}));var n=t();return qn.useX().testCursor.removeLevel(),st(),n}))}}function ft(n,t){return!!t&&!ct(n,t)}function ct(n,t){return!(!t||n.fieldName!==t)}function lt(){var n=Zn()[0];if(!z(n)){var t={};tt((function(r){return Bn(r,(function(r){var u=r.fieldName;if(t.hasOwnProperty(u))t[r.fieldName]&&r.omit();else{var i=n[u];e(i)&&(t[u]=i(),t[r.fieldName]&&r.omit())}return r}))}))}}function pt(n){var t=rt();return!z(t)&&(n?t.some((function(t){return ct(t,n)})):Y(t))}function vt(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function dt(n,t){return function(n,t){return!!n!=!!t}("warnings"===n,t.warns)}function gt(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return function(n,t,r,e){return!!(function(n,t){return!(!t||n.groupName===t)}(n,r)||ft(n,e)||dt(t,n))}(r,t,i,o)||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function ht(n,t){return t?n[t]:n}function mt(n){return Nt("errors",n)}function yt(n){return Nt("warnings",n)}function Nt(n,t){return ht(n=gt(n,ut(),{fieldName:t}),t)}function bt(n,t){return ht(n=Ct("errors",n,t),t)}function Et(n,t){return ht(n=Ct("warnings",n,t),t)}function Ct(n,t,r){return t||yn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),gt(n,ut(),{group:t,fieldName:r})}function Tt(n,t,r){return!(!n.hasFailures()||ft(n,r)||dt(t,n))}function St(n){return xt("errors",n)}function Ot(n){return xt("warnings",n)}function xt(n,t){return ut().some((function(r){return Tt(r,n,t)}))}function wt(n,t){return kt("errors",n,t)}function Pt(n,t){return kt("warnings",n,t)}function kt(n,t,r){return ut().some((function(e){return t===e.groupName&&Tt(e,n,r)}))}function Ft(n,t){return!!function(n){var t=ut().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return!!n&&!!t[n]}(t)||!n.hasErrors(t)&&(!(z(ut())||function(n,t){return!!t&&z(n.tests[t])}(n,t)||function(n){var t=Zn()[0];return Y(rt().filter((function(r){return!ft(r,n)&&!0!==t[r.fieldName]})))}(t))&&function(n){var t=ut(),r=Zn()[0];return t.every((function(t){return!!ft(t,n)||(!0===r[t.fieldName]||t.isTested()||t.isOmitted())}))}(t))}var It=Vn(20);function At(){var n=ut(),t={stateRef:zn()};return It([n],qn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return ut().forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=vt(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=vt(n.groups[e],t))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(n)}(),{getErrors:qn.bind(t,mt),getErrorsByGroup:qn.bind(t,bt),getWarnings:qn.bind(t,yt),getWarningsByGroup:qn.bind(t,Et),hasErrors:qn.bind(t,St),hasErrorsByGroup:qn.bind(t,wt),hasWarnings:qn.bind(t,Ot),hasWarningsByGroup:qn.bind(t,Pt),isValid:qn.bind(t,(function(n){return Ft(At(),n)}))})})))}var Wt=Vn(20);function Rt(){var n=ut(),t={stateRef:zn()};return Wt([n],qn.bind(t,(function(){return r({},At(),{done:qn.bind(t,Lt)})})))}function Ut(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function Xt(n){return!(pt()&&(!n||pt(n)))}var Dt,Lt=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=Rt(),Ut(r,n,t))return t;var e=function(){return r(At())};return Xt(n)?(e(),t):(Gt(e,n),t)};function Gt(n,t){var r=qn.bind({},n);(0,Qn()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function jt(n){return n.forEach((function(n){return n()}))}function qt(){var n=function(){var n={};return{emit:function(t,r){n[t]&&n[t].forEach((function(n){n(r)}))},on:function(t,r){return n[t]||(n[t]=[]),n[t].push(r),{off:function(){n[t]=n[t].filter((function(n){return n!==r}))}}}}}();return n.on(Dt.TEST_COMPLETED,(function(n){n.isCanceled()||(n.done(),function(n){var t=Qn()[0].fieldCallbacks;n&&!pt(n)&&U(t[n])&&jt(t[n])}(n.fieldName),function(){var n=Qn()[0].doneCallbacks;pt()||jt(n)}())})),n}function Bt(){var n=qn.useX();return n.bus||yn(),n.bus}(Dt||(Dt={})).TEST_COMPLETED="test_completed";function _t(n){return Mt("only","tests",n)}function Kt(n){return Mt("skip","tests",n)}function Ht(n){var t=n.fieldName;n=n.groupName;var r=qn.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){if(function(n){var t=qn.useX().exclusion.groups;if(M(t,n))return!1===t[n];for(var r in t)if(!0===t[r])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!u&&(!!Jt(e)||!1===e[t])}return!u&&Jt(e)}function Mt(n,t,r){var e=qn.useX("hook called outside of a running suite.");r&&Ln(r).forEach((function(r){x(r)&&(e.exclusion[t][r]="only"===n)}))}function Jt(n){for(var t in n)if(!0===n[t])return!0;return!1}_t.group=function(n){return Mt("only","groups",n)},Kt.group=function(n){return Mt("skip","groups",n)};function Vt(n){yn("Wrong arguments passed to group. Group "+n+".")}function zt(n,t){return T(n)&&x(t)}var Yt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=Dn(),this.warns=!1,this.status=Qt,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){zt(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==ur||(this.status=n)},n.prototype.setPending=function(){this.setStatus(rr)},n.prototype.fail=function(){this.setStatus(this.warns?nr:$t)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(tr)},n.prototype.warn=function(){this.warns=!0},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(){this.setStatus(Zt)},n.prototype.cancel=function(){this.setStatus(er),nt()},n.prototype.omit=function(){this.setStatus(ur)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===rr},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.status===ur},n.prototype.isUntested=function(){return this.status===Qt},n.prototype.isFailing=function(){return this.status===$t},n.prototype.isCanceled=function(){return this.status===er},n.prototype.isSkipped=function(){return this.status===Zt},n.prototype.isPassing=function(){return this.status===tr},n.prototype.isWarning=function(){return this.status===nr},n}(),Qt="UNTESTED",Zt="SKIPPED",$t="FAILED",nr="WARNING",tr="PASSING",rr="PENDING",er="CANCELED",ur="OMITTED";function ir(n){return n&&e(n.then)}function or(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function sr(n){var t=n.asyncTest,r=n.message;if(ir(t)){var e=Bt().emit,u=zn(),i=qn.bind({stateRef:u},(function(){nt(),e(Dt.TEST_COMPLETED,n)}));u=qn.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=x(t)?t:r,n.fail(),i())}));try{t.then(i,u)}catch(n){u()}}}function ar(n){var t=Bt().emit,r=function(n){return qn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){zt(n.message,r)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{ir(r)?(n.asyncTest=r,n.setPending(),sr(n)):t(Dt.TEST_COMPLETED,n)}catch(t){yn("Your test function "+n.fieldName+" returned "+JSON.stringify(r)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}function fr(n){var t=$n(),r=t[1],e=t[0].prev;if(z(e))return cr(n),n;if(pr(t=lr(e),n)){for(function(n,t){qn.useX().isolate.type===Un.EACH||function(n,t){setTimeout((function(){yn(n,t)}),0)}("Vest Critical Error: Tests called in different order than previous run.\n expected: "+n.fieldName+"\n received: "+t.fieldName+"\n This usually happens when you conditionally call your tests using if/else.\n This might lead to unexpected validation results.\n Replacing if/else with skipWhen solves these issues.")}(t,n);pr(t,n);)t=$n()[0],t=lr(e=Mn(t.prev,it()));r((function(n){return{prev:e,current:n.current}}))}return cr(n=o(t,n)),n}function cr(n){var t=it();tt((function(r){return Kn(r,t,n)}))}function lr(n){return function(n,t){return Jn(n,t)[Gn(t)]}(n,it())}function pr(n,t){return Y(n)&&!or(n,t)}function vr(n){var t=fr(n);return Ht(n)?(n.skip(),st(),t):(function(n,t){t!==n&&or(n,t)&&n.isPending()&&n.cancel()}(t,n),cr(n),st(),function(n){n.isUntested()?ar(n):ir(n.asyncTest)&&(n.setPending(),sr(n))}(n),n)}function dr(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var e=qn.useX();return vr(t=new Yt(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var gr=r(dr,{each:function(n){return function(r){return U(r)||yn("test.each: Expected table to be an array."),function(e){for(var u=[],o=1;o<arguments.length;o++)u[o-1]=arguments[o];var s=(u=u.reverse())[0],a=u[1];return at({type:Un.EACH},(function(){return r.map((function(r){return r=Ln(r),n(i.apply(void 0,t([e],r)),i.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}))}}}(dr),memo:function(n){var t=Vn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Yn()[0];var i=ot(),o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),E(u=t.get(e))?t(e,(function(){return n(r,s,o)})):u[1].isCanceled()?(t.invalidate(e),t(e,(function(){return n(r,s,o)}))):vr(u[1])}}(dr)});exports.VERSION="4.0.0-dev-366a8b",exports.create=function(n){e(n)||yn("Suite initialization error. Expected `tests` to be a function.");var t=qt(),u=function(n){function t(n,t,e){return u.references.push(),r(n,i(t,e)),function(){return[u.references[n],function(t){return r(n,i(t,u.references[n]))}]}}function r(t,r){var i=u.references[t];u.references[t]=r,e(t=o[t][1])&&t(r,i),e(n)&&n()}var u={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){var n=u.references;u.references=[],o.forEach((function(r,e){return t(e,r[0],n[e])}))}}}(),s=function(n,t){return t=t.suiteId,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:o(null==n?void 0:n.current,[]),current:[]}}))}}(u,{suiteId:Dn()});return r(qn.bind({stateRef:s,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return u.reset(),at({type:Un.SUITE},(function(){n.apply(void 0,t)})),lt(),Rt()})),{get:qn.bind({stateRef:s},At),remove:qn.bind({stateRef:s},(function(n){ut().forEach((function(t){ct(t,n)&&(t.cancel(),function(n){tt((function(t){return _n(t,(function(t){return n!==t}))}))}(t))}))})),reset:u.reset})},exports.enforce=Xn,exports.group=function(n,t){x(n)||Vt("name must be a string"),e(t)||Vt("callback must be a function"),at({type:Un.GROUP},(function(){qn.run({groupName:n},t)}))},exports.only=_t,exports.optional=function(n){(0,Zn()[1])((function(t){if(U(n)||x(n))Ln(n).forEach((function(n){t[n]=!0}));else for(var r in n)t[r]=n[r];return t}))},exports.skip=Kt,exports.skipWhen=function(n,t){at({type:Un.SKIP_WHEN},(function(){qn.run({skipped:i(n)},(function(){return t()}))}))},exports.test=gr,exports.warn=function(){var n=qn.useX("warn hook called outside of a running suite.");n.currentTest||yn("warn called outside of a test."),n.currentTest.warn()};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=function(){return(n=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)};function t(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||t)}var r=Object.assign;function e(n){return"function"==typeof n}function u(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function i(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return e(n)?n.apply(void 0,t):n}function o(n,t){var r;return null!==(r=i(n))&&void 0!==r?r:t}function s(n,t){return n={pass:n},t&&(n.message=t),n}function a(){return s(!1)}function f(){return s(!0)}function c(n){return o(n,a())}function l(n){return o(n,f())}function p(n,t){try{return n.run(t)}catch(n){return a()}}function v(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){(t=p(t,n)).pass||r(t)})))}function d(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return c(u(t,(function(t,r){(t=p(t,n)).pass&&r(t)})))}function g(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){p(t,n).pass&&r(a())})))}function h(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function m(n,t){return n.length===Number(t)}var y=h(m);function N(n,t){return n.length>Number(t)}function b(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(N(e,1))return!1;(t=p(t,n)).pass&&e.push(t)})),s(m(e,1))}function E(n){return null===n}var C=h(E);function T(n){return void 0===n}var S=h(T);function O(n,t){return T(n)||E(n)?f():p(t,n)}function x(n){return String(n)===n}function w(n,t){return x(n)&&x(t)&&n.endsWith(t)}var P=h(w);function k(n,t){return n===t}var F=h(k);function I(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var A=h(I);function W(n,t){return I(n)&&I(t)&&Number(n)>Number(t)}function R(n,t){return I(n)&&I(t)&&Number(n)>=Number(t)}function U(n){return!!Array.isArray(n)}var X=h(U);function D(n,t){return!!(U(t)||x(t)&&x(n))&&-1!==t.indexOf(n)}var L=h(D);function G(n,t){return I(n)&&I(t)&&Number(n)<=Number(t)}function j(n,t,r){return R(n,t)&&G(n,r)}var q=h(j);function B(n){return x(n)&&!n.trim()}var _=h(B);function K(n){return!!n===n}var H=h(K);function M(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function J(n){return"number"==typeof n}var V=h(J);function z(n){if(n){if(J(n))return 0===n;if(M(n,"length"))return m(n,0);if("object"==typeof n)return m(Object.keys(n),0)}return!0}var Y=h(z),Q=function(n){return!!I(n)&&0==n%2};function Z(n){return Number.isNaN(n)}var $=h(Z);function nn(n){return!!I(n)&&0>Number(n)}var tn=h(nn),rn=function(n){return!!I(n)&&0!=n%2},en=h(x);function un(n){return!!n}var on=h(un);function sn(n,t){return I(n)&&I(t)&&Number(n)<Number(t)}function an(n,t){return n.length>=Number(t)}function fn(n,t){return t instanceof RegExp?t.test(n):!!x(t)&&new RegExp(t).test(n)}var cn=h(fn);function ln(n,t){return I(n)&&I(t)&&Number(n)===Number(t)}var pn=h(ln);function vn(n,t){try{return t(n)}catch(n){return!1}}function dn(n,t){return n.length<Number(t)}function gn(n,t){return n.length<=Number(t)}function hn(n,t){return x(n)&&x(t)&&n.startsWith(t)}var mn=h(hn);function yn(n,t){throw Error(o(t,n))}function Nn(n){function t(t,i){var o,s,a=e();return t=r({},a||{},null!==(o=null==n?void 0:n(t,a))&&void 0!==o?o:t),o=u.ctx=Object.freeze(t),u.ancestry.unshift(o),i=i(o),u.ancestry.shift(),u.ctx=null!==(s=u.ancestry[0])&&void 0!==s?s:null,i}function e(){return u.ctx}var u={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:e,useX:function(n){var t;return null!==(t=u.ctx)&&void 0!==t?t:yn(o(n,"Context was used after it was closed"))}}}var bn=Nn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return function(n){return n?{value:n.value,meta:n.meta,parent:n.parent}:n}(t)}}):t:r(e,{parent:En})}));function En(){return null}function Cn(n,t){return l(u(n,(function(n,r,e){(e=bn.run({value:n,set:!0,meta:{index:e}},(function(){return p(t,n)}))).pass||r(e)})))}function Tn(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=bn.run({value:e,set:!0,meta:{key:r}},(function(){return p(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return f()}function Sn(n,t){var r=Tn(n,t);if(!r.pass)return r;for(var e in n)if(!M(t,e))return a();return f()}var On=r({condition:vn,doesNotEndWith:P,doesNotStartWith:mn,endsWith:w,equals:k,greaterThan:W,greaterThanOrEquals:R,gt:W,gte:R,inside:D,isArray:U,isBetween:j,isBlank:B,isBoolean:K,isEmpty:z,isEven:Q,isFalsy:on,isNaN:Z,isNegative:nn,isNotArray:X,isNotBetween:q,isNotBlank:_,isNotBoolean:H,isNotEmpty:Y,isNotNaN:$,isNotNull:C,isNotNumber:V,isNotNumeric:A,isNotString:en,isNotUndefined:S,isNull:E,isNumber:J,isNumeric:I,isOdd:rn,isPositive:tn,isString:x,isTruthy:un,isUndefined:T,lengthEquals:m,lengthNotEquals:y,lessThan:sn,lessThanOrEquals:G,longerThan:N,longerThanOrEquals:an,lt:sn,lte:G,matches:fn,notEquals:F,notInside:L,notMatches:cn,numberEquals:ln,numberNotEquals:pn,shorterThan:dn,shorterThanOrEquals:gn,startsWith:hn},{allOf:v,anyOf:d,noneOf:g,oneOf:b,optional:O},{shape:Sn,loose:Tn,isArrayOf:Cn});function xn(n){return On[n]}function wn(n){for(var t in On){var r=xn(t);e(r)&&n(t,r)}}function Pn(){return"function"==typeof Proxy}function kn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return Fn(n),K(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u)))}function Fn(n){K(n)||n&&K(n.pass)||yn("Incorrect return value for rule: "+JSON.stringify(n))}function In(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=kn.apply(void 0,t([bn.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!z(o.message))throw o.message;yn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!Pn())return wn((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=xn(t))return r(u,n,t)}});return u}function An(n){var r,e=[];return function n(o){return function(){for(var a=[],f=0;f<arguments.length;f++)a[f]=arguments[f];var c=xn(o);e.push((function(n){return kn.apply(void 0,t([c.apply(void 0,t([n],a)),o,n],a))}));var p={run:function(n){return l(u(e,(function(t,e){var u,o=bn.run({value:n},(function(){return t(n)}));o.pass||e(s(!!o.pass,null!==(u=i(r,n,o.message))&&void 0!==u?u:o.message))})))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return Pn()?p=new Proxy(p,{get:function(t,r){return xn(r)?n(r):t[r]}}):(wn((function(t){p[t]=n(t)})),p)}}(n)}function Wn(n){var t,r={};for(t in n)r[t]=Xn.optional(n[t]);return r}var Rn,Un,Xn=(Rn=n({context:function(){return bn.useX()},extend:function(n){r(On,n)}},{partial:Wn}),Pn()?new Proxy(r(In,Rn),{get:function(n,t){return t in n?n[t]:xn(t)?An(t):void 0}}):(wn((function(n){Rn[n]=An(n)})),Rn)),Dn=function(n){return function(){return""+n++}}(0);function Ln(n){return[].concat(n)}function Gn(n){return(n=Ln(n))[n.length-1]}function jn(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return Gn(t)},getCursor:function(){return Ln(t)},next:function(){return t[t.length-1]++,Gn(t)},removeLevel:function(){t.pop()},reset:n}}!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.GROUP=4]="GROUP"}(Un||(Un={}));var qn=Nn((function(n,t){return t?null:r({},{isolate:{type:Un.DEFAULT},testCursor:jn(),exclusion:{tests:{},groups:{}}},n)}));function Bn(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];U(u)?r.push(Bn(u,t)):(u=t(u),C(u)&&r.push(u))}return r}function _n(n,t,r){return Hn(n,t)[Gn(t)]=r,n}function Kn(n){return Ln(n).reduce((function(n,t){return U(t)?n.concat(Kn(t)):Ln(n).concat(t)}),[])}function Hn(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=o(n[e],[]),n=n[e]}return n}function Mn(n){void 0===n&&(n=1);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),N(t,n)&&(t.length=n),u)};return r.invalidate=function(n){var r=t.findIndex((function(t){var r=t[0];return m(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<r&&t.splice(r,1)},r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return m(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function Jn(){return qn.useX().stateRef}function Vn(){return Jn().suiteId()}function zn(){return Jn().testCallbacks()}function Yn(){return Jn().optionalFields()}function Qn(){return Jn().testObjects()}function Zn(){(0,Qn()[1])((function(n){return{prev:n.prev,current:Ln(n.current)}}))}function $n(n){(0,Qn()[1])((function(t){return{prev:t.prev,current:Ln(n(t.current))}}))}function nt(){return Kn(Bn(Qn()[0].current,(function(n){return n.isPending()?n:null})))}var tt=Mn();function rt(){var n=Qn()[0].current;return tt([n],(function(){return Kn(n)}))}function et(){return qn.useX().testCursor.getCursor()}function ut(){return qn.useX().testCursor.cursorAt()}function it(){return qn.useX().testCursor.next()}function ot(n,t){if(n=void 0===(n=n.type)?Un.DEFAULT:n,e(t)){var r=et();return qn.run({isolate:{type:n}},(function(){qn.useX().testCursor.addLevel(),$n((function(n){return _n(n,r,[])}));var n=t();return qn.useX().testCursor.removeLevel(),it(),n}))}}function st(n,t){return!!t&&!at(n,t)}function at(n,t){return!(!t||n.fieldName!==t)}function ft(){var n=Yn()[0];if(!z(n)){var t={};$n((function(r){return Bn(r,(function(r){var u=r.fieldName;if(t.hasOwnProperty(u))t[r.fieldName]&&r.omit();else{var i=n[u];e(i)&&(t[u]=i(),t[r.fieldName]&&r.omit())}return r}))}))}}function ct(n){var t=nt();return!z(t)&&(n?t.some((function(t){return at(t,n)})):Y(t))}function lt(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function pt(n,t){return function(n,t){return!!n!=!!t}("warnings"===n,t.warns)}function vt(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return function(n,t,r,e){return!!(function(n,t){return!(!t||n.groupName===t)}(n,r)||st(n,e)||pt(t,n))}(r,t,i,o)||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function dt(n,t){return t?n[t]:n}function gt(n){return mt("errors",n)}function ht(n){return mt("warnings",n)}function mt(n,t){return dt(n=vt(n,rt(),{fieldName:t}),t)}function yt(n,t){return dt(n=bt("errors",n,t),t)}function Nt(n,t){return dt(n=bt("warnings",n,t),t)}function bt(n,t,r){return t||yn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),vt(n,rt(),{group:t,fieldName:r})}function Et(n,t,r){return!(!n.hasFailures()||st(n,r)||pt(t,n))}function Ct(n){return St("errors",n)}function Tt(n){return St("warnings",n)}function St(n,t){return rt().some((function(r){return Et(r,n,t)}))}function Ot(n,t){return wt("errors",n,t)}function xt(n,t){return wt("warnings",n,t)}function wt(n,t,r){return rt().some((function(e){return t===e.groupName&&Et(e,n,r)}))}function Pt(n,t){return!!function(n){var t=rt().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return!!n&&!!t[n]}(t)||!n.hasErrors(t)&&(!(z(rt())||function(n,t){return!!t&&z(n.tests[t])}(n,t)||function(n){var t=Yn()[0];return Y(nt().filter((function(r){return!st(r,n)&&!0!==t[r.fieldName]})))}(t))&&function(n){var t=rt(),r=Yn()[0];return t.every((function(t){return!!st(t,n)||(!0===r[t.fieldName]||t.isTested()||t.isOmitted())}))}(t))}var kt=Mn(20);function Ft(){var n=rt(),t={stateRef:Jn()};return kt([n],qn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return rt().forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=lt(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=lt(n.groups[e],t))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(n)}(),{getErrors:qn.bind(t,gt),getErrorsByGroup:qn.bind(t,yt),getWarnings:qn.bind(t,ht),getWarningsByGroup:qn.bind(t,Nt),hasErrors:qn.bind(t,Ct),hasErrorsByGroup:qn.bind(t,Ot),hasWarnings:qn.bind(t,Tt),hasWarningsByGroup:qn.bind(t,xt),isValid:qn.bind(t,(function(n){return Pt(Ft(),n)}))})})))}var It=Mn(20);function At(){var n=rt(),t={stateRef:Jn()};return It([n],qn.bind(t,(function(){return r({},Ft(),{done:qn.bind(t,Xt)})})))}function Wt(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function Rt(n){return!(ct()&&(!n||ct(n)))}var Ut,Xt=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=At(),Wt(r,n,t))return t;var e=function(){return r(Ft())};return Rt(n)?(e(),t):(Dt(e,n),t)};function Dt(n,t){var r=qn.bind({},n);(0,zn()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function Lt(n){return n.forEach((function(n){return n()}))}function Gt(){var n=function(){var n={};return{emit:function(t,r){n[t]&&n[t].forEach((function(n){n(r)}))},on:function(t,r){return n[t]||(n[t]=[]),n[t].push(r),{off:function(){n[t]=n[t].filter((function(n){return n!==r}))}}}}}();return n.on(Ut.TEST_COMPLETED,(function(n){n.isCanceled()||(n.done(),function(n){var t=zn()[0].fieldCallbacks;n&&!ct(n)&&U(t[n])&&Lt(t[n])}(n.fieldName),function(){var n=zn()[0].doneCallbacks;ct()||Lt(n)}())})),n}function jt(){var n=qn.useX();return n.bus||yn(),n.bus}(Ut||(Ut={})).TEST_COMPLETED="test_completed";function qt(n){return Kt("only","tests",n)}function Bt(n){return Kt("skip","tests",n)}function _t(n){var t=n.fieldName;n=n.groupName;var r=qn.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){if(function(n){var t=qn.useX().exclusion.groups;if(M(t,n))return!1===t[n];for(var r in t)if(!0===t[r])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!u&&(!!Ht(e)||!1===e[t])}return!u&&Ht(e)}function Kt(n,t,r){var e=qn.useX("hook called outside of a running suite.");r&&Ln(r).forEach((function(r){x(r)&&(e.exclusion[t][r]="only"===n)}))}function Ht(n){for(var t in n)if(!0===n[t])return!0;return!1}qt.group=function(n){return Kt("only","groups",n)},Bt.group=function(n){return Kt("skip","groups",n)};function Mt(n){yn("Wrong arguments passed to group. Group "+n+".")}function Jt(n,t){return T(n)&&x(t)}var Vt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=Dn(),this.warns=!1,this.status=zt,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){Jt(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==rr||(this.status=n)},n.prototype.setPending=function(){this.setStatus(nr)},n.prototype.fail=function(){this.setStatus(this.warns?Zt:Qt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus($t)},n.prototype.warn=function(){this.warns=!0},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(){this.setStatus(Yt)},n.prototype.cancel=function(){this.setStatus(tr),Zn()},n.prototype.omit=function(){this.setStatus(rr)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===nr},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.status===rr},n.prototype.isUntested=function(){return this.status===zt},n.prototype.isFailing=function(){return this.status===Qt},n.prototype.isCanceled=function(){return this.status===tr},n.prototype.isSkipped=function(){return this.status===Yt},n.prototype.isPassing=function(){return this.status===$t},n.prototype.isWarning=function(){return this.status===Zt},n}(),zt="UNTESTED",Yt="SKIPPED",Qt="FAILED",Zt="WARNING",$t="PASSING",nr="PENDING",tr="CANCELED",rr="OMITTED";function er(n){return n&&e(n.then)}function ur(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function ir(n){var t=n.asyncTest,r=n.message;if(er(t)){var e=jt().emit,u=Jn(),i=qn.bind({stateRef:u},(function(){Zn(),e(Ut.TEST_COMPLETED,n)}));u=qn.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=x(t)?t:r,n.fail(),i())}));try{t.then(i,u)}catch(n){u()}}}function or(n){var t=jt().emit,r=function(n){return qn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){Jt(n.message,r)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{er(r)?(n.asyncTest=r,n.setPending(),ir(n)):t(Ut.TEST_COMPLETED,n)}catch(t){yn("Your test function "+n.fieldName+" returned "+JSON.stringify(r)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}function sr(n){var t=Qn(),r=t[1],e=t[0].prev;if(z(e))return ar(n),n;if(function(n,t){return Y(n)&&!ur(n,t)}(t=function(n){var t=et();return function(n,t){return Hn(n,t)[Gn(t)]}(n,t)}(e),n)){!function(n,t){qn.useX().isolate.type===Un.EACH||function(n,t){setTimeout((function(){yn(n,t)}),0)}("Vest Critical Error: Tests called in different order than previous run.\n expected: "+n.fieldName+"\n received: "+t.fieldName+"\n This happens when you conditionally call your tests using if/else.\n This might lead to incorrect validation results.\n Replacing if/else with skipWhen solves these issues.")}(t,n),t=Hn(e,et());var u=ut();t.splice(u),r((function(n){return{prev:e,current:n.current}})),t=null}return ar(n=o(t,n)),n}function ar(n){var t=et();$n((function(r){return _n(r,t,n)}))}function fr(n){var t=sr(n);return _t(n)?(n.skip(),it(),t):(function(n,t){t!==n&&ur(n,t)&&n.isPending()&&n.cancel()}(t,n),ar(n),it(),function(n){n.isUntested()?or(n):er(n.asyncTest)&&(n.setPending(),ir(n))}(n),n)}function cr(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var e=qn.useX();return fr(t=new Vt(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var lr=r(cr,{each:function(n){return function(r){return U(r)||yn("test.each: Expected table to be an array."),function(e){for(var u=[],o=1;o<arguments.length;o++)u[o-1]=arguments[o];var s=(u=u.reverse())[0],a=u[1];return ot({type:Un.EACH},(function(){return r.map((function(r){return r=Ln(r),n(i.apply(void 0,t([e],r)),i.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}))}}}(cr),memo:function(n){var t=Mn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Vn()[0];var i=ut(),o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),E(u=t.get(e))?t(e,(function(){return n(r,s,o)})):u[1].isCanceled()?(t.invalidate(e),t(e,(function(){return n(r,s,o)}))):fr(u[1])}}(cr)});exports.VERSION="4.0.0-dev-8851ff",exports.create=function(n){e(n)||yn("Suite initialization error. Expected `tests` to be a function.");var t=Gt(),u=function(n){function t(n,t,e){return u.references.push(),r(n,i(t,e)),function(){return[u.references[n],function(t){return r(n,i(t,u.references[n]))}]}}function r(t,r){var i=u.references[t];u.references[t]=r,e(t=o[t][1])&&t(r,i),e(n)&&n()}var u={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){var n=u.references;u.references=[],o.forEach((function(r,e){return t(e,r[0],n[e])}))}}}(),o=function(n,t){return t=t.suiteId,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}(u,{suiteId:Dn()});return r(qn.bind({stateRef:o,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return u.reset(),ot({type:Un.SUITE},(function(){n.apply(void 0,t)})),ft(),At()})),{get:qn.bind({stateRef:o},Ft),remove:qn.bind({stateRef:o},(function(n){rt().forEach((function(t){at(t,n)&&(t.cancel(),function(n){$n((function(t){return Bn(t,(function(t){return n!==t?t:null}))}))}(t))}))})),reset:u.reset})},exports.enforce=Xn,exports.group=function(n,t){x(n)||Mt("name must be a string"),e(t)||Mt("callback must be a function"),ot({type:Un.GROUP},(function(){qn.run({groupName:n},t)}))},exports.only=qt,exports.optional=function(n){(0,Yn()[1])((function(t){if(U(n)||x(n))Ln(n).forEach((function(n){t[n]=!0}));else for(var r in n)t[r]=n[r];return t}))},exports.skip=Bt,exports.skipWhen=function(n,t){ot({type:Un.SKIP_WHEN},(function(){qn.run({skipped:i(n)},(function(){return t()}))}))},exports.test=lr,exports.warn=function(){var n=qn.useX("warn hook called outside of a running suite.");n.currentTest||yn("warn called outside of a test."),n.currentTest.warn()};
|
|
@@ -881,7 +881,7 @@ function createStateRef(state, _a) {
|
|
|
881
881
|
}); }),
|
|
882
882
|
testObjects: state.registerStateKey(function (prev) {
|
|
883
883
|
return {
|
|
884
|
-
prev:
|
|
884
|
+
prev: (prev ? prev.current : []),
|
|
885
885
|
current: []
|
|
886
886
|
};
|
|
887
887
|
})
|
|
@@ -945,23 +945,21 @@ var ctx = createContext(function (ctxRef, parentContext) {
|
|
|
945
945
|
}, ctxRef);
|
|
946
946
|
});
|
|
947
947
|
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
}
|
|
953
|
-
return callback(item);
|
|
954
|
-
});
|
|
955
|
-
}
|
|
956
|
-
function filter(array, predicate) {
|
|
948
|
+
// This is sort of a map/filter in one function.
|
|
949
|
+
// Normally, behaves like a nested-array map
|
|
950
|
+
// Returning `null` will drop the element from the array
|
|
951
|
+
function transform(array, cb) {
|
|
957
952
|
var res = [];
|
|
958
953
|
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
|
|
959
954
|
var v = array_1[_i];
|
|
960
955
|
if (isArray(v)) {
|
|
961
|
-
res.push(
|
|
956
|
+
res.push(transform(v, cb));
|
|
962
957
|
}
|
|
963
|
-
else
|
|
964
|
-
|
|
958
|
+
else {
|
|
959
|
+
var output = cb(v);
|
|
960
|
+
if (isNotNull(output)) {
|
|
961
|
+
res.push(output);
|
|
962
|
+
}
|
|
965
963
|
}
|
|
966
964
|
}
|
|
967
965
|
return res;
|
|
@@ -982,11 +980,6 @@ function flatten(values) {
|
|
|
982
980
|
return asArray(acc).concat(value);
|
|
983
981
|
}, []);
|
|
984
982
|
}
|
|
985
|
-
function removeAtPath(array, path) {
|
|
986
|
-
var current = getCurrent(array, path);
|
|
987
|
-
current.splice(path[last(path)], 1);
|
|
988
|
-
return array;
|
|
989
|
-
}
|
|
990
983
|
function getCurrent(array, path) {
|
|
991
984
|
var current = array;
|
|
992
985
|
for (var _i = 0, _a = path.slice(0, -1); _i < _a.length; _i++) {
|
|
@@ -1077,7 +1070,9 @@ function useSetTests(handler) {
|
|
|
1077
1070
|
// Derived state
|
|
1078
1071
|
function useAllIncomplete() {
|
|
1079
1072
|
var current = useTestObjects()[0].current;
|
|
1080
|
-
return flatten(
|
|
1073
|
+
return flatten(transform(current, function (testObject) {
|
|
1074
|
+
return testObject.isPending() ? testObject : null;
|
|
1075
|
+
}));
|
|
1081
1076
|
}
|
|
1082
1077
|
function useOmittedFields() {
|
|
1083
1078
|
var testObjects = useTestsFlat();
|
|
@@ -1151,7 +1146,7 @@ function omitOptionalTests() {
|
|
|
1151
1146
|
}
|
|
1152
1147
|
var shouldOmit = {};
|
|
1153
1148
|
useSetTests(function (tests) {
|
|
1154
|
-
return
|
|
1149
|
+
return transform(tests, function (testObject) {
|
|
1155
1150
|
var fieldName = testObject.fieldName;
|
|
1156
1151
|
if (shouldOmit.hasOwnProperty(fieldName)) {
|
|
1157
1152
|
omit(testObject);
|
|
@@ -1527,7 +1522,9 @@ function deferDoneCallback(doneCallback, fieldName) {
|
|
|
1527
1522
|
* Removes test object from suite state
|
|
1528
1523
|
*/
|
|
1529
1524
|
function removeTestFromState (testObject) {
|
|
1530
|
-
useSetTests(function (tests) {
|
|
1525
|
+
useSetTests(function (tests) {
|
|
1526
|
+
return transform(tests, function (test) { return (testObject !== test ? test : null); });
|
|
1527
|
+
});
|
|
1531
1528
|
}
|
|
1532
1529
|
|
|
1533
1530
|
function createBus() {
|
|
@@ -2015,7 +2012,16 @@ function registerTest(testObject) {
|
|
|
2015
2012
|
}
|
|
2016
2013
|
}
|
|
2017
2014
|
|
|
2018
|
-
|
|
2015
|
+
/**
|
|
2016
|
+
* This module serves as the "collision detection" mechanism for Vest.
|
|
2017
|
+
* It is used to ensure that tests are not called in a different order than
|
|
2018
|
+
* they were called in the previous run.
|
|
2019
|
+
* If they are, it will throw a deferred error unless explicitly allowed.
|
|
2020
|
+
*
|
|
2021
|
+
* For now it seems pretty safe, and it covers most common use cases, but it can
|
|
2022
|
+
* be improved in the future both in terms of performance and scenarios it covers.
|
|
2023
|
+
*/
|
|
2024
|
+
// eslint-disable-next-line max-statements, max-lines-per-function
|
|
2019
2025
|
function useTestAtCursor(newTestObject) {
|
|
2020
2026
|
var _a = useTestObjects(), testObjects = _a[0], setTestObjects = _a[1];
|
|
2021
2027
|
var prevTests = testObjects.prev;
|
|
@@ -2027,16 +2033,14 @@ function useTestAtCursor(newTestObject) {
|
|
|
2027
2033
|
if (shouldPurgePrevTest(prevTest, newTestObject)) {
|
|
2028
2034
|
throwTestOrderError(prevTest, newTestObject);
|
|
2029
2035
|
// Here we handle just the omission of tests in the middle of the test suite.
|
|
2030
|
-
// We need to also handle a case in which tests are added in between other tests
|
|
2031
|
-
//
|
|
2036
|
+
// We need to also handle a case in which tests are added in between other tests.
|
|
2037
|
+
// At the moment all we can do is just splice the tests out of the array when this happens.
|
|
2032
2038
|
// A viable solution would be to use something like React's key prop to identify tests regardless
|
|
2033
2039
|
// of their position in the suite. https://reactjs.org/docs/lists-and-keys.html#keys
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
}
|
|
2039
|
-
// We actually don't mind mutating the state directly (as we do above). There is no harm in it
|
|
2040
|
+
var current = getCurrent(prevTests, usePath());
|
|
2041
|
+
var cursorAt = useCursorAt();
|
|
2042
|
+
current.splice(cursorAt);
|
|
2043
|
+
// We actually don't mind mutating the state directly (as can be seen above). There is no harm in it
|
|
2040
2044
|
// since we're only touching the "prev" state. The reason we still use the setter function is
|
|
2041
2045
|
// to prevent future headaches if we ever do need to rely on prev-state immutability.
|
|
2042
2046
|
setTestObjects(function (_a) {
|
|
@@ -2046,6 +2050,8 @@ function useTestAtCursor(newTestObject) {
|
|
|
2046
2050
|
current: current
|
|
2047
2051
|
});
|
|
2048
2052
|
});
|
|
2053
|
+
// Need to see if this has any effect at all.
|
|
2054
|
+
prevTest = null;
|
|
2049
2055
|
}
|
|
2050
2056
|
var nextTest = defaultTo(prevTest, newTestObject);
|
|
2051
2057
|
useSetTestAtCursor(nextTest);
|
|
@@ -2068,7 +2074,7 @@ function throwTestOrderError(prevTest, newTestObject) {
|
|
|
2068
2074
|
if (shouldAllowReorder()) {
|
|
2069
2075
|
return;
|
|
2070
2076
|
}
|
|
2071
|
-
throwErrorDeferred("Vest Critical Error: Tests called in different order than previous run.\n expected: " + prevTest.fieldName + "\n received: " + newTestObject.fieldName + "\n This
|
|
2077
|
+
throwErrorDeferred("Vest Critical Error: Tests called in different order than previous run.\n expected: " + prevTest.fieldName + "\n received: " + newTestObject.fieldName + "\n This happens when you conditionally call your tests using if/else.\n This might lead to incorrect validation results.\n Replacing if/else with skipWhen solves these issues.");
|
|
2072
2078
|
}
|
|
2073
2079
|
|
|
2074
2080
|
function registerPrevRunTest(testObject) {
|
|
@@ -2168,6 +2174,6 @@ var test = assign(testBase, {
|
|
|
2168
2174
|
memo: bindTestMemo(testBase)
|
|
2169
2175
|
});
|
|
2170
2176
|
|
|
2171
|
-
var VERSION = "4.0.0-dev-
|
|
2177
|
+
var VERSION = "4.0.0-dev-8851ff";
|
|
2172
2178
|
|
|
2173
2179
|
export { VERSION, create, enforce, group, only, optional, skip, skipWhen, test, warn };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function n(){return(n=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)}function t(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||t)}var r=Object.assign;function e(n){return"function"==typeof n}function u(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function i(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return e(n)?n.apply(void 0,t):n}function o(n,t){var r;return null!==(r=i(n))&&void 0!==r?r:t}function s(n,t){return n={pass:n},t&&(n.message=t),n}function a(n,t){try{return n.run(t)}catch(n){return s(!1)}}function c(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function f(n,t){return n.length===Number(t)}var l=c(f);function p(n,t){return n.length>Number(t)}function v(n){return null===n}var d=c(v);function h(n){return void 0===n}var g=c(h);function m(n){return String(n)===n}function y(n,t){return m(n)&&m(t)&&n.endsWith(t)}var N=c(y);function b(n,t){return n===t}var E=c(b);function C(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var O=c(C);function T(n,t){return C(n)&&C(t)&&Number(n)>Number(t)}function w(n,t){return C(n)&&C(t)&&Number(n)>=Number(t)}function S(n){return!!Array.isArray(n)}var P=c(S);function x(n,t){return!!(S(t)||m(t)&&m(n))&&-1!==t.indexOf(n)}var k=c(x);function F(n,t){return C(n)&&C(t)&&Number(n)<=Number(t)}function A(n,t,r){return w(n,t)&&F(n,r)}var I=c(A);function W(n){return m(n)&&!n.trim()}var j=c(W);function R(n){return!!n===n}var X=c(R);function U(n){return"number"==typeof n}var D=c(U);function L(n){if(n){if(U(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return f(n,0);if("object"==typeof n)return f(Object.keys(n),0)}return!0}var G=c(L);function q(n){return Number.isNaN(n)}var B=c(q);function K(n){return!!C(n)&&0>Number(n)}var _=c(K),H=c(m);function M(n){return!!n}var J=c(M);function z(n,t){return C(n)&&C(t)&&Number(n)<Number(t)}function V(n,t){return t instanceof RegExp?t.test(n):!!m(t)&&new RegExp(t).test(n)}var Y=c(V);function Q(n,t){return C(n)&&C(t)&&Number(n)===Number(t)}var Z=c(Q);function $(n,t){return m(n)&&m(t)&&n.startsWith(t)}var nn=c($);function tn(n,t){throw Error(o(t,n))}function rn(n){function t(t,i){var o,s,a=e();return t=r({},a||{},null!==(o=null==n?void 0:n(t,a))&&void 0!==o?o:t),o=u.ctx=Object.freeze(t),u.ancestry.unshift(o),i=i(o),u.ancestry.shift(),u.ctx=null!==(s=u.ancestry[0])&&void 0!==s?s:null,i}function e(){return u.ctx}var u={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:e,useX:function(n){var t;return null!==(t=u.ctx)&&void 0!==t?t:tn(o(n,"Context was used after it was closed"))}}}var en=rn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:r(e,{parent:un})}));function un(){return null}function on(n,t){function r(r){var e=n[r],u=t[r];if(!(r=en.run({value:e,set:!0,meta:{key:r}},(function(){return a(u,e)}))).pass)return{value:r}}for(var e in t){var u=r(e);if("object"==typeof u)return u.value}return s(!0)}var sn=r({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:N,doesNotStartWith:nn,endsWith:y,equals:b,greaterThan:T,greaterThanOrEquals:w,gt:T,gte:w,inside:x,isArray:S,isBetween:A,isBlank:W,isBoolean:R,isEmpty:L,isEven:function(n){return!!C(n)&&0==n%2},isFalsy:J,isNaN:q,isNegative:K,isNotArray:P,isNotBetween:I,isNotBlank:j,isNotBoolean:X,isNotEmpty:G,isNotNaN:B,isNotNull:d,isNotNumber:D,isNotNumeric:O,isNotString:H,isNotUndefined:g,isNull:v,isNumber:U,isNumeric:C,isOdd:function(n){return!!C(n)&&0!=n%2},isPositive:_,isString:m,isTruthy:M,isUndefined:h,lengthEquals:f,lengthNotEquals:l,lessThan:z,lessThanOrEquals:F,longerThan:p,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:z,lte:F,matches:V,notEquals:E,notInside:k,notMatches:Y,numberEquals:Q,numberNotEquals:Z,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:$},{allOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass||r(t)})),s(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass&&r(t)})),s(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){a(t,n).pass&&r(s(!1))})),s(!0))},oneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(p(e,1))return!1;(t=a(t,n)).pass&&e.push(t)})),s(f(e,1))},optional:function(n,t){return h(n)||null===n?s(!0):a(t,n)}},{shape:function(n,t){var r=on(n,t);if(!r.pass)return r;for(var e in n)if(!Object.prototype.hasOwnProperty.call(t,e))return s(!1);return s(!0)},loose:on,isArrayOf:function(n,t){return o(u(n,(function(n,r,e){(e=en.run({value:n,set:!0,meta:{index:e}},(function(){return a(t,n)}))).pass||r(e)})),s(!0))}});function an(n){for(var t in sn){var r=sn[t];e(r)&&n(t,r)}}function cn(){return"function"==typeof Proxy}function fn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return R(n)||n&&R(n.pass)||tn("Incorrect return value for rule: "+JSON.stringify(n)),R(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u)))}function ln(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=fn.apply(void 0,t([en.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!L(o.message))throw o.message;tn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!cn())return an((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=sn[t])return r(u,n,t)}});return u}function pn(n){var r,e=[];return function n(a){return function(){for(var c=[],f=0;f<arguments.length;f++)c[f]=arguments[f];var l=sn[a];e.push((function(n){return fn.apply(void 0,t([l.apply(void 0,t([n],c)),a,n],c))}));var p={run:function(n){return o(u(e,(function(t,e){var u,o=en.run({value:n},(function(){return t(n)}));o.pass||e(s(!!o.pass,null!==(u=i(r,n,o.message))&&void 0!==u?u:o.message))})),s(!0))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return cn()?p=new Proxy(p,{get:function(t,r){return sn[r]?n(r):t[r]}}):(an((function(t){p[t]=n(t)})),p)}}(n)}function vn(n){var t,r={};for(t in n)r[t]=hn.optional(n[t]);return r}var dn,hn=(dn=n({context:function(){return en.useX()},extend:function(n){r(sn,n)}},{partial:vn}),cn()?new Proxy(r(ln,dn),{get:function(n,t){return t in n?n[t]:sn[t]?pn(t):void 0}}):(an((function(n){dn[n]=pn(n)})),dn)),gn=function(n){return function(){return""+n++}}(0);var mn,yn=mn||(mn={});function Nn(n){return(n=[].concat(n))[n.length-1]}function bn(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return Nn(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,Nn(t)},removeLevel:function(){t.pop()},reset:n}}yn[yn.DEFAULT=0]="DEFAULT",yn[yn.SUITE=1]="SUITE",yn[yn.EACH=2]="EACH",yn[yn.SKIP_WHEN=3]="SKIP_WHEN",yn[yn.GROUP=4]="GROUP";var En=rn((function(n,t){return t?null:r({},{isolate:{type:mn.DEFAULT},testCursor:bn(),exclusion:{tests:{},groups:{}}},n)}));function Cn(n,t){return n.map((function(n){return S(n)?Cn(n,t):t(n)}))}function On(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];S(u)?r.push(On(u,t)):t(u)&&r.push(u)}return r}function Tn(n){return[].concat(n).reduce((function(n,t){return S(t)?n.concat(Tn(t)):[].concat(n).concat(t)}),[])}function wn(n,t){return Sn(n,t).splice(t[Nn(t)],1),n}function Sn(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=o(n[e],[]),n=n[e]}return n}function Pn(n){function t(e,u){var i=t.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),p(r,n)&&(r.length=n),u)}void 0===n&&(n=1);var r=[];return t.invalidate=function(n){var t=r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<t&&r.splice(t,1)},t.get=function(n){return r[r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},t}function xn(){return En.useX().stateRef}function kn(){(0,xn().testObjects()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function Fn(n){(0,xn().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function An(){return Tn(On(xn().testObjects()[0].current,(function(n){return n.isPending()})))}var In=Pn();function Wn(){var n=xn().testObjects()[0].current;return In([n],(function(){return Tn(n)}))}function jn(){return En.useX().testCursor.getCursor()}function Rn(n,t){if(n=void 0===(n=n.type)?mn.DEFAULT:n,e(t)){var r=jn();return En.run({isolate:{type:n}},(function(){En.useX().testCursor.addLevel(),Fn((function(n){return Sn(n,r)[Nn(r)]=[],n}));var n=t();return En.useX().testCursor.removeLevel(),En.useX().testCursor.next(),n}))}}function Xn(n,t){return!(!t||n.fieldName!==t)}function Un(){var n=xn().optionalFields()[0];if(!L(n)){var t={};Fn((function(r){return Cn(r,(function(r){var u=r.fieldName;if(t.hasOwnProperty(u))t[r.fieldName]&&r.omit();else{var i=n[u];e(i)&&(t[u]=i(),t[r.fieldName]&&r.omit())}return r}))}))}}function Dn(n){var t=An();return!L(t)&&(n?t.some((function(t){return Xn(t,n)})):G(t))}function Ln(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function Gn(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return i&&r.groupName!==i||o&&!Xn(r,o)||"warnings"===t!=!!r.warns||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function qn(n){return Kn("errors",n)}function Bn(n){return Kn("warnings",n)}function Kn(n,t){return n=Gn(n,Wn(),{fieldName:t}),t?n[t]:n}function _n(n,t){return n=Mn("errors",n,t),t?n[t]:n}function Hn(n,t){return n=Mn("warnings",n,t),t?n[t]:n}function Mn(n,t,r){return t||tn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),Gn(n,Wn(),{group:t,fieldName:r})}function Jn(n,t,r){return!(!n.hasFailures()||r&&!Xn(n,r)||"warnings"===t!=!!n.warns)}function zn(n){return Yn("errors",n)}function Vn(n){return Yn("warnings",n)}function Yn(n,t){return Wn().some((function(r){return Jn(r,n,t)}))}function Qn(n,t){return $n("errors",n,t)}function Zn(n,t){return $n("warnings",n,t)}function $n(n,t,r){return Wn().some((function(e){return t===e.groupName&&Jn(e,n,r)}))}var nt=Pn(20);function tt(){var n=Wn(),t={stateRef:xn()};return nt([n],En.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return Wn().forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Ln(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Ln(n.groups[e],t))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(n)}(),{getErrors:En.bind(t,qn),getErrorsByGroup:En.bind(t,_n),getWarnings:En.bind(t,Bn),getWarningsByGroup:En.bind(t,Hn),hasErrors:En.bind(t,zn),hasErrorsByGroup:En.bind(t,Qn),hasWarnings:En.bind(t,Vn),hasWarningsByGroup:En.bind(t,Zn),isValid:En.bind(t,(function(n){var t=tt(),r=Wn().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(r=!!n&&!!r[n])?n=!0:t.hasErrors(n)?n=!1:n=!(L(r=Wn())||n&&L(t.tests[n])||function(n){var t=xn().optionalFields()[0];return G(An().filter((function(r){return!(n&&!Xn(r,n))&&!0!==t[r.fieldName]})))}(n))&&function(n){var t=Wn(),r=xn().optionalFields()[0];return t.every((function(t){return!(!n||Xn(t,n))||!0===r[t.fieldName]||t.isTested()||t.isOmitted()}))}(n),n}))})})))}var rt,et=Pn(20);function ut(){var n=Wn(),t={stateRef:xn()};return et([n],En.bind(t,(function(){return r({},tt(),{done:En.bind(t,st)})})))}function it(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function ot(n){return!(Dn()&&(!n||Dn(n)))}function st(){function n(){return e(tt())}for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=(t=t.reverse())[0];return t=t[1],r=ut(),it(e,t,r)?r:ot(t)?(n(),r):(at(n,t),r)}function at(n,t){var r=En.bind({},n);(0,xn().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function ct(n){return n.forEach((function(n){return n()}))}function ft(){var n=En.useX();return n.bus||tn(),n.bus}function lt(n){return vt("only","tests",n)}function pt(n){return vt("skip","tests",n)}function vt(n,t,r){var e=En.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){m(r)&&(e.exclusion[t][r]="only"===n)}))}function dt(n){for(var t in n)if(!0===n[t])return!0;return!1}function ht(n){tn("Wrong arguments passed to group. Group "+n+".")}(rt||(rt={})).TEST_COMPLETED="test_completed",lt.group=function(n){return vt("only","groups",n)},pt.group=function(n){return vt("skip","groups",n)};var gt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=gn(),this.warns=!1,this.status=mt,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,h(this.message)&&m(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Tt||(this.status=n)},n.prototype.setPending=function(){this.setStatus(Ct)},n.prototype.fail=function(){this.setStatus(this.warns?bt:Nt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Et)},n.prototype.warn=function(){this.warns=!0},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(){this.setStatus(yt)},n.prototype.cancel=function(){this.setStatus(Ot),kn()},n.prototype.omit=function(){this.setStatus(Tt)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===Ct},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.status===Tt},n.prototype.isUntested=function(){return this.status===mt},n.prototype.isFailing=function(){return this.status===Nt},n.prototype.isCanceled=function(){return this.status===Ot},n.prototype.isSkipped=function(){return this.status===yt},n.prototype.isPassing=function(){return this.status===Et},n.prototype.isWarning=function(){return this.status===bt},n}(),mt="UNTESTED",yt="SKIPPED",Nt="FAILED",bt="WARNING",Et="PASSING",Ct="PENDING",Ot="CANCELED",Tt="OMITTED";function wt(n){var t=n.asyncTest,r=n.message;if(t&&e(t.then)){var u=ft().emit,i=xn(),o=En.bind({stateRef:i},(function(){kn(),u(rt.TEST_COMPLETED,n)}));i=En.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=m(t)?t:r,n.fail(),o())}));try{t.then(o,i)}catch(n){i()}}}function St(n){var t=xn().testObjects(),r=t[1],e=t[0].prev;if(L(e))return Pt(n),n;if(kt(t=xt(e),n)){for(function(n,t){En.useX().isolate.type!==mn.EACH&&function(n,t){setTimeout((function(){tn(n,t)}),0)}("Vest Critical Error: Tests called in different order than previous run.\n expected: "+n.fieldName+"\n received: "+t.fieldName+"\n This usually happens when you conditionally call your tests using if/else.\n This might lead to unexpected validation results.\n Replacing if/else with skipWhen solves these issues.")}(t,n);kt(t,n);)t=xn().testObjects()[0],t=xt(e=wn(t.prev,jn()));r((function(n){return{prev:e,current:n.current}}))}return Pt(n=o(t,n)),n}function Pt(n){var t=jn();Fn((function(r){return Sn(r,t)[Nn(t)]=n,r}))}function xt(n){var t=jn();return Sn(n,t)[Nn(t)]}function kt(n,t){return G(n)&&!(n.fieldName===t.fieldName&&n.groupName===t.groupName)}function Ft(n){var t=St(n);if(function(n){var t=n.fieldName;n=n.groupName;var r=En.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){n:{var i=En.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(i,n))var o=!1===i[n];else{for(o in i)if(!0===i[o]){o=!0;break n}o=!1}}if(o)return!0;if(!0===r.groups[n])return!(u||!dt(e)&&!1!==e[t])}return!u&&dt(e)}(n))return n.skip(),En.useX().testCursor.next(),t;if(n!==t&&t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.isPending()&&t.cancel(),Pt(n),En.useX().testCursor.next(),n.isUntested()){t=ft().emit;var r=function(n){return En.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,h(n.message)&&m(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&e(r.then)?(n.asyncTest=r,n.setPending(),wt(n)):t(rt.TEST_COMPLETED,n)}catch(t){tn("Your test function "+n.fieldName+" returned "+JSON.stringify(r)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}else(t=n.asyncTest)&&e(t.then)&&(n.setPending(),wt(n));return n}function At(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var e=En.useX();return Ft(t=new gt(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var It=r(At,{each:function(n){return function(r){return S(r)||tn("test.each: Expected table to be an array."),function(e){for(var u=[],o=1;o<arguments.length;o++)u[o-1]=arguments[o];var s=(u=u.reverse())[0],a=u[1];return Rn({type:mn.EACH},(function(){return r.map((function(r){return r=[].concat(r),n(i.apply(void 0,t([e],r)),i.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}))}}}(At),memo:function(n){var t=Pn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=xn().suiteId()[0];var i=En.useX().testCursor.cursorAt(),o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),null===(u=t.get(e))?t(e,(function(){return n(r,s,o)})):u[1].isCanceled()?(t.invalidate(e),t(e,(function(){return n(r,s,o)}))):Ft(u[1])}}(At)}),Wt="4.0.0-dev-366a8b";function jt(n){e(n)||tn("Suite initialization error. Expected `tests` to be a function.");var t=function(){var n=function(){var n={};return{emit:function(t,r){n[t]&&n[t].forEach((function(n){n(r)}))},on:function(t,r){return n[t]||(n[t]=[]),n[t].push(r),{off:function(){n[t]=n[t].filter((function(n){return n!==r}))}}}}}();return n.on(rt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=xn().testCallbacks()[0].fieldCallbacks;n&&!Dn(n)&&S(t[n])&&ct(t[n]),n=xn().testCallbacks()[0].doneCallbacks,Dn()||ct(n)}})),n}(),u=function(n){function t(n,t,e){return u.references.push(),r(n,i(t,e)),function(){return[u.references[n],function(t){return r(n,i(t,u.references[n]))}]}}function r(t,r){var i=u.references[t];u.references[t]=r,e(t=o[t][1])&&t(r,i),e(n)&&n()}var u={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){var n=u.references;u.references=[],o.forEach((function(r,e){return t(e,r[0],n[e])}))}}}(),s=function(n,t){return t=t.suiteId,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:o(null==n?void 0:n.current,[]),current:[]}}))}}(u,{suiteId:gn()});return r(En.bind({stateRef:s,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return u.reset(),Rn({type:mn.SUITE},(function(){n.apply(void 0,t)})),Un(),ut()})),{get:En.bind({stateRef:s},tt),remove:En.bind({stateRef:s},(function(n){Wn().forEach((function(t){Xn(t,n)&&(t.cancel(),function(n){Fn((function(t){return On(t,(function(t){return n!==t}))}))}(t))}))})),reset:u.reset})}function Rt(n,t){m(n)||ht("name must be a string"),e(t)||ht("callback must be a function"),Rn({type:mn.GROUP},(function(){En.run({groupName:n},t)}))}function Xt(n){(0,xn().optionalFields()[1])((function(t){if(S(n)||m(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var r in n)t[r]=n[r];return t}))}function Ut(n,t){Rn({type:mn.SKIP_WHEN},(function(){En.run({skipped:i(n)},(function(){return t()}))}))}function Dt(){var n=En.useX("warn hook called outside of a running suite.");n.currentTest||tn("warn called outside of a test."),n.currentTest.warn()}export{Wt as VERSION,jt as create,hn as enforce,Rt as group,lt as only,Xt as optional,pt as skip,Ut as skipWhen,It as test,Dt as warn};
|
|
1
|
+
function n(){return(n=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)}function t(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||t)}var r=Object.assign;function e(n){return"function"==typeof n}function u(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function i(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return e(n)?n.apply(void 0,t):n}function o(n,t){var r;return null!==(r=i(n))&&void 0!==r?r:t}function s(n,t){return n={pass:n},t&&(n.message=t),n}function a(n,t){try{return n.run(t)}catch(n){return s(!1)}}function c(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function f(n,t){return n.length===Number(t)}var l=c(f);function p(n,t){return n.length>Number(t)}function v(n){return null===n}var d=c(v);function h(n){return void 0===n}var g=c(h);function m(n){return String(n)===n}function y(n,t){return m(n)&&m(t)&&n.endsWith(t)}var N=c(y);function b(n,t){return n===t}var E=c(b);function C(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var O=c(C);function T(n,t){return C(n)&&C(t)&&Number(n)>Number(t)}function w(n,t){return C(n)&&C(t)&&Number(n)>=Number(t)}function S(n){return!!Array.isArray(n)}var P=c(S);function x(n,t){return!!(S(t)||m(t)&&m(n))&&-1!==t.indexOf(n)}var k=c(x);function F(n,t){return C(n)&&C(t)&&Number(n)<=Number(t)}function A(n,t,r){return w(n,t)&&F(n,r)}var I=c(A);function W(n){return m(n)&&!n.trim()}var X=c(W);function R(n){return!!n===n}var j=c(R);function U(n){return"number"==typeof n}var D=c(U);function L(n){if(n){if(U(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return f(n,0);if("object"==typeof n)return f(Object.keys(n),0)}return!0}var G=c(L);function q(n){return Number.isNaN(n)}var B=c(q);function K(n){return!!C(n)&&0>Number(n)}var _=c(K),H=c(m);function M(n){return!!n}var J=c(M);function z(n,t){return C(n)&&C(t)&&Number(n)<Number(t)}function V(n,t){return t instanceof RegExp?t.test(n):!!m(t)&&new RegExp(t).test(n)}var Y=c(V);function Q(n,t){return C(n)&&C(t)&&Number(n)===Number(t)}var Z=c(Q);function $(n,t){return m(n)&&m(t)&&n.startsWith(t)}var nn=c($);function tn(n,t){throw Error(o(t,n))}function rn(n){function t(t,i){var o,s,a=e();return t=r({},a||{},null!==(o=null==n?void 0:n(t,a))&&void 0!==o?o:t),o=u.ctx=Object.freeze(t),u.ancestry.unshift(o),i=i(o),u.ancestry.shift(),u.ctx=null!==(s=u.ancestry[0])&&void 0!==s?s:null,i}function e(){return u.ctx}var u={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:e,useX:function(n){var t;return null!==(t=u.ctx)&&void 0!==t?t:tn(o(n,"Context was used after it was closed"))}}}var en=rn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:r(e,{parent:un})}));function un(){return null}function on(n,t){function r(r){var e=n[r],u=t[r];if(!(r=en.run({value:e,set:!0,meta:{key:r}},(function(){return a(u,e)}))).pass)return{value:r}}for(var e in t){var u=r(e);if("object"==typeof u)return u.value}return s(!0)}var sn=r({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:N,doesNotStartWith:nn,endsWith:y,equals:b,greaterThan:T,greaterThanOrEquals:w,gt:T,gte:w,inside:x,isArray:S,isBetween:A,isBlank:W,isBoolean:R,isEmpty:L,isEven:function(n){return!!C(n)&&0==n%2},isFalsy:J,isNaN:q,isNegative:K,isNotArray:P,isNotBetween:I,isNotBlank:X,isNotBoolean:j,isNotEmpty:G,isNotNaN:B,isNotNull:d,isNotNumber:D,isNotNumeric:O,isNotString:H,isNotUndefined:g,isNull:v,isNumber:U,isNumeric:C,isOdd:function(n){return!!C(n)&&0!=n%2},isPositive:_,isString:m,isTruthy:M,isUndefined:h,lengthEquals:f,lengthNotEquals:l,lessThan:z,lessThanOrEquals:F,longerThan:p,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:z,lte:F,matches:V,notEquals:E,notInside:k,notMatches:Y,numberEquals:Q,numberNotEquals:Z,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:$},{allOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass||r(t)})),s(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass&&r(t)})),s(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){a(t,n).pass&&r(s(!1))})),s(!0))},oneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(p(e,1))return!1;(t=a(t,n)).pass&&e.push(t)})),s(f(e,1))},optional:function(n,t){return h(n)||null===n?s(!0):a(t,n)}},{shape:function(n,t){var r=on(n,t);if(!r.pass)return r;for(var e in n)if(!Object.prototype.hasOwnProperty.call(t,e))return s(!1);return s(!0)},loose:on,isArrayOf:function(n,t){return o(u(n,(function(n,r,e){(e=en.run({value:n,set:!0,meta:{index:e}},(function(){return a(t,n)}))).pass||r(e)})),s(!0))}});function an(n){for(var t in sn){var r=sn[t];e(r)&&n(t,r)}}function cn(){return"function"==typeof Proxy}function fn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return R(n)||n&&R(n.pass)||tn("Incorrect return value for rule: "+JSON.stringify(n)),R(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u)))}function ln(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=fn.apply(void 0,t([en.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!L(o.message))throw o.message;tn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!cn())return an((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=sn[t])return r(u,n,t)}});return u}function pn(n){var r,e=[];return function n(a){return function(){for(var c=[],f=0;f<arguments.length;f++)c[f]=arguments[f];var l=sn[a];e.push((function(n){return fn.apply(void 0,t([l.apply(void 0,t([n],c)),a,n],c))}));var p={run:function(n){return o(u(e,(function(t,e){var u,o=en.run({value:n},(function(){return t(n)}));o.pass||e(s(!!o.pass,null!==(u=i(r,n,o.message))&&void 0!==u?u:o.message))})),s(!0))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return cn()?p=new Proxy(p,{get:function(t,r){return sn[r]?n(r):t[r]}}):(an((function(t){p[t]=n(t)})),p)}}(n)}function vn(n){var t,r={};for(t in n)r[t]=hn.optional(n[t]);return r}var dn,hn=(dn=n({context:function(){return en.useX()},extend:function(n){r(sn,n)}},{partial:vn}),cn()?new Proxy(r(ln,dn),{get:function(n,t){return t in n?n[t]:sn[t]?pn(t):void 0}}):(an((function(n){dn[n]=pn(n)})),dn)),gn=function(n){return function(){return""+n++}}(0);var mn,yn=mn||(mn={});function Nn(n){return(n=[].concat(n))[n.length-1]}function bn(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return Nn(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,Nn(t)},removeLevel:function(){t.pop()},reset:n}}yn[yn.DEFAULT=0]="DEFAULT",yn[yn.SUITE=1]="SUITE",yn[yn.EACH=2]="EACH",yn[yn.SKIP_WHEN=3]="SKIP_WHEN",yn[yn.GROUP=4]="GROUP";var En=rn((function(n,t){return t?null:r({},{isolate:{type:mn.DEFAULT},testCursor:bn(),exclusion:{tests:{},groups:{}}},n)}));function Cn(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];S(u)?r.push(Cn(u,t)):(u=t(u),d(u)&&r.push(u))}return r}function On(n){return[].concat(n).reduce((function(n,t){return S(t)?n.concat(On(t)):[].concat(n).concat(t)}),[])}function Tn(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=o(n[e],[]),n=n[e]}return n}function wn(n){function t(e,u){var i=t.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),p(r,n)&&(r.length=n),u)}void 0===n&&(n=1);var r=[];return t.invalidate=function(n){var t=r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<t&&r.splice(t,1)},t.get=function(n){return r[r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},t}function Sn(){return En.useX().stateRef}function Pn(){(0,Sn().testObjects()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function xn(n){(0,Sn().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function kn(){return On(Cn(Sn().testObjects()[0].current,(function(n){return n.isPending()?n:null})))}var Fn=wn();function An(){var n=Sn().testObjects()[0].current;return Fn([n],(function(){return On(n)}))}function In(){return En.useX().testCursor.getCursor()}function Wn(n,t){if(n=void 0===(n=n.type)?mn.DEFAULT:n,e(t)){var r=In();return En.run({isolate:{type:n}},(function(){En.useX().testCursor.addLevel(),xn((function(n){return Tn(n,r)[Nn(r)]=[],n}));var n=t();return En.useX().testCursor.removeLevel(),En.useX().testCursor.next(),n}))}}function Xn(n,t){return!(!t||n.fieldName!==t)}function Rn(){var n=Sn().optionalFields()[0];if(!L(n)){var t={};xn((function(r){return Cn(r,(function(r){var u=r.fieldName;if(t.hasOwnProperty(u))t[r.fieldName]&&r.omit();else{var i=n[u];e(i)&&(t[u]=i(),t[r.fieldName]&&r.omit())}return r}))}))}}function jn(n){var t=kn();return!L(t)&&(n?t.some((function(t){return Xn(t,n)})):G(t))}function Un(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function Dn(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return i&&r.groupName!==i||o&&!Xn(r,o)||"warnings"===t!=!!r.warns||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function Ln(n){return qn("errors",n)}function Gn(n){return qn("warnings",n)}function qn(n,t){return n=Dn(n,An(),{fieldName:t}),t?n[t]:n}function Bn(n,t){return n=_n("errors",n,t),t?n[t]:n}function Kn(n,t){return n=_n("warnings",n,t),t?n[t]:n}function _n(n,t,r){return t||tn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),Dn(n,An(),{group:t,fieldName:r})}function Hn(n,t,r){return!(!n.hasFailures()||r&&!Xn(n,r)||"warnings"===t!=!!n.warns)}function Mn(n){return zn("errors",n)}function Jn(n){return zn("warnings",n)}function zn(n,t){return An().some((function(r){return Hn(r,n,t)}))}function Vn(n,t){return Qn("errors",n,t)}function Yn(n,t){return Qn("warnings",n,t)}function Qn(n,t,r){return An().some((function(e){return t===e.groupName&&Hn(e,n,r)}))}var Zn=wn(20);function $n(){var n=An(),t={stateRef:Sn()};return Zn([n],En.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return An().forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Un(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Un(n.groups[e],t))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(n)}(),{getErrors:En.bind(t,Ln),getErrorsByGroup:En.bind(t,Bn),getWarnings:En.bind(t,Gn),getWarningsByGroup:En.bind(t,Kn),hasErrors:En.bind(t,Mn),hasErrorsByGroup:En.bind(t,Vn),hasWarnings:En.bind(t,Jn),hasWarningsByGroup:En.bind(t,Yn),isValid:En.bind(t,(function(n){var t=$n(),r=An().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(r=!!n&&!!r[n])?n=!0:t.hasErrors(n)?n=!1:n=!(L(r=An())||n&&L(t.tests[n])||function(n){var t=Sn().optionalFields()[0];return G(kn().filter((function(r){return!(n&&!Xn(r,n))&&!0!==t[r.fieldName]})))}(n))&&function(n){var t=An(),r=Sn().optionalFields()[0];return t.every((function(t){return!(!n||Xn(t,n))||!0===r[t.fieldName]||t.isTested()||t.isOmitted()}))}(n),n}))})})))}var nt,tt=wn(20);function rt(){var n=An(),t={stateRef:Sn()};return tt([n],En.bind(t,(function(){return r({},$n(),{done:En.bind(t,it)})})))}function et(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function ut(n){return!(jn()&&(!n||jn(n)))}function it(){function n(){return e($n())}for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=(t=t.reverse())[0];return t=t[1],r=rt(),et(e,t,r)?r:ut(t)?(n(),r):(ot(n,t),r)}function ot(n,t){var r=En.bind({},n);(0,Sn().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function st(n){return n.forEach((function(n){return n()}))}function at(){var n=En.useX();return n.bus||tn(),n.bus}function ct(n){return lt("only","tests",n)}function ft(n){return lt("skip","tests",n)}function lt(n,t,r){var e=En.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){m(r)&&(e.exclusion[t][r]="only"===n)}))}function pt(n){for(var t in n)if(!0===n[t])return!0;return!1}function vt(n){tn("Wrong arguments passed to group. Group "+n+".")}(nt||(nt={})).TEST_COMPLETED="test_completed",ct.group=function(n){return lt("only","groups",n)},ft.group=function(n){return lt("skip","groups",n)};var dt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=gn(),this.warns=!1,this.status=ht,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,h(this.message)&&m(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Ct||(this.status=n)},n.prototype.setPending=function(){this.setStatus(bt)},n.prototype.fail=function(){this.setStatus(this.warns?yt:mt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Nt)},n.prototype.warn=function(){this.warns=!0},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(){this.setStatus(gt)},n.prototype.cancel=function(){this.setStatus(Et),Pn()},n.prototype.omit=function(){this.setStatus(Ct)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===bt},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.status===Ct},n.prototype.isUntested=function(){return this.status===ht},n.prototype.isFailing=function(){return this.status===mt},n.prototype.isCanceled=function(){return this.status===Et},n.prototype.isSkipped=function(){return this.status===gt},n.prototype.isPassing=function(){return this.status===Nt},n.prototype.isWarning=function(){return this.status===yt},n}(),ht="UNTESTED",gt="SKIPPED",mt="FAILED",yt="WARNING",Nt="PASSING",bt="PENDING",Et="CANCELED",Ct="OMITTED";function Ot(n){var t=n.asyncTest,r=n.message;if(t&&e(t.then)){var u=at().emit,i=Sn(),o=En.bind({stateRef:i},(function(){Pn(),u(nt.TEST_COMPLETED,n)}));i=En.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=m(t)?t:r,n.fail(),o())}));try{t.then(o,i)}catch(n){i()}}}function Tt(n){var t=Sn().testObjects(),r=t[1],e=t[0].prev;if(L(e))return wt(n),n;if(function(n,t){return G(n)&&!(n.fieldName===t.fieldName&&n.groupName===t.groupName)}(t=function(n){var t=In();return Tn(n,t)[Nn(t)]}(e),n)){!function(n,t){En.useX().isolate.type!==mn.EACH&&function(n,t){setTimeout((function(){tn(n,t)}),0)}("Vest Critical Error: Tests called in different order than previous run.\n expected: "+n.fieldName+"\n received: "+t.fieldName+"\n This happens when you conditionally call your tests using if/else.\n This might lead to incorrect validation results.\n Replacing if/else with skipWhen solves these issues.")}(t,n),t=Tn(e,In());var u=En.useX().testCursor.cursorAt();t.splice(u),r((function(n){return{prev:e,current:n.current}})),t=null}return wt(n=o(t,n)),n}function wt(n){var t=In();xn((function(r){return Tn(r,t)[Nn(t)]=n,r}))}function St(n){var t=Tt(n);if(function(n){var t=n.fieldName;n=n.groupName;var r=En.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){n:{var i=En.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(i,n))var o=!1===i[n];else{for(o in i)if(!0===i[o]){o=!0;break n}o=!1}}if(o)return!0;if(!0===r.groups[n])return!(u||!pt(e)&&!1!==e[t])}return!u&&pt(e)}(n))return n.skip(),En.useX().testCursor.next(),t;if(n!==t&&t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.isPending()&&t.cancel(),wt(n),En.useX().testCursor.next(),n.isUntested()){t=at().emit;var r=function(n){return En.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,h(n.message)&&m(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&e(r.then)?(n.asyncTest=r,n.setPending(),Ot(n)):t(nt.TEST_COMPLETED,n)}catch(t){tn("Your test function "+n.fieldName+" returned "+JSON.stringify(r)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}else(t=n.asyncTest)&&e(t.then)&&(n.setPending(),Ot(n));return n}function Pt(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var e=En.useX();return St(t=new dt(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var xt=r(Pt,{each:function(n){return function(r){return S(r)||tn("test.each: Expected table to be an array."),function(e){for(var u=[],o=1;o<arguments.length;o++)u[o-1]=arguments[o];var s=(u=u.reverse())[0],a=u[1];return Wn({type:mn.EACH},(function(){return r.map((function(r){return r=[].concat(r),n(i.apply(void 0,t([e],r)),i.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}))}}}(Pt),memo:function(n){var t=wn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Sn().suiteId()[0];var i=En.useX().testCursor.cursorAt(),o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),null===(u=t.get(e))?t(e,(function(){return n(r,s,o)})):u[1].isCanceled()?(t.invalidate(e),t(e,(function(){return n(r,s,o)}))):St(u[1])}}(Pt)}),kt="4.0.0-dev-8851ff";function Ft(n){e(n)||tn("Suite initialization error. Expected `tests` to be a function.");var t=function(){var n=function(){var n={};return{emit:function(t,r){n[t]&&n[t].forEach((function(n){n(r)}))},on:function(t,r){return n[t]||(n[t]=[]),n[t].push(r),{off:function(){n[t]=n[t].filter((function(n){return n!==r}))}}}}}();return n.on(nt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=Sn().testCallbacks()[0].fieldCallbacks;n&&!jn(n)&&S(t[n])&&st(t[n]),n=Sn().testCallbacks()[0].doneCallbacks,jn()||st(n)}})),n}(),u=function(n){function t(n,t,e){return u.references.push(),r(n,i(t,e)),function(){return[u.references[n],function(t){return r(n,i(t,u.references[n]))}]}}function r(t,r){var i=u.references[t];u.references[t]=r,e(t=o[t][1])&&t(r,i),e(n)&&n()}var u={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){var n=u.references;u.references=[],o.forEach((function(r,e){return t(e,r[0],n[e])}))}}}(),o=function(n,t){return t=t.suiteId,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}(u,{suiteId:gn()});return r(En.bind({stateRef:o,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return u.reset(),Wn({type:mn.SUITE},(function(){n.apply(void 0,t)})),Rn(),rt()})),{get:En.bind({stateRef:o},$n),remove:En.bind({stateRef:o},(function(n){An().forEach((function(t){Xn(t,n)&&(t.cancel(),function(n){xn((function(t){return Cn(t,(function(t){return n!==t?t:null}))}))}(t))}))})),reset:u.reset})}function At(n,t){m(n)||vt("name must be a string"),e(t)||vt("callback must be a function"),Wn({type:mn.GROUP},(function(){En.run({groupName:n},t)}))}function It(n){(0,Sn().optionalFields()[1])((function(t){if(S(n)||m(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var r in n)t[r]=n[r];return t}))}function Wt(n,t){Wn({type:mn.SKIP_WHEN},(function(){En.run({skipped:i(n)},(function(){return t()}))}))}function Xt(){var n=En.useX("warn hook called outside of a running suite.");n.currentTest||tn("warn called outside of a test."),n.currentTest.warn()}export{kt as VERSION,Ft as create,hn as enforce,At as group,ct as only,It as optional,ft as skip,Wt as skipWhen,xt as test,Xt as warn};
|
|
@@ -887,7 +887,7 @@
|
|
|
887
887
|
}); }),
|
|
888
888
|
testObjects: state.registerStateKey(function (prev) {
|
|
889
889
|
return {
|
|
890
|
-
prev:
|
|
890
|
+
prev: (prev ? prev.current : []),
|
|
891
891
|
current: []
|
|
892
892
|
};
|
|
893
893
|
})
|
|
@@ -951,23 +951,21 @@
|
|
|
951
951
|
}, ctxRef);
|
|
952
952
|
});
|
|
953
953
|
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
}
|
|
959
|
-
return callback(item);
|
|
960
|
-
});
|
|
961
|
-
}
|
|
962
|
-
function filter(array, predicate) {
|
|
954
|
+
// This is sort of a map/filter in one function.
|
|
955
|
+
// Normally, behaves like a nested-array map
|
|
956
|
+
// Returning `null` will drop the element from the array
|
|
957
|
+
function transform(array, cb) {
|
|
963
958
|
var res = [];
|
|
964
959
|
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
|
|
965
960
|
var v = array_1[_i];
|
|
966
961
|
if (isArray(v)) {
|
|
967
|
-
res.push(
|
|
962
|
+
res.push(transform(v, cb));
|
|
968
963
|
}
|
|
969
|
-
else
|
|
970
|
-
|
|
964
|
+
else {
|
|
965
|
+
var output = cb(v);
|
|
966
|
+
if (isNotNull(output)) {
|
|
967
|
+
res.push(output);
|
|
968
|
+
}
|
|
971
969
|
}
|
|
972
970
|
}
|
|
973
971
|
return res;
|
|
@@ -988,11 +986,6 @@
|
|
|
988
986
|
return asArray(acc).concat(value);
|
|
989
987
|
}, []);
|
|
990
988
|
}
|
|
991
|
-
function removeAtPath(array, path) {
|
|
992
|
-
var current = getCurrent(array, path);
|
|
993
|
-
current.splice(path[last(path)], 1);
|
|
994
|
-
return array;
|
|
995
|
-
}
|
|
996
989
|
function getCurrent(array, path) {
|
|
997
990
|
var current = array;
|
|
998
991
|
for (var _i = 0, _a = path.slice(0, -1); _i < _a.length; _i++) {
|
|
@@ -1083,7 +1076,9 @@
|
|
|
1083
1076
|
// Derived state
|
|
1084
1077
|
function useAllIncomplete() {
|
|
1085
1078
|
var current = useTestObjects()[0].current;
|
|
1086
|
-
return flatten(
|
|
1079
|
+
return flatten(transform(current, function (testObject) {
|
|
1080
|
+
return testObject.isPending() ? testObject : null;
|
|
1081
|
+
}));
|
|
1087
1082
|
}
|
|
1088
1083
|
function useOmittedFields() {
|
|
1089
1084
|
var testObjects = useTestsFlat();
|
|
@@ -1157,7 +1152,7 @@
|
|
|
1157
1152
|
}
|
|
1158
1153
|
var shouldOmit = {};
|
|
1159
1154
|
useSetTests(function (tests) {
|
|
1160
|
-
return
|
|
1155
|
+
return transform(tests, function (testObject) {
|
|
1161
1156
|
var fieldName = testObject.fieldName;
|
|
1162
1157
|
if (shouldOmit.hasOwnProperty(fieldName)) {
|
|
1163
1158
|
omit(testObject);
|
|
@@ -1533,7 +1528,9 @@
|
|
|
1533
1528
|
* Removes test object from suite state
|
|
1534
1529
|
*/
|
|
1535
1530
|
function removeTestFromState (testObject) {
|
|
1536
|
-
useSetTests(function (tests) {
|
|
1531
|
+
useSetTests(function (tests) {
|
|
1532
|
+
return transform(tests, function (test) { return (testObject !== test ? test : null); });
|
|
1533
|
+
});
|
|
1537
1534
|
}
|
|
1538
1535
|
|
|
1539
1536
|
function createBus() {
|
|
@@ -2021,7 +2018,16 @@
|
|
|
2021
2018
|
}
|
|
2022
2019
|
}
|
|
2023
2020
|
|
|
2024
|
-
|
|
2021
|
+
/**
|
|
2022
|
+
* This module serves as the "collision detection" mechanism for Vest.
|
|
2023
|
+
* It is used to ensure that tests are not called in a different order than
|
|
2024
|
+
* they were called in the previous run.
|
|
2025
|
+
* If they are, it will throw a deferred error unless explicitly allowed.
|
|
2026
|
+
*
|
|
2027
|
+
* For now it seems pretty safe, and it covers most common use cases, but it can
|
|
2028
|
+
* be improved in the future both in terms of performance and scenarios it covers.
|
|
2029
|
+
*/
|
|
2030
|
+
// eslint-disable-next-line max-statements, max-lines-per-function
|
|
2025
2031
|
function useTestAtCursor(newTestObject) {
|
|
2026
2032
|
var _a = useTestObjects(), testObjects = _a[0], setTestObjects = _a[1];
|
|
2027
2033
|
var prevTests = testObjects.prev;
|
|
@@ -2033,16 +2039,14 @@
|
|
|
2033
2039
|
if (shouldPurgePrevTest(prevTest, newTestObject)) {
|
|
2034
2040
|
throwTestOrderError(prevTest, newTestObject);
|
|
2035
2041
|
// Here we handle just the omission of tests in the middle of the test suite.
|
|
2036
|
-
// We need to also handle a case in which tests are added in between other tests
|
|
2037
|
-
//
|
|
2042
|
+
// We need to also handle a case in which tests are added in between other tests.
|
|
2043
|
+
// At the moment all we can do is just splice the tests out of the array when this happens.
|
|
2038
2044
|
// A viable solution would be to use something like React's key prop to identify tests regardless
|
|
2039
2045
|
// of their position in the suite. https://reactjs.org/docs/lists-and-keys.html#keys
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
}
|
|
2045
|
-
// We actually don't mind mutating the state directly (as we do above). There is no harm in it
|
|
2046
|
+
var current = getCurrent(prevTests, usePath());
|
|
2047
|
+
var cursorAt = useCursorAt();
|
|
2048
|
+
current.splice(cursorAt);
|
|
2049
|
+
// We actually don't mind mutating the state directly (as can be seen above). There is no harm in it
|
|
2046
2050
|
// since we're only touching the "prev" state. The reason we still use the setter function is
|
|
2047
2051
|
// to prevent future headaches if we ever do need to rely on prev-state immutability.
|
|
2048
2052
|
setTestObjects(function (_a) {
|
|
@@ -2052,6 +2056,8 @@
|
|
|
2052
2056
|
current: current
|
|
2053
2057
|
});
|
|
2054
2058
|
});
|
|
2059
|
+
// Need to see if this has any effect at all.
|
|
2060
|
+
prevTest = null;
|
|
2055
2061
|
}
|
|
2056
2062
|
var nextTest = defaultTo(prevTest, newTestObject);
|
|
2057
2063
|
useSetTestAtCursor(nextTest);
|
|
@@ -2074,7 +2080,7 @@
|
|
|
2074
2080
|
if (shouldAllowReorder()) {
|
|
2075
2081
|
return;
|
|
2076
2082
|
}
|
|
2077
|
-
throwErrorDeferred("Vest Critical Error: Tests called in different order than previous run.\n expected: " + prevTest.fieldName + "\n received: " + newTestObject.fieldName + "\n This
|
|
2083
|
+
throwErrorDeferred("Vest Critical Error: Tests called in different order than previous run.\n expected: " + prevTest.fieldName + "\n received: " + newTestObject.fieldName + "\n This happens when you conditionally call your tests using if/else.\n This might lead to incorrect validation results.\n Replacing if/else with skipWhen solves these issues.");
|
|
2078
2084
|
}
|
|
2079
2085
|
|
|
2080
2086
|
function registerPrevRunTest(testObject) {
|
|
@@ -2174,7 +2180,7 @@
|
|
|
2174
2180
|
memo: bindTestMemo(testBase)
|
|
2175
2181
|
});
|
|
2176
2182
|
|
|
2177
|
-
var VERSION = "4.0.0-dev-
|
|
2183
|
+
var VERSION = "4.0.0-dev-8851ff";
|
|
2178
2184
|
|
|
2179
2185
|
exports.VERSION = VERSION;
|
|
2180
2186
|
exports.create = create;
|
|
@@ -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,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||t)}function r(n){return"function"==typeof n}function e(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function u(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return r(n)?n.apply(void 0,t):n}function i(n,t){var r;return null!==(r=u(n))&&void 0!==r?r:t}function o(n,t){return n={pass:n},t&&(n.message=t),n}function s(n,t){try{return n.run(t)}catch(n){return o(!1)}}function a(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function c(n,t){return n.length===Number(t)}function f(n,t){return n.length>Number(t)}function l(n){return null===n}function p(n){return void 0===n}function v(n){return String(n)===n}function d(n,t){return v(n)&&v(t)&&n.endsWith(t)}function h(n,t){return n===t}function g(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function m(n,t){return g(n)&&g(t)&&Number(n)>Number(t)}function y(n,t){return g(n)&&g(t)&&Number(n)>=Number(t)}function N(n){return!!Array.isArray(n)}function b(n,t){return!!(N(t)||v(t)&&v(n))&&-1!==t.indexOf(n)}function E(n,t){return g(n)&&g(t)&&Number(n)<=Number(t)}function C(n,t,r){return y(n,t)&&E(n,r)}function O(n){return v(n)&&!n.trim()}function T(n){return!!n===n}function w(n){return"number"==typeof n}function S(n){if(n){if(w(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return c(n,0);if("object"==typeof n)return c(Object.keys(n),0)}return!0}function P(n){return Number.isNaN(n)}function x(n){return!!g(n)&&0>Number(n)}function k(n){return!!n}function F(n,t){return g(n)&&g(t)&&Number(n)<Number(t)}function I(n,t){return t instanceof RegExp?t.test(n):!!v(t)&&new RegExp(t).test(n)}function A(n,t){return g(n)&&g(t)&&Number(n)===Number(t)}function W(n,t){return v(n)&&v(t)&&n.startsWith(t)}function j(n,t){throw Error(i(t,n))}function R(n){function t(t,u){var i,o,s=r();return t=Mn({},s||{},null!==(i=null==n?void 0:n(t,s))&&void 0!==i?i:t),i=e.ctx=Object.freeze(t),e.ancestry.unshift(i),u=u(i),e.ancestry.shift(),e.ctx=null!==(o=e.ancestry[0])&&void 0!==o?o:null,u}function r(){return e.ctx}var e={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:r,useX:function(n){var t;return null!==(t=e.ctx)&&void 0!==t?t:j(i(n,"Context was used after it was closed"))}}}function X(){return null}function U(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=vt.run({value:e,set:!0,meta:{key:r}},(function(){return s(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return o(!0)}function D(n){for(var t in dt){var e=dt[t];r(e)&&n(t,e)}}function L(){return"function"==typeof Proxy}function G(n,r,e){for(var i=[],s=3;s<arguments.length;s++)i[s-3]=arguments[s];return T(n)||n&&T(n.pass)||j("Incorrect return value for rule: "+JSON.stringify(n)),T(n)?o(n):o(n.pass,u.apply(void 0,t([n.message,r,e],i)))}function q(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=G.apply(void 0,t([vt.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!S(o.message))throw o.message;j("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!L())return D((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=dt[t])return r(u,n,t)}});return u}function B(n){var r,s=[];return function n(a){return function(){for(var c=[],f=0;f<arguments.length;f++)c[f]=arguments[f];var l=dt[a];s.push((function(n){return G.apply(void 0,t([l.apply(void 0,t([n],c)),a,n],c))}));var p={run:function(n){return i(e(s,(function(t,e){var i,s=vt.run({value:n},(function(){return t(n)}));s.pass||e(o(!!s.pass,null!==(i=u(r,n,s.message))&&void 0!==i?i:s.message))})),o(!0))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return L()?p=new Proxy(p,{get:function(t,r){return dt[r]?n(r):t[r]}}):(D((function(t){p[t]=n(t)})),p)}}(n)}function _(n){var t,r={};for(t in n)r[t]=ht.optional(n[t]);return r}function K(n){return(n=[].concat(n))[n.length-1]}function H(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return K(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,K(t)},removeLevel:function(){t.pop()},reset:n}}function M(n,t){return n.map((function(n){return N(n)?M(n,t):t(n)}))}function J(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];N(u)?r.push(J(u,t)):t(u)&&r.push(u)}return r}function V(n){return[].concat(n).reduce((function(n,t){return N(t)?n.concat(V(t)):[].concat(n).concat(t)}),[])}function z(n,t){return Y(n,t).splice(t[K(t)],1),n}function Y(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=i(n[e],[]),n=n[e]}return n}function Q(n){void 0===n&&(n=1);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),f(t,n)&&(t.length=n),u)};return r.invalidate=function(n){var r=t.findIndex((function(t){var r=t[0];return c(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<r&&t.splice(r,1)},r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return c(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function Z(){return yt.useX().stateRef}function $(){(0,Z().testObjects()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function nn(n){(0,Z().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function tn(){return V(J(Z().testObjects()[0].current,(function(n){return n.isPending()})))}function rn(){var n=Z().testObjects()[0].current;return Nt([n],(function(){return V(n)}))}function en(){return yt.useX().testCursor.getCursor()}function un(n,t){if(n=void 0===(n=n.type)?_n.DEFAULT:n,r(t)){var e=en();return yt.run({isolate:{type:n}},(function(){yt.useX().testCursor.addLevel(),nn((function(n){return Y(n,e)[K(e)]=[],n}));var n=t();return yt.useX().testCursor.removeLevel(),yt.useX().testCursor.next(),n}))}}function on(n,t){return!(!t||n.fieldName!==t)}function sn(){var n=Z().optionalFields()[0];if(!S(n)){var t={};nn((function(e){return M(e,(function(e){var u=e.fieldName;if(t.hasOwnProperty(u))t[e.fieldName]&&e.omit();else{var i=n[u];r(i)&&(t[u]=i(),t[e.fieldName]&&e.omit())}return e}))}))}}function an(n){var t=tn();return!S(t)&&(n?t.some((function(t){return on(t,n)})):it(t))}function cn(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function fn(n,t,r){var e;void 0===r&&(r={});var u=(r=r||{}).group,i=r.fieldName;return t.reduce((function(t,r){return u&&r.groupName!==u||i&&!on(r,i)||"warnings"===n!=!!r.warns||!r.hasFailures()||(t[r.fieldName]=(t[r.fieldName]||[]).concat(r.message||[])),t}),Hn({},i&&((e={})[i]=[],e)))}function ln(n){return vn("errors",n)}function pn(n){return vn("warnings",n)}function vn(n,t){return n=fn(n,rn(),{fieldName:t}),t?n[t]:n}function dn(n,t){return n=gn("errors",n,t),t?n[t]:n}function hn(n,t){return n=gn("warnings",n,t),t?n[t]:n}function gn(n,t,r){return t||j("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),fn(n,rn(),{group:t,fieldName:r})}function mn(n,t,r){return!(!n.hasFailures()||r&&!on(n,r)||"warnings"===t!=!!n.warns)}function yn(n){return bn("errors",n)}function Nn(n){return bn("warnings",n)}function bn(n,t){return rn().some((function(r){return mn(r,n,t)}))}function En(n,t){return On("errors",n,t)}function Cn(n,t){return On("warnings",n,t)}function On(n,t,r){return rn().some((function(e){return t===e.groupName&&mn(e,n,r)}))}function Tn(){var n=rn(),t={stateRef:Z()};return bt([n],yt.bind(t,(function(){return Mn(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return rn().forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=cn(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=cn(n.groups[e],t))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(n)}(),{getErrors:yt.bind(t,ln),getErrorsByGroup:yt.bind(t,dn),getWarnings:yt.bind(t,pn),getWarningsByGroup:yt.bind(t,hn),hasErrors:yt.bind(t,yn),hasErrorsByGroup:yt.bind(t,En),hasWarnings:yt.bind(t,Nn),hasWarningsByGroup:yt.bind(t,Cn),isValid:yt.bind(t,(function(n){var t=Tn(),r=rn().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(r=!!n&&!!r[n])?n=!0:t.hasErrors(n)?n=!1:n=!(S(r=rn())||n&&S(t.tests[n])||function(n){var t=Z().optionalFields()[0];return it(tn().filter((function(r){return!(n&&!on(r,n))&&!0!==t[r.fieldName]})))}(n))&&function(n){var t=rn(),r=Z().optionalFields()[0];return t.every((function(t){return!(!n||on(t,n))||!0===r[t.fieldName]||t.isTested()||t.isOmitted()}))}(n),n}))})})))}function wn(){var n=rn(),t={stateRef:Z()};return Et([n],yt.bind(t,(function(){return Mn({},Tn(),{done:yt.bind(t,Ct)})})))}function Sn(n,t,e){return!(r(n)&&(!t||e.tests[t]&&0!==e.tests[t].testCount))}function Pn(n){return!(an()&&(!n||an(n)))}function xn(n,t){var r=yt.bind({},n);(0,Z().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function kn(n){return n.forEach((function(n){return n()}))}function Fn(){var n=yt.useX();return n.bus||j(),n.bus}function In(n){return Wn("only","tests",n)}function An(n){return Wn("skip","tests",n)}function Wn(n,t,r){var e=yt.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){v(r)&&(e.exclusion[t][r]="only"===n)}))}function jn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Rn(n){j("Wrong arguments passed to group. Group "+n+".")}function Xn(n){var t=n.asyncTest,e=n.message;if(t&&r(t.then)){var u=Fn().emit,i=Z(),o=yt.bind({stateRef:i},(function(){$(),u(mt.TEST_COMPLETED,n)}));i=yt.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=v(t)?t:e,n.fail(),o())}));try{t.then(o,i)}catch(n){i()}}}function Un(n){var t=Z().testObjects(),r=t[1],e=t[0].prev;if(S(e))return Dn(n),n;if(Gn(t=Ln(e),n)){for(function(n,t){yt.useX().isolate.type!==_n.EACH&&function(n,t){setTimeout((function(){j(n,t)}),0)}("Vest Critical Error: Tests called in different order than previous run.\n expected: "+n.fieldName+"\n received: "+t.fieldName+"\n This usually happens when you conditionally call your tests using if/else.\n This might lead to unexpected validation results.\n Replacing if/else with skipWhen solves these issues.")}(t,n);Gn(t,n);)t=Z().testObjects()[0],t=Ln(e=z(t.prev,en()));r((function(n){return{prev:e,current:n.current}}))}return Dn(n=i(t,n)),n}function Dn(n){var t=en();nn((function(r){return Y(r,t)[K(t)]=n,r}))}function Ln(n){var t=en();return Y(n,t)[K(t)]}function Gn(n,t){return it(n)&&!(n.fieldName===t.fieldName&&n.groupName===t.groupName)}function qn(n){var t=Un(n);if(function(n){var t=n.fieldName;n=n.groupName;var r=yt.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){n:{var i=yt.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(i,n))var o=!1===i[n];else{for(o in i)if(!0===i[o]){o=!0;break n}o=!1}}if(o)return!0;if(!0===r.groups[n])return!(u||!jn(e)&&!1!==e[t])}return!u&&jn(e)}(n))return n.skip(),yt.useX().testCursor.next(),t;if(n!==t&&t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.isPending()&&t.cancel(),Dn(n),yt.useX().testCursor.next(),n.isUntested()){t=Fn().emit;var e=function(n){return yt.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,p(n.message)&&v(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{e&&r(e.then)?(n.asyncTest=e,n.setPending(),Xn(n)):t(mt.TEST_COMPLETED,n)}catch(t){j("Your test function "+n.fieldName+" returned "+JSON.stringify(e)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}else(t=n.asyncTest)&&r(t.then)&&(n.setPending(),Xn(n));return n}function Bn(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var e=yt.useX();return qn(t=new Ot(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var _n,Kn,Hn=function(){return(Hn=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)},Mn=Object.assign,Jn=a(c),Vn=a(l),zn=a(p),Yn=a(d),Qn=a(h),Zn=a(g),$n=a(N),nt=a(b),tt=a(C),rt=a(O),et=a(T),ut=a(w),it=a(S),ot=a(P),st=a(x),at=a(v),ct=a(k),ft=a(I),lt=a(A),pt=a(W),vt=R((function(n,t){var r={value:n.value,meta:n.meta||{}};return t?n.set?Mn(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:Mn(r,{parent:X})})),dt=Mn({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:Yn,doesNotStartWith:pt,endsWith:d,equals:h,greaterThan:m,greaterThanOrEquals:y,gt:m,gte:y,inside:b,isArray:N,isBetween:C,isBlank:O,isBoolean:T,isEmpty:S,isEven:function(n){return!!g(n)&&0==n%2},isFalsy:ct,isNaN:P,isNegative:x,isNotArray:$n,isNotBetween:tt,isNotBlank:rt,isNotBoolean:et,isNotEmpty:it,isNotNaN:ot,isNotNull:Vn,isNotNumber:ut,isNotNumeric:Zn,isNotString:at,isNotUndefined:zn,isNull:l,isNumber:w,isNumeric:g,isOdd:function(n){return!!g(n)&&0!=n%2},isPositive:st,isString:v,isTruthy:k,isUndefined:p,lengthEquals:c,lengthNotEquals:Jn,lessThan:F,lessThanOrEquals:E,longerThan:f,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:F,lte:E,matches:I,notEquals:Qn,notInside:nt,notMatches:ft,numberEquals:A,numberNotEquals:lt,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:W},{allOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){(t=s(t,n)).pass||r(t)})),o(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){(t=s(t,n)).pass&&r(t)})),o(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){s(t,n).pass&&r(o(!1))})),o(!0))},oneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(f(e,1))return!1;(t=s(t,n)).pass&&e.push(t)})),o(c(e,1))},optional:function(n,t){return p(n)||null===n?o(!0):s(t,n)}},{shape:function(n,t){var r=U(n,t);if(!r.pass)return r;for(var e in n)if(!Object.prototype.hasOwnProperty.call(t,e))return o(!1);return o(!0)},loose:U,isArrayOf:function(n,t){return i(e(n,(function(n,r,e){(e=vt.run({value:n,set:!0,meta:{index:e}},(function(){return s(t,n)}))).pass||r(e)})),o(!0))}}),ht=(Kn=Hn({context:function(){return vt.useX()},extend:function(n){Mn(dt,n)}},{partial:_}),L()?new Proxy(Mn(q,Kn),{get:function(n,t){return t in n?n[t]:dt[t]?B(t):void 0}}):(D((function(n){Kn[n]=B(n)})),Kn)),gt=function(n){return function(){return""+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.GROUP=4]="GROUP"}(_n||(_n={}));var mt,yt=R((function(n,t){return t?null:Mn({},{isolate:{type:_n.DEFAULT},testCursor:H(),exclusion:{tests:{},groups:{}}},n)})),Nt=Q(),bt=Q(20),Et=Q(20),Ct=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=wn(),Sn(r,n,t))return t;var e=function(){return r(Tn())};return Pn(n)?(e(),t):(xn(e,n),t)};(mt||(mt={})).TEST_COMPLETED="test_completed",In.group=function(n){return Wn("only","groups",n)},An.group=function(n){return Wn("skip","groups",n)};var Ot=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=gt(),this.warns=!1,this.status=Tt,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,p(this.message)&&v(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==It||(this.status=n)},n.prototype.setPending=function(){this.setStatus(kt)},n.prototype.fail=function(){this.setStatus(this.warns?Pt:St)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(xt)},n.prototype.warn=function(){this.warns=!0},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(){this.setStatus(wt)},n.prototype.cancel=function(){this.setStatus(Ft),$()},n.prototype.omit=function(){this.setStatus(It)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===kt},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.status===It},n.prototype.isUntested=function(){return this.status===Tt},n.prototype.isFailing=function(){return this.status===St},n.prototype.isCanceled=function(){return this.status===Ft},n.prototype.isSkipped=function(){return this.status===wt},n.prototype.isPassing=function(){return this.status===xt},n.prototype.isWarning=function(){return this.status===Pt},n}(),Tt="UNTESTED",wt="SKIPPED",St="FAILED",Pt="WARNING",xt="PASSING",kt="PENDING",Ft="CANCELED",It="OMITTED",At=Mn(Bn,{each:function(n){return function(r){return N(r)||j("test.each: Expected table to be an array."),function(e){for(var i=[],o=1;o<arguments.length;o++)i[o-1]=arguments[o];var s=(i=i.reverse())[0],a=i[1];return un({type:_n.EACH},(function(){return r.map((function(r){return r=[].concat(r),n(u.apply(void 0,t([e],r)),u.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}))}}}(Bn),memo:function(n){var t=Q(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Z().suiteId()[0];var i=yt.useX().testCursor.cursorAt(),o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),null===(u=t.get(e))?t(e,(function(){return n(r,s,o)})):u[1].isCanceled()?(t.invalidate(e),t(e,(function(){return n(r,s,o)}))):qn(u[1])}}(Bn)});n.VERSION="4.0.0-dev-366a8b",n.create=function(n){r(n)||j("Suite initialization error. Expected `tests` to be a function.");var t=function(){var n=function(){var n={};return{emit:function(t,r){n[t]&&n[t].forEach((function(n){n(r)}))},on:function(t,r){return n[t]||(n[t]=[]),n[t].push(r),{off:function(){n[t]=n[t].filter((function(n){return n!==r}))}}}}}();return n.on(mt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=Z().testCallbacks()[0].fieldCallbacks;n&&!an(n)&&N(t[n])&&kn(t[n]),n=Z().testCallbacks()[0].doneCallbacks,an()||kn(n)}})),n}(),e=function(n){function t(n,t,r){return i.references.push(),e(n,u(t,r)),function(){return[i.references[n],function(t){return e(n,u(t,i.references[n]))}]}}function e(t,e){var u=i.references[t];i.references[t]=e,r(t=o[t][1])&&t(e,u),r(n)&&n()}var i={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){var n=i.references;i.references=[],o.forEach((function(r,e){return t(e,r[0],n[e])}))}}}(),o=function(n,t){return t=t.suiteId,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:i(null==n?void 0:n.current,[]),current:[]}}))}}(e,{suiteId:gt()});return Mn(yt.bind({stateRef:o,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return e.reset(),un({type:_n.SUITE},(function(){n.apply(void 0,t)})),sn(),wn()})),{get:yt.bind({stateRef:o},Tn),remove:yt.bind({stateRef:o},(function(n){rn().forEach((function(t){on(t,n)&&(t.cancel(),function(n){nn((function(t){return J(t,(function(t){return n!==t}))}))}(t))}))})),reset:e.reset})},n.enforce=ht,n.group=function(n,t){v(n)||Rn("name must be a string"),r(t)||Rn("callback must be a function"),un({type:_n.GROUP},(function(){yt.run({groupName:n},t)}))},n.only=In,n.optional=function(n){(0,Z().optionalFields()[1])((function(t){if(N(n)||v(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var r in n)t[r]=n[r];return t}))},n.skip=An,n.skipWhen=function(n,t){un({type:_n.SKIP_WHEN},(function(){yt.run({skipped:u(n)},(function(){return t()}))}))},n.test=At,n.warn=function(){var n=yt.useX("warn hook called outside of a running suite.");n.currentTest||j("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,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||t)}function r(n){return"function"==typeof n}function e(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function u(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return r(n)?n.apply(void 0,t):n}function i(n,t){var r;return null!==(r=u(n))&&void 0!==r?r:t}function o(n,t){return n={pass:n},t&&(n.message=t),n}function s(n,t){try{return n.run(t)}catch(n){return o(!1)}}function a(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function c(n,t){return n.length===Number(t)}function f(n,t){return n.length>Number(t)}function l(n){return null===n}function p(n){return void 0===n}function v(n){return String(n)===n}function d(n,t){return v(n)&&v(t)&&n.endsWith(t)}function h(n,t){return n===t}function g(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function m(n,t){return g(n)&&g(t)&&Number(n)>Number(t)}function y(n,t){return g(n)&&g(t)&&Number(n)>=Number(t)}function N(n){return!!Array.isArray(n)}function b(n,t){return!!(N(t)||v(t)&&v(n))&&-1!==t.indexOf(n)}function E(n,t){return g(n)&&g(t)&&Number(n)<=Number(t)}function C(n,t,r){return y(n,t)&&E(n,r)}function O(n){return v(n)&&!n.trim()}function T(n){return!!n===n}function w(n){return"number"==typeof n}function S(n){if(n){if(w(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return c(n,0);if("object"==typeof n)return c(Object.keys(n),0)}return!0}function P(n){return Number.isNaN(n)}function x(n){return!!g(n)&&0>Number(n)}function k(n){return!!n}function F(n,t){return g(n)&&g(t)&&Number(n)<Number(t)}function A(n,t){return t instanceof RegExp?t.test(n):!!v(t)&&new RegExp(t).test(n)}function I(n,t){return g(n)&&g(t)&&Number(n)===Number(t)}function W(n,t){return v(n)&&v(t)&&n.startsWith(t)}function j(n,t){throw Error(i(t,n))}function R(n){function t(t,u){var i,o,s=r();return t=Bn({},s||{},null!==(i=null==n?void 0:n(t,s))&&void 0!==i?i:t),i=e.ctx=Object.freeze(t),e.ancestry.unshift(i),u=u(i),e.ancestry.shift(),e.ctx=null!==(o=e.ancestry[0])&&void 0!==o?o:null,u}function r(){return e.ctx}var e={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:r,useX:function(n){var t;return null!==(t=e.ctx)&&void 0!==t?t:j(i(n,"Context was used after it was closed"))}}}function X(){return null}function U(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=ct.run({value:e,set:!0,meta:{key:r}},(function(){return s(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return o(!0)}function D(n){for(var t in ft){var e=ft[t];r(e)&&n(t,e)}}function L(){return"function"==typeof Proxy}function G(n,r,e){for(var i=[],s=3;s<arguments.length;s++)i[s-3]=arguments[s];return T(n)||n&&T(n.pass)||j("Incorrect return value for rule: "+JSON.stringify(n)),T(n)?o(n):o(n.pass,u.apply(void 0,t([n.message,r,e],i)))}function q(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=G.apply(void 0,t([ct.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!S(o.message))throw o.message;j("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!L())return D((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=ft[t])return r(u,n,t)}});return u}function B(n){var r,s=[];return function n(a){return function(){for(var c=[],f=0;f<arguments.length;f++)c[f]=arguments[f];var l=ft[a];s.push((function(n){return G.apply(void 0,t([l.apply(void 0,t([n],c)),a,n],c))}));var p={run:function(n){return i(e(s,(function(t,e){var i,s=ct.run({value:n},(function(){return t(n)}));s.pass||e(o(!!s.pass,null!==(i=u(r,n,s.message))&&void 0!==i?i:s.message))})),o(!0))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return L()?p=new Proxy(p,{get:function(t,r){return ft[r]?n(r):t[r]}}):(D((function(t){p[t]=n(t)})),p)}}(n)}function _(n){var t,r={};for(t in n)r[t]=lt.optional(n[t]);return r}function K(n){return(n=[].concat(n))[n.length-1]}function H(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return K(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,K(t)},removeLevel:function(){t.pop()},reset:n}}function M(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];N(u)?r.push(M(u,t)):(u=t(u),Kn(u)&&r.push(u))}return r}function J(n){return[].concat(n).reduce((function(n,t){return N(t)?n.concat(J(t)):[].concat(n).concat(t)}),[])}function V(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=i(n[e],[]),n=n[e]}return n}function z(n){void 0===n&&(n=1);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),f(t,n)&&(t.length=n),u)};return r.invalidate=function(n){var r=t.findIndex((function(t){var r=t[0];return c(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<r&&t.splice(r,1)},r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return c(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function Y(){return dt.useX().stateRef}function Q(){(0,Y().testObjects()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function Z(n){(0,Y().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function $(){return J(M(Y().testObjects()[0].current,(function(n){return n.isPending()?n:null})))}function nn(){var n=Y().testObjects()[0].current;return ht([n],(function(){return J(n)}))}function tn(){return dt.useX().testCursor.getCursor()}function rn(n,t){if(n=void 0===(n=n.type)?Ln.DEFAULT:n,r(t)){var e=tn();return dt.run({isolate:{type:n}},(function(){dt.useX().testCursor.addLevel(),Z((function(n){return V(n,e)[K(e)]=[],n}));var n=t();return dt.useX().testCursor.removeLevel(),dt.useX().testCursor.next(),n}))}}function en(n,t){return!(!t||n.fieldName!==t)}function un(){var n=Y().optionalFields()[0];if(!S(n)){var t={};Z((function(e){return M(e,(function(e){var u=e.fieldName;if(t.hasOwnProperty(u))t[e.fieldName]&&e.omit();else{var i=n[u];r(i)&&(t[u]=i(),t[e.fieldName]&&e.omit())}return e}))}))}}function on(n){var t=$();return!S(t)&&(n?t.some((function(t){return en(t,n)})):tt(t))}function sn(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function an(n,t,r){var e;void 0===r&&(r={});var u=(r=r||{}).group,i=r.fieldName;return t.reduce((function(t,r){return u&&r.groupName!==u||i&&!en(r,i)||"warnings"===n!=!!r.warns||!r.hasFailures()||(t[r.fieldName]=(t[r.fieldName]||[]).concat(r.message||[])),t}),qn({},i&&((e={})[i]=[],e)))}function cn(n){return ln("errors",n)}function fn(n){return ln("warnings",n)}function ln(n,t){return n=an(n,nn(),{fieldName:t}),t?n[t]:n}function pn(n,t){return n=dn("errors",n,t),t?n[t]:n}function vn(n,t){return n=dn("warnings",n,t),t?n[t]:n}function dn(n,t,r){return t||j("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),an(n,nn(),{group:t,fieldName:r})}function hn(n,t,r){return!(!n.hasFailures()||r&&!en(n,r)||"warnings"===t!=!!n.warns)}function gn(n){return yn("errors",n)}function mn(n){return yn("warnings",n)}function yn(n,t){return nn().some((function(r){return hn(r,n,t)}))}function Nn(n,t){return En("errors",n,t)}function bn(n,t){return En("warnings",n,t)}function En(n,t,r){return nn().some((function(e){return t===e.groupName&&hn(e,n,r)}))}function Cn(){var n=nn(),t={stateRef:Y()};return gt([n],dt.bind(t,(function(){return Bn(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return nn().forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=sn(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=sn(n.groups[e],t))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(n)}(),{getErrors:dt.bind(t,cn),getErrorsByGroup:dt.bind(t,pn),getWarnings:dt.bind(t,fn),getWarningsByGroup:dt.bind(t,vn),hasErrors:dt.bind(t,gn),hasErrorsByGroup:dt.bind(t,Nn),hasWarnings:dt.bind(t,mn),hasWarningsByGroup:dt.bind(t,bn),isValid:dt.bind(t,(function(n){var t=Cn(),r=nn().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(r=!!n&&!!r[n])?n=!0:t.hasErrors(n)?n=!1:n=!(S(r=nn())||n&&S(t.tests[n])||function(n){var t=Y().optionalFields()[0];return tt($().filter((function(r){return!(n&&!en(r,n))&&!0!==t[r.fieldName]})))}(n))&&function(n){var t=nn(),r=Y().optionalFields()[0];return t.every((function(t){return!(!n||en(t,n))||!0===r[t.fieldName]||t.isTested()||t.isOmitted()}))}(n),n}))})})))}function On(){var n=nn(),t={stateRef:Y()};return mt([n],dt.bind(t,(function(){return Bn({},Cn(),{done:dt.bind(t,yt)})})))}function Tn(n,t,e){return!(r(n)&&(!t||e.tests[t]&&0!==e.tests[t].testCount))}function wn(n){return!(on()&&(!n||on(n)))}function Sn(n,t){var r=dt.bind({},n);(0,Y().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function Pn(n){return n.forEach((function(n){return n()}))}function xn(){var n=dt.useX();return n.bus||j(),n.bus}function kn(n){return An("only","tests",n)}function Fn(n){return An("skip","tests",n)}function An(n,t,r){var e=dt.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){v(r)&&(e.exclusion[t][r]="only"===n)}))}function In(n){for(var t in n)if(!0===n[t])return!0;return!1}function Wn(n){j("Wrong arguments passed to group. Group "+n+".")}function jn(n){var t=n.asyncTest,e=n.message;if(t&&r(t.then)){var u=xn().emit,i=Y(),o=dt.bind({stateRef:i},(function(){Q(),u(vt.TEST_COMPLETED,n)}));i=dt.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=v(t)?t:e,n.fail(),o())}));try{t.then(o,i)}catch(n){i()}}}function Rn(n){var t=Y().testObjects(),r=t[1],e=t[0].prev;if(S(e))return Xn(n),n;if(function(n,t){return tt(n)&&!(n.fieldName===t.fieldName&&n.groupName===t.groupName)}(t=function(n){var t=tn();return V(n,t)[K(t)]}(e),n)){!function(n,t){dt.useX().isolate.type!==Ln.EACH&&function(n,t){setTimeout((function(){j(n,t)}),0)}("Vest Critical Error: Tests called in different order than previous run.\n expected: "+n.fieldName+"\n received: "+t.fieldName+"\n This happens when you conditionally call your tests using if/else.\n This might lead to incorrect validation results.\n Replacing if/else with skipWhen solves these issues.")}(t,n),t=V(e,tn());var u=dt.useX().testCursor.cursorAt();t.splice(u),r((function(n){return{prev:e,current:n.current}})),t=null}return Xn(n=i(t,n)),n}function Xn(n){var t=tn();Z((function(r){return V(r,t)[K(t)]=n,r}))}function Un(n){var t=Rn(n);if(function(n){var t=n.fieldName;n=n.groupName;var r=dt.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){n:{var i=dt.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(i,n))var o=!1===i[n];else{for(o in i)if(!0===i[o]){o=!0;break n}o=!1}}if(o)return!0;if(!0===r.groups[n])return!(u||!In(e)&&!1!==e[t])}return!u&&In(e)}(n))return n.skip(),dt.useX().testCursor.next(),t;if(n!==t&&t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.isPending()&&t.cancel(),Xn(n),dt.useX().testCursor.next(),n.isUntested()){t=xn().emit;var e=function(n){return dt.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,p(n.message)&&v(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{e&&r(e.then)?(n.asyncTest=e,n.setPending(),jn(n)):t(vt.TEST_COMPLETED,n)}catch(t){j("Your test function "+n.fieldName+" returned "+JSON.stringify(e)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}else(t=n.asyncTest)&&r(t.then)&&(n.setPending(),jn(n));return n}function Dn(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var e=dt.useX();return Un(t=new Nt(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var Ln,Gn,qn=function(){return(qn=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)},Bn=Object.assign,_n=a(c),Kn=a(l),Hn=a(p),Mn=a(d),Jn=a(h),Vn=a(g),zn=a(N),Yn=a(b),Qn=a(C),Zn=a(O),$n=a(T),nt=a(w),tt=a(S),rt=a(P),et=a(x),ut=a(v),it=a(k),ot=a(A),st=a(I),at=a(W),ct=R((function(n,t){var r={value:n.value,meta:n.meta||{}};return t?n.set?Bn(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:Bn(r,{parent:X})})),ft=Bn({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:Mn,doesNotStartWith:at,endsWith:d,equals:h,greaterThan:m,greaterThanOrEquals:y,gt:m,gte:y,inside:b,isArray:N,isBetween:C,isBlank:O,isBoolean:T,isEmpty:S,isEven:function(n){return!!g(n)&&0==n%2},isFalsy:it,isNaN:P,isNegative:x,isNotArray:zn,isNotBetween:Qn,isNotBlank:Zn,isNotBoolean:$n,isNotEmpty:tt,isNotNaN:rt,isNotNull:Kn,isNotNumber:nt,isNotNumeric:Vn,isNotString:ut,isNotUndefined:Hn,isNull:l,isNumber:w,isNumeric:g,isOdd:function(n){return!!g(n)&&0!=n%2},isPositive:et,isString:v,isTruthy:k,isUndefined:p,lengthEquals:c,lengthNotEquals:_n,lessThan:F,lessThanOrEquals:E,longerThan:f,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:F,lte:E,matches:A,notEquals:Jn,notInside:Yn,notMatches:ot,numberEquals:I,numberNotEquals:st,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:W},{allOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){(t=s(t,n)).pass||r(t)})),o(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){(t=s(t,n)).pass&&r(t)})),o(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){s(t,n).pass&&r(o(!1))})),o(!0))},oneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(f(e,1))return!1;(t=s(t,n)).pass&&e.push(t)})),o(c(e,1))},optional:function(n,t){return p(n)||null===n?o(!0):s(t,n)}},{shape:function(n,t){var r=U(n,t);if(!r.pass)return r;for(var e in n)if(!Object.prototype.hasOwnProperty.call(t,e))return o(!1);return o(!0)},loose:U,isArrayOf:function(n,t){return i(e(n,(function(n,r,e){(e=ct.run({value:n,set:!0,meta:{index:e}},(function(){return s(t,n)}))).pass||r(e)})),o(!0))}}),lt=(Gn=qn({context:function(){return ct.useX()},extend:function(n){Bn(ft,n)}},{partial:_}),L()?new Proxy(Bn(q,Gn),{get:function(n,t){return t in n?n[t]:ft[t]?B(t):void 0}}):(D((function(n){Gn[n]=B(n)})),Gn)),pt=function(n){return function(){return""+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.GROUP=4]="GROUP"}(Ln||(Ln={}));var vt,dt=R((function(n,t){return t?null:Bn({},{isolate:{type:Ln.DEFAULT},testCursor:H(),exclusion:{tests:{},groups:{}}},n)})),ht=z(),gt=z(20),mt=z(20),yt=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=On(),Tn(r,n,t))return t;var e=function(){return r(Cn())};return wn(n)?(e(),t):(Sn(e,n),t)};(vt||(vt={})).TEST_COMPLETED="test_completed",kn.group=function(n){return An("only","groups",n)},Fn.group=function(n){return An("skip","groups",n)};var Nt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=pt(),this.warns=!1,this.status=bt,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,p(this.message)&&v(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Pt||(this.status=n)},n.prototype.setPending=function(){this.setStatus(wt)},n.prototype.fail=function(){this.setStatus(this.warns?Ot:Ct)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Tt)},n.prototype.warn=function(){this.warns=!0},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(){this.setStatus(Et)},n.prototype.cancel=function(){this.setStatus(St),Q()},n.prototype.omit=function(){this.setStatus(Pt)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===wt},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.status===Pt},n.prototype.isUntested=function(){return this.status===bt},n.prototype.isFailing=function(){return this.status===Ct},n.prototype.isCanceled=function(){return this.status===St},n.prototype.isSkipped=function(){return this.status===Et},n.prototype.isPassing=function(){return this.status===Tt},n.prototype.isWarning=function(){return this.status===Ot},n}(),bt="UNTESTED",Et="SKIPPED",Ct="FAILED",Ot="WARNING",Tt="PASSING",wt="PENDING",St="CANCELED",Pt="OMITTED",xt=Bn(Dn,{each:function(n){return function(r){return N(r)||j("test.each: Expected table to be an array."),function(e){for(var i=[],o=1;o<arguments.length;o++)i[o-1]=arguments[o];var s=(i=i.reverse())[0],a=i[1];return rn({type:Ln.EACH},(function(){return r.map((function(r){return r=[].concat(r),n(u.apply(void 0,t([e],r)),u.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}))}}}(Dn),memo:function(n){var t=z(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Y().suiteId()[0];var i=dt.useX().testCursor.cursorAt(),o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),null===(u=t.get(e))?t(e,(function(){return n(r,s,o)})):u[1].isCanceled()?(t.invalidate(e),t(e,(function(){return n(r,s,o)}))):Un(u[1])}}(Dn)});n.VERSION="4.0.0-dev-8851ff",n.create=function(n){r(n)||j("Suite initialization error. Expected `tests` to be a function.");var t=function(){var n=function(){var n={};return{emit:function(t,r){n[t]&&n[t].forEach((function(n){n(r)}))},on:function(t,r){return n[t]||(n[t]=[]),n[t].push(r),{off:function(){n[t]=n[t].filter((function(n){return n!==r}))}}}}}();return n.on(vt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=Y().testCallbacks()[0].fieldCallbacks;n&&!on(n)&&N(t[n])&&Pn(t[n]),n=Y().testCallbacks()[0].doneCallbacks,on()||Pn(n)}})),n}(),e=function(n){function t(n,t,r){return i.references.push(),e(n,u(t,r)),function(){return[i.references[n],function(t){return e(n,u(t,i.references[n]))}]}}function e(t,e){var u=i.references[t];i.references[t]=e,r(t=o[t][1])&&t(e,u),r(n)&&n()}var i={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){var n=i.references;i.references=[],o.forEach((function(r,e){return t(e,r[0],n[e])}))}}}(),i=function(n,t){return t=t.suiteId,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}(e,{suiteId:pt()});return Bn(dt.bind({stateRef:i,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return e.reset(),rn({type:Ln.SUITE},(function(){n.apply(void 0,t)})),un(),On()})),{get:dt.bind({stateRef:i},Cn),remove:dt.bind({stateRef:i},(function(n){nn().forEach((function(t){en(t,n)&&(t.cancel(),function(n){Z((function(t){return M(t,(function(t){return n!==t?t:null}))}))}(t))}))})),reset:e.reset})},n.enforce=lt,n.group=function(n,t){v(n)||Wn("name must be a string"),r(t)||Wn("callback must be a function"),rn({type:Ln.GROUP},(function(){dt.run({groupName:n},t)}))},n.only=kn,n.optional=function(n){(0,Y().optionalFields()[1])((function(t){if(N(n)||v(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var r in n)t[r]=n[r];return t}))},n.skip=Fn,n.skipWhen=function(n,t){rn({type:Ln.SKIP_WHEN},(function(){dt.run({skipped:u(n)},(function(){return t()}))}))},n.test=xt,n.warn=function(){var n=dt.useX("warn hook called outside of a running suite.");n.currentTest||j("warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
|
package/package.json
CHANGED
package/types/vest.d.ts
CHANGED
|
@@ -318,5 +318,5 @@ declare const _default: typeof testBase & {
|
|
|
318
318
|
};
|
|
319
319
|
};
|
|
320
320
|
declare const test: typeof _default;
|
|
321
|
-
declare const VERSION = "4.0.0-dev-
|
|
321
|
+
declare const VERSION = "4.0.0-dev-8851ff";
|
|
322
322
|
export { test, create, only, skip, warn, group, optional$0 as optional, skipWhen, enforce, VERSION };
|