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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +2 -57
  3. package/dist/cjs/classnames.development.js +18 -16
  4. package/dist/cjs/classnames.production.js +1 -1
  5. package/dist/cjs/enforce/compose.development.js +5 -54
  6. package/dist/cjs/enforce/compose.production.js +1 -1
  7. package/dist/cjs/enforce/compounds.development.js +20 -83
  8. package/dist/cjs/enforce/compounds.production.js +1 -1
  9. package/dist/cjs/enforce/schema.development.js +19 -82
  10. package/dist/cjs/enforce/schema.production.js +1 -1
  11. package/dist/cjs/parser.development.js +12 -9
  12. package/dist/cjs/parser.production.js +1 -1
  13. package/dist/cjs/promisify.development.js +4 -8
  14. package/dist/cjs/promisify.production.js +1 -1
  15. package/dist/cjs/vest.development.js +1287 -1153
  16. package/dist/cjs/vest.production.js +1 -1
  17. package/dist/es/classnames.development.js +20 -18
  18. package/dist/es/classnames.production.js +1 -1
  19. package/dist/es/enforce/compose.development.js +1 -58
  20. package/dist/es/enforce/compose.production.js +1 -1
  21. package/dist/es/enforce/compounds.development.js +2 -90
  22. package/dist/es/enforce/compounds.production.js +1 -1
  23. package/dist/es/enforce/schema.development.js +2 -88
  24. package/dist/es/enforce/schema.production.js +1 -1
  25. package/dist/es/parser.development.js +12 -9
  26. package/dist/es/parser.production.js +1 -1
  27. package/dist/es/promisify.development.js +5 -9
  28. package/dist/es/promisify.production.js +1 -1
  29. package/dist/es/vest.development.js +1286 -1148
  30. package/dist/es/vest.production.js +1 -1
  31. package/dist/umd/classnames.development.js +21 -19
  32. package/dist/umd/classnames.production.js +1 -1
  33. package/dist/umd/enforce/compose.development.js +9 -57
  34. package/dist/umd/enforce/compose.production.js +1 -1
  35. package/dist/umd/enforce/compounds.development.js +32 -94
  36. package/dist/umd/enforce/compounds.production.js +1 -1
  37. package/dist/umd/enforce/schema.development.js +32 -94
  38. package/dist/umd/enforce/schema.production.js +1 -1
  39. package/dist/umd/parser.development.js +16 -13
  40. package/dist/umd/parser.production.js +1 -1
  41. package/dist/umd/promisify.development.js +7 -11
  42. package/dist/umd/promisify.production.js +1 -1
  43. package/dist/umd/vest.development.js +1289 -1155
  44. package/dist/umd/vest.production.js +1 -1
  45. package/package.json +12 -16
  46. package/src/__tests__/__snapshots__/integration.async-tests.test.ts.snap +71 -0
  47. package/src/__tests__/__snapshots__/integration.base.test.ts.snap +71 -0
  48. package/src/__tests__/__snapshots__/integration.stateful-async.test.ts.snap +243 -0
  49. package/src/__tests__/__snapshots__/integration.stateful-tests.test.ts.snap +376 -0
  50. package/src/__tests__/integration.async-tests.test.ts +90 -0
  51. package/src/__tests__/integration.base.test.ts +45 -0
  52. package/src/__tests__/integration.exclusive.test.ts +88 -0
  53. package/src/__tests__/integration.stateful-async.test.ts +137 -0
  54. package/src/__tests__/integration.stateful-tests.test.ts +155 -0
  55. package/src/__tests__/isolate.test.ts +288 -0
  56. package/src/__tests__/state_refill.test.ts +41 -0
  57. package/src/core/SuiteWalker/SuiteWalker.ts +64 -0
  58. package/src/core/SuiteWalker/__tests__/hasRemainingTests.test.ts +130 -0
  59. package/src/core/VestBus/VestBus.ts +78 -0
  60. package/src/core/context/PersistedContext.ts +243 -0
  61. package/src/core/context/SuiteContext.ts +74 -0
  62. package/src/core/isolate/IsolateTest/IsolateTest.ts +213 -0
  63. package/src/core/isolate/IsolateTest/IsolateTestReconciler.ts +156 -0
  64. package/src/core/isolate/IsolateTest/IsolateTestStateMachine.ts +69 -0
  65. package/src/core/isolate/IsolateTest/SimpleStateMachine.ts +43 -0
  66. package/src/core/isolate/IsolateTest/TestWalker.ts +77 -0
  67. package/src/core/isolate/IsolateTypes.ts +10 -0
  68. package/src/core/isolate/isIsolate.ts +6 -0
  69. package/src/core/isolate/isolate.ts +110 -0
  70. package/src/core/isolate/reconciler/Reconciler/Reconciler.ts +123 -0
  71. package/src/core/isolate/reconciler/cancelOverriddenPendingTest.ts +15 -0
  72. package/src/core/isolate/reconciler/isSameProfileTest.ts +12 -0
  73. package/src/core/isolate/walker.ts +127 -0
  74. package/src/core/test/TestTypes.ts +3 -0
  75. package/src/core/test/__tests__/IsolateTest.test.ts +152 -0
  76. package/src/core/test/__tests__/__snapshots__/IsolateTest.test.ts.snap +39 -0
  77. package/src/core/test/__tests__/__snapshots__/memo.test.ts.snap +101 -0
  78. package/src/core/test/__tests__/__snapshots__/test.test.ts.snap +231 -0
  79. package/src/core/test/__tests__/key.test.ts +195 -0
  80. package/src/core/test/__tests__/memo.test.ts +218 -0
  81. package/src/core/test/__tests__/merging_of_previous_test_runs.test.ts +341 -0
  82. package/src/core/test/__tests__/runAsyncTest.test.ts +175 -0
  83. package/src/core/test/__tests__/test.test.ts +226 -0
  84. package/src/core/test/helpers/__tests__/nonMatchingSeverityProfile.test.ts +52 -0
  85. package/src/core/test/helpers/asVestTest.ts +9 -0
  86. package/src/core/test/helpers/matchingFieldName.ts +16 -0
  87. package/src/core/test/helpers/matchingGroupName.ts +12 -0
  88. package/src/core/test/helpers/nonMatchingSeverityProfile.ts +14 -0
  89. package/src/core/test/helpers/shouldUseErrorMessage.ts +9 -0
  90. package/src/core/test/test.memo.ts +81 -0
  91. package/src/core/test/test.ts +64 -0
  92. package/src/core/test/testLevelFlowControl/runTest.ts +86 -0
  93. package/src/core/test/testLevelFlowControl/verifyTestRun.ts +32 -0
  94. package/src/core/test/testObjectIsolate.ts +11 -0
  95. package/src/errors/ErrorStrings.ts +4 -0
  96. package/src/exports/__tests__/classnames.test.ts +92 -0
  97. package/src/exports/__tests__/parser.test.ts +441 -0
  98. package/src/exports/__tests__/promisify.test.ts +77 -0
  99. package/src/exports/classnames.ts +35 -0
  100. package/src/exports/enforce@compose.ts +1 -0
  101. package/src/exports/enforce@compounds.ts +1 -0
  102. package/src/exports/enforce@schema.ts +1 -0
  103. package/src/exports/parser.ts +63 -0
  104. package/src/exports/promisify.ts +18 -0
  105. package/src/hooks/__tests__/__snapshots__/include.test.ts.snap +794 -0
  106. package/src/hooks/__tests__/eager.test.ts +130 -0
  107. package/src/hooks/__tests__/exclusive.test.ts +578 -0
  108. package/src/hooks/__tests__/include.test.ts +431 -0
  109. package/src/hooks/__tests__/optional.test.ts +83 -0
  110. package/src/hooks/__tests__/warn.test.ts +42 -0
  111. package/src/hooks/exclusive.ts +179 -0
  112. package/src/hooks/include.ts +54 -0
  113. package/src/hooks/mode.ts +47 -0
  114. package/src/hooks/optional/OptionalTypes.ts +31 -0
  115. package/src/hooks/optional/optional.ts +69 -0
  116. package/src/hooks/warn.ts +19 -0
  117. package/src/isolates/__tests__/__snapshots__/each.test.ts.snap +3 -0
  118. package/src/isolates/__tests__/__snapshots__/group.test.ts.snap +114 -0
  119. package/src/isolates/__tests__/__snapshots__/omitWhen.test.ts.snap +443 -0
  120. package/src/isolates/__tests__/__snapshots__/skipWhen.test.ts.snap +99 -0
  121. package/src/isolates/__tests__/each.test.ts +35 -0
  122. package/src/isolates/__tests__/group.test.ts +362 -0
  123. package/src/isolates/__tests__/omitWhen.test.ts +246 -0
  124. package/src/isolates/__tests__/skipWhen.test.ts +163 -0
  125. package/src/isolates/each.ts +30 -0
  126. package/src/isolates/group.ts +9 -0
  127. package/src/isolates/omitWhen.ts +41 -0
  128. package/src/isolates/skipWhen.ts +42 -0
  129. package/src/suite/__tests__/__snapshots__/create.test.ts.snap +67 -0
  130. package/src/suite/__tests__/create.test.ts +109 -0
  131. package/src/suite/__tests__/remove.test.ts +50 -0
  132. package/src/suite/__tests__/resetField.test.ts +74 -0
  133. package/src/suite/createSuite.ts +94 -0
  134. package/src/suite/runCallbacks.ts +28 -0
  135. package/src/suiteResult/Severity.ts +15 -0
  136. package/src/suiteResult/SuiteResultTypes.ts +42 -0
  137. package/src/suiteResult/__tests__/done.test.ts +334 -0
  138. package/src/suiteResult/__tests__/produce.test.ts +163 -0
  139. package/src/suiteResult/done/deferDoneCallback.ts +28 -0
  140. package/src/suiteResult/done/shouldSkipDoneRegistration.ts +20 -0
  141. package/src/suiteResult/selectors/__tests__/__snapshots__/collectFailureMessages.test.ts.snap +89 -0
  142. package/src/suiteResult/selectors/__tests__/collectFailureMessages.test.ts +124 -0
  143. package/src/suiteResult/selectors/__tests__/getFailures.test.ts +158 -0
  144. package/src/suiteResult/selectors/__tests__/getFailuresByGroup.test.ts +199 -0
  145. package/src/suiteResult/selectors/__tests__/hasFailures.test.ts +141 -0
  146. package/src/suiteResult/selectors/__tests__/hasFailuresByGroup.test.ts +185 -0
  147. package/src/suiteResult/selectors/__tests__/hasFailuresByTestObject.test.ts +88 -0
  148. package/src/suiteResult/selectors/__tests__/isValid.test.ts +359 -0
  149. package/src/suiteResult/selectors/__tests__/isValidByGroup.test.ts +480 -0
  150. package/src/suiteResult/selectors/collectFailures.ts +43 -0
  151. package/src/suiteResult/selectors/hasFailuresByTestObjects.ts +62 -0
  152. package/src/suiteResult/selectors/produceSuiteSummary.ts +135 -0
  153. package/src/suiteResult/selectors/shouldAddValidProperty.ts +148 -0
  154. package/src/suiteResult/selectors/suiteSelectors.ts +199 -0
  155. package/src/suiteResult/suiteResult.ts +15 -0
  156. package/src/suiteResult/suiteRunResult.ts +43 -0
  157. package/src/vest.ts +36 -0
  158. package/testUtils/TVestMock.ts +5 -0
  159. package/testUtils/__tests__/partition.test.ts +4 -4
  160. package/testUtils/mockThrowError.ts +4 -2
  161. package/testUtils/suiteDummy.ts +2 -1
  162. package/testUtils/testDummy.ts +12 -10
  163. package/testUtils/testPromise.ts +3 -0
  164. package/tsconfig.json +84 -2
  165. package/types/classnames.d.ts +39 -4
  166. package/types/classnames.d.ts.map +1 -0
  167. package/types/enforce/compose.d.ts +2 -126
  168. package/types/enforce/compose.d.ts.map +1 -0
  169. package/types/enforce/compounds.d.ts +2 -136
  170. package/types/enforce/compounds.d.ts.map +1 -0
  171. package/types/enforce/schema.d.ts +2 -144
  172. package/types/enforce/schema.d.ts.map +1 -0
  173. package/types/parser.d.ts +45 -10
  174. package/types/parser.d.ts.map +1 -0
  175. package/types/promisify.d.ts +36 -34
  176. package/types/promisify.d.ts.map +1 -0
  177. package/types/vest.d.ts +169 -224
  178. package/types/vest.d.ts.map +1 -0
  179. package/CHANGELOG.md +0 -87
  180. package/testUtils/expandStateRef.ts +0 -8
  181. package/testUtils/runCreateRef.ts +0 -10
  182. package/testUtils/testObjects.ts +0 -6
@@ -1,12 +1,37 @@
1
- type SuiteSummary = {
1
+ interface Done<F extends TFieldName> {
2
+ (...args: [
3
+ cb: (res: SuiteResult<F>) => void
4
+ ]): SuiteRunResult<F>;
5
+ (...args: [
6
+ fieldName: F,
7
+ cb: (res: SuiteResult<F>) => void
8
+ ]): SuiteRunResult<F>;
9
+ }
10
+ interface SuiteSelectors<F extends TFieldName> {
11
+ getErrors(fieldName: F): string[];
12
+ getErrors(): FailureMessages;
13
+ getWarnings(): FailureMessages;
14
+ getWarnings(fieldName: F): string[];
15
+ getErrorsByGroup(groupName: string, fieldName: F): string[];
16
+ getErrorsByGroup(groupName: string): FailureMessages;
17
+ getWarningsByGroup(groupName: string): FailureMessages;
18
+ getWarningsByGroup(groupName: string, fieldName: F): string[];
19
+ hasErrors(fieldName?: F): boolean;
20
+ hasWarnings(fieldName?: F): boolean;
21
+ hasErrorsByGroup(groupName: string, fieldName?: F): boolean;
22
+ hasWarningsByGroup(groupName: string, fieldName?: F): boolean;
23
+ isValid(fieldName?: F): boolean;
24
+ isValidByGroup(groupName: string, fieldName?: F): boolean;
25
+ }
26
+ type SuiteSummary<F extends TFieldName> = {
2
27
  groups: Groups;
3
- tests: Tests;
28
+ tests: Tests<F>;
4
29
  valid: boolean;
5
30
  } & SummaryBase;
6
31
  type GroupTestSummary = SingleTestSummary;
7
32
  type Groups = Record<string, Group>;
8
33
  type Group = Record<string, GroupTestSummary>;
9
- type Tests = Record<string, SingleTestSummary>;
34
+ type Tests<F extends TFieldName> = Record<F, SingleTestSummary>;
10
35
  type SingleTestSummary = SummaryBase & {
11
36
  errors: string[];
12
37
  warnings: string[];
@@ -18,37 +43,14 @@ type SummaryBase = {
18
43
  testCount: number;
19
44
  };
20
45
  type FailureMessages = Record<string, string[]>;
21
- type SuiteRunResult = SuiteResult & {
22
- done: Done;
23
- };
24
- interface Done {
25
- (...args: [
26
- cb: (res: SuiteResult) => void
27
- ]): SuiteRunResult;
28
- (...args: [
29
- fieldName: string,
30
- cb: (res: SuiteResult) => void
31
- ]): SuiteRunResult;
32
- }
33
- type SuiteName = string | void;
34
- interface SuiteSelectors {
35
- getErrors(fieldName: string): string[];
36
- getErrors(): FailureMessages;
37
- getWarnings(): FailureMessages;
38
- getWarnings(fieldName: string): string[];
39
- getErrorsByGroup(groupName: string, fieldName: string): string[];
40
- getErrorsByGroup(groupName: string): FailureMessages;
41
- getWarningsByGroup(groupName: string): FailureMessages;
42
- getWarningsByGroup(groupName: string, fieldName: string): string[];
43
- hasErrors(fieldName?: string): boolean;
44
- hasWarnings(fieldName?: string): boolean;
45
- hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
46
- hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
47
- isValid(fieldName?: string): boolean;
48
- isValidByGroup(groupName: string, fieldName?: string): boolean;
49
- }
50
- type SuiteResult = SuiteSummary & SuiteSelectors & {
46
+ type SuiteResult<F extends TFieldName> = SuiteSummary<F> & SuiteSelectors<F> & {
51
47
  suiteName: SuiteName;
52
48
  };
53
- declare const promisify: (validatorFn: (...args: any[]) => SuiteRunResult) => (...args: any[]) => Promise<SuiteResult>;
49
+ type SuiteRunResult<F extends TFieldName> = SuiteResult<F> & {
50
+ done: Done<F>;
51
+ };
52
+ type SuiteName = string | undefined;
53
+ type TFieldName<T extends string = string> = T;
54
+ declare function promisify<F extends TFieldName>(validatorFn: (...args: any[]) => SuiteRunResult<F>): (...args: any[]) => Promise<SuiteResult<F>>;
54
55
  export { promisify as default };
56
+ //# sourceMappingURL=promisify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promisify.d.ts","sourceRoot":"","sources":["../src/exports/promisify.ts","../src/hooks/optional/OptionalTypes.ts","../src/hooks/optional/optional.ts","../src/core/isolate/IsolateTypes.ts","../src/core/isolate/isolate.ts","../src/core/isolate/reconciler/Reconciler/Reconciler.ts","../src/core/isolate/reconciler/isSameProfileTest.ts","../src/core/isolate/reconciler/cancelOverriddenPendingTest.ts","../src/errors/ErrorStrings.ts","../src/suiteResult/Severity.ts","../src/core/isolate/walker.ts","../src/core/SuiteWalker/SuiteWalker.ts","../src/core/test/helpers/matchingFieldName.ts","../src/core/isolate/IsolateTest/TestWalker.ts","../src/core/test/helpers/matchingGroupName.ts","../src/core/test/helpers/nonMatchingSeverityProfile.ts","../src/suiteResult/selectors/hasFailuresByTestObjects.ts","../src/hooks/mode.ts","../src/core/context/SuiteContext.ts","../src/suiteResult/selectors/shouldAddValidProperty.ts","../src/suiteResult/selectors/produceSuiteSummary.ts","../src/suiteResult/selectors/collectFailures.ts","../src/suiteResult/selectors/suiteSelectors.ts","../src/suiteResult/suiteResult.ts","../src/isolates/skipWhen.ts","../src/hooks/exclusive.ts","../src/core/isolate/isIsolate.ts","../src/isolates/omitWhen.ts","../src/core/isolate/IsolateTest/IsolateTestReconciler.ts","../src/core/isolate/IsolateTest/SimpleStateMachine.ts","../src/core/isolate/IsolateTest/IsolateTestStateMachine.ts","../src/core/test/TestTypes.ts","../src/core/test/helpers/shouldUseErrorMessage.ts","../src/core/isolate/IsolateTest/IsolateTest.ts","../src/suite/runCallbacks.ts","../src/core/VestBus/VestBus.ts","../src/core/context/PersistedContext.ts","../src/suiteResult/done/deferDoneCallback.ts","../src/suiteResult/done/shouldSkipDoneRegistration.ts","../src/suiteResult/suiteRunResult.ts","../src/suiteResult/SuiteResultTypes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,iBAAS,SAAS,CAAC,CAAC,SAAS,UAAU,EACrC,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,CAAC,CAAC,aAEjC,GAAG,EAAE,KAAG,QAAQ,YAAY,CAAC,CAAC,CAAC,CAQjD"}
package/types/vest.d.ts CHANGED
@@ -1,13 +1,41 @@
1
1
  import { enforce } from 'n4s';
2
- type SuiteSummary = {
2
+ import { CB } from "vest-utils";
3
+ interface Done<F extends TFieldName> {
4
+ (...args: [
5
+ cb: (res: SuiteResult<F>) => void
6
+ ]): SuiteRunResult<F>;
7
+ (...args: [
8
+ fieldName: F,
9
+ cb: (res: SuiteResult<F>) => void
10
+ ]): SuiteRunResult<F>;
11
+ }
12
+ // eslint-disable-next-line max-lines-per-function, max-statements
13
+ declare function suiteSelectors<F extends TFieldName>(summary: SuiteSummary<F>): SuiteSelectors<F>;
14
+ interface SuiteSelectors<F extends TFieldName> {
15
+ getErrors(fieldName: F): string[];
16
+ getErrors(): FailureMessages;
17
+ getWarnings(): FailureMessages;
18
+ getWarnings(fieldName: F): string[];
19
+ getErrorsByGroup(groupName: string, fieldName: F): string[];
20
+ getErrorsByGroup(groupName: string): FailureMessages;
21
+ getWarningsByGroup(groupName: string): FailureMessages;
22
+ getWarningsByGroup(groupName: string, fieldName: F): string[];
23
+ hasErrors(fieldName?: F): boolean;
24
+ hasWarnings(fieldName?: F): boolean;
25
+ hasErrorsByGroup(groupName: string, fieldName?: F): boolean;
26
+ hasWarningsByGroup(groupName: string, fieldName?: F): boolean;
27
+ isValid(fieldName?: F): boolean;
28
+ isValidByGroup(groupName: string, fieldName?: F): boolean;
29
+ }
30
+ type SuiteSummary<F extends TFieldName> = {
3
31
  groups: Groups;
4
- tests: Tests;
32
+ tests: Tests<F>;
5
33
  valid: boolean;
6
34
  } & SummaryBase;
7
35
  type GroupTestSummary = SingleTestSummary;
8
36
  type Groups = Record<string, Group>;
9
37
  type Group = Record<string, GroupTestSummary>;
10
- type Tests = Record<string, SingleTestSummary>;
38
+ type Tests<F extends TFieldName> = Record<F, SingleTestSummary>;
11
39
  type SingleTestSummary = SummaryBase & {
12
40
  errors: string[];
13
41
  warnings: string[];
@@ -19,38 +47,110 @@ type SummaryBase = {
19
47
  testCount: number;
20
48
  };
21
49
  type FailureMessages = Record<string, string[]>;
22
- declare enum TestSeverity {
23
- Error = "error",
24
- Warning = "warning"
50
+ type SuiteResult<F extends TFieldName> = SuiteSummary<F> & SuiteSelectors<F> & {
51
+ suiteName: SuiteName;
52
+ };
53
+ type SuiteRunResult<F extends TFieldName> = SuiteResult<F> & {
54
+ done: Done<F>;
55
+ };
56
+ type SuiteName = string | undefined;
57
+ type TFieldName<T extends string = string> = T;
58
+ type OptionalsInput<F extends TFieldName> = F | F[] | OptionalsObject<F>;
59
+ type OptionalsObject<F extends TFieldName> = Record<F, (() => boolean) | boolean>;
60
+ declare function optional<F extends TFieldName>(optionals: OptionalsInput<F>): void;
61
+ declare enum IsolateTypes {
62
+ DEFAULT = "DEFAULT",
63
+ TEST = "TEST",
64
+ SUITE = "SUITE",
65
+ EACH = "EACH",
66
+ GROUP = "GROUP",
67
+ SKIP_WHEN = "SKIP_WHEN",
68
+ OMIT_WHEN = "OMIT_WHEN",
69
+ TEST_MEMO = "TEST_MEMO"
70
+ }
71
+ type IsolateKey = null | string;
72
+ declare class Isolate<T extends IsolateTypes = IsolateTypes, _D = any> {
73
+ type: T;
74
+ children: Isolate[] | null;
75
+ keys: Record<string, Isolate>;
76
+ parent: Isolate | null;
77
+ output?: any;
78
+ key: IsolateKey;
79
+ static reconciler: typeof Reconciler;
80
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
81
+ constructor(type: T, _data?: _D);
82
+ setParent(parent: Isolate | null): this;
83
+ saveOutput(output: any): this;
84
+ setKey(key: string | null): this;
85
+ usesKey(): boolean;
86
+ addChild(child: Isolate): void;
87
+ removeChild(node: Isolate): void;
88
+ slice(at: number): void;
89
+ at(at: number): Isolate | null;
90
+ cursor(): number;
91
+ static create<Callback extends CB = CB>(type: IsolateTypes, callback: Callback, data?: any): Isolate;
92
+ private static createImplementation;
93
+ static setNode(node: Isolate): void;
94
+ static is(node: any): boolean;
95
+ }
96
+ declare class Reconciler {
97
+ static reconciler(currentNode: Isolate, historicNode: Isolate | null): Isolate;
98
+ static reconcile<Callback extends CB = CB>(node: Isolate, callback: Callback): [
99
+ Isolate,
100
+ ReturnType<Callback>
101
+ ];
102
+ static removeAllNextNodesInIsolate(): void;
103
+ static handleCollision(newNode: Isolate, prevNode: Isolate): Isolate;
104
+ static nodeReorderDetected(newNode: Isolate, prevNode: Isolate): boolean;
105
+ static onNodeReorder(newNode: Isolate, prevNode: Isolate): Isolate;
106
+ static handleIsolateNodeWithKey(node: Isolate): Isolate;
107
+ }
108
+ declare class IsolateTestReconciler extends Reconciler {
109
+ static reconciler(currentNode: Isolate, historyNode: Isolate | null): Isolate;
110
+ static nodeReorderDetected(newNode: IsolateTest, prevNode?: Isolate): boolean;
111
+ static handleCollision(newNode: IsolateTest, prevNode?: Isolate): IsolateTest;
112
+ static onNodeReorder(newNode: IsolateTest, prevNode?: Isolate): IsolateTest;
113
+ static pickNode(historyNode: IsolateTest, currentNode: IsolateTest): Isolate;
114
+ static handleNoHistoryNode(testNode: IsolateTest): IsolateTest;
25
115
  }
26
- declare class VestTest {
27
- fieldName: string;
116
+ declare enum TestStatus {
117
+ UNTESTED = "UNTESTED",
118
+ SKIPPED = "SKIPPED",
119
+ FAILED = "FAILED",
120
+ WARNING = "WARNING",
121
+ PASSING = "PASSING",
122
+ PENDING = "PENDING",
123
+ CANCELED = "CANCELED",
124
+ OMITTED = "OMITTED"
125
+ }
126
+ type TestFn = () => TestResult;
127
+ type AsyncTest = Promise<string | void | false>;
128
+ type TestResult = AsyncTest | boolean | void;
129
+ type IsolateTestInput = {
130
+ message?: string;
131
+ groupName?: string;
132
+ fieldName: TFieldName;
133
+ testFn: TestFn;
134
+ key?: IsolateKey;
135
+ };
136
+ declare class IsolateTest extends Isolate<IsolateTypes.TEST> {
137
+ children: null;
138
+ fieldName: TFieldName;
28
139
  testFn: TestFn;
29
- asyncTest?: AsyncTest;
30
140
  groupName?: string;
31
141
  message?: string;
32
- key?: null | string;
142
+ asyncTest?: AsyncTest;
33
143
  id: string;
34
144
  severity: TestSeverity;
35
- status: KStatus;
36
- constructor(fieldName: string, testFn: TestFn, { message, groupName, key }?: {
37
- message?: string;
38
- groupName?: string;
39
- key?: string;
40
- });
145
+ private stateMachine;
146
+ static reconciler: typeof IsolateTestReconciler;
147
+ constructor(type: IsolateTypes.TEST, { fieldName, testFn, message, groupName, key }: IsolateTestInput);
148
+ static factory<Callback extends CB = CB>(callback: Callback, data: IsolateTestInput): IsolateTest;
149
+ get status(): TestStatus;
150
+ setStatus(status: TestStatus, payload?: any): void;
41
151
  run(): TestResult;
42
- setStatus(status: KStatus): void;
152
+ // Selectors
43
153
  warns(): boolean;
44
- setPending(): void;
45
- fail(): void;
46
- done(): void;
47
- warn(): void;
48
- isFinalStatus(): boolean;
49
- skip(force?: boolean): void;
50
- cancel(): void;
51
- reset(): void;
52
- omit(): void;
53
- valueOf(): boolean;
54
154
  isPending(): boolean;
55
155
  isOmitted(): boolean;
56
156
  isUntested(): boolean;
@@ -63,172 +163,34 @@ declare class VestTest {
63
163
  isNonActionable(): boolean;
64
164
  isTested(): boolean;
65
165
  awaitsResolution(): boolean;
66
- statusEquals(status: KStatus): boolean;
67
- }
68
- type AsyncTest = Promise<string | void>;
69
- type TestResult = AsyncTest | boolean | void;
70
- type TestFn = () => TestResult;
71
- type KStatus = "UNTESTED" | "SKIPPED" | "FAILED" | "WARNING" | "PASSING" | "PENDING" | "CANCELED" | "OMITTED";
72
- type CB = (...args: any[]) => any;
73
- // eslint-disable-next-line max-lines-per-function, max-statements
74
- declare function suiteSelectors(summary: SuiteSummary): SuiteSelectors;
75
- interface SuiteSelectors {
76
- getErrors(fieldName: string): string[];
77
- getErrors(): FailureMessages;
78
- getWarnings(): FailureMessages;
79
- getWarnings(fieldName: string): string[];
80
- getErrorsByGroup(groupName: string, fieldName: string): string[];
81
- getErrorsByGroup(groupName: string): FailureMessages;
82
- getWarningsByGroup(groupName: string): FailureMessages;
83
- getWarningsByGroup(groupName: string, fieldName: string): string[];
84
- hasErrors(fieldName?: string): boolean;
85
- hasWarnings(fieldName?: string): boolean;
86
- hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
87
- hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
88
- isValid(fieldName?: string): boolean;
89
- isValidByGroup(groupName: string, fieldName?: string): boolean;
166
+ statusEquals(status: TestStatus): boolean;
167
+ // State modifiers
168
+ setPending(): void;
169
+ fail(): void;
170
+ pass(): void;
171
+ warn(): void;
172
+ skip(force?: boolean): void;
173
+ cancel(): void;
174
+ reset(): void;
175
+ omit(): void;
176
+ valueOf(): boolean;
177
+ isAsyncTest(): boolean;
178
+ static is(value: any): value is IsolateTest;
179
+ static isX(value: any): asserts value is IsolateTest;
90
180
  }
91
- type SuiteResult = SuiteSummary & SuiteSelectors & {
92
- suiteName: SuiteName;
93
- };
94
- type SuiteRunResult = SuiteResult & {
95
- done: Done;
96
- };
97
- interface Done {
98
- (...args: [
99
- cb: (res: SuiteResult) => void
100
- ]): SuiteRunResult;
101
- (...args: [
102
- fieldName: string,
103
- cb: (res: SuiteResult) => void
104
- ]): SuiteRunResult;
181
+ declare enum TestSeverity {
182
+ Error = "error",
183
+ Warning = "warning"
105
184
  }
106
- type CreateProperties = {
107
- get: () => SuiteResult;
185
+ declare function createSuite<T extends CB, F extends TFieldName>(suiteName: SuiteName, suiteCallback: T): Suite<T, F>;
186
+ declare function createSuite<T extends CB, F extends TFieldName>(suiteCallback: T): Suite<T, F>;
187
+ type Suite<T extends CB, F extends TFieldName> = ((...args: Parameters<T>) => SuiteRunResult<F>) & SuiteMethods<F>;
188
+ type SuiteMethods<F extends TFieldName> = {
189
+ get: () => SuiteResult<F>;
108
190
  reset: () => void;
109
- resetField: (fieldName: string) => void;
110
- remove: (fieldName: string) => void;
111
- };
112
- type Suite<T extends CB> = {
113
- (...args: Parameters<T>): SuiteRunResult;
114
- } & CreateProperties;
115
- /**
116
- * Creates a new validation suite
117
- *
118
- * @example
119
- *
120
- * const suite = create((data = {}) => {
121
- * test("username", "Username is required", () => {
122
- * enforce(data.username).isNotBlank();
123
- * });
124
- * });
125
- */
126
- declare function create<T extends CB>(suiteName: SuiteName, suiteCallback: T): Suite<T>;
127
- declare function create<T extends CB>(suiteCallback: T): Suite<T>;
128
- type SuiteName = string | void;
129
- type IsolateCursor = {
130
- current: () => number;
131
- next: () => void;
132
- };
133
- declare enum IsolateTypes {
134
- DEFAULT = 0,
135
- SUITE = 1,
136
- EACH = 2,
137
- SKIP_WHEN = 3,
138
- OMIT_WHEN = 4,
139
- GROUP = 5
140
- }
141
- type IsolateKeys = {
142
- current: Record<string, VestTest>;
143
- prev: Record<string, VestTest>;
144
- };
145
- type Isolate = {
146
- type: IsolateTypes;
147
- keys: IsolateKeys;
148
- path: number[];
149
- cursor: IsolateCursor;
150
- };
151
- declare enum Modes {
152
- ALL = 0,
153
- EAGER = 1
154
- }
155
- type NestedArray<T> = Array<NestedArray<T> | T>;
156
- type SetStateInput<S> = S | ((prevState: S) => S);
157
- type StateHandlerReturn<S> = [
158
- S,
159
- (nextState: SetStateInput<S>) => void
160
- ];
161
- type UseState<S> = () => StateHandlerReturn<S>;
162
- /**
163
- * Marks a field as optional, either just by name, or by a given condition.
164
- *
165
- * @example
166
- *
167
- * optional('field_name');
168
- *
169
- * optional({
170
- * username: () => allowUsernameEmpty,
171
- * });
172
- */
173
- declare function optional(optionals: OptionalsInput): void;
174
- type OptionalsInput = string | string[] | OptionalsObject;
175
- type OptionalsObject = Record<string, (() => boolean) | boolean>;
176
- type ImmediateOptionalFieldDeclaration = {
177
- type: OptionalFieldTypes.Immediate;
178
- rule: boolean | (() => boolean);
179
- applied: boolean;
180
- };
181
- type DelayedOptionalFieldDeclaration = {
182
- type: OptionalFieldTypes.Delayed;
183
- applied: boolean;
184
- rule: null;
185
- };
186
- type OptionalFieldDeclaration = ImmediateOptionalFieldDeclaration | DelayedOptionalFieldDeclaration;
187
- declare enum OptionalFieldTypes {
188
- Immediate = 0,
189
- Delayed = 1
190
- }
191
- type StateRef = {
192
- optionalFields: UseState<OptionalFields>;
193
- suiteId: UseState<string>;
194
- suiteName: UseState<SuiteName>;
195
- testCallbacks: UseState<TestCallbacks>;
196
- testObjects: UseState<TestObjects>;
197
- };
198
- type OptionalFields = Record<string, OptionalFieldDeclaration>;
199
- type TestCallbacks = {
200
- fieldCallbacks: Record<string, Array<(res: SuiteResult) => void>>;
201
- doneCallbacks: Array<(res: SuiteResult) => void>;
202
- };
203
- type TestObjects = {
204
- prev: VestTests;
205
- current: VestTests;
206
- };
207
- type VestTests = NestedArray<VestTest>;
208
- declare const _default: import("context").CtxCascadeApi<CTXType>;
209
- type CTXType = {
210
- isolate: Isolate;
211
- stateRef?: StateRef;
212
- exclusion: {
213
- tests: Record<string, boolean>;
214
- groups: Record<string, boolean>;
215
- };
216
- inclusion: Record<string, boolean | (() => boolean)>;
217
- currentTest?: VestTest;
218
- groupName?: string;
219
- skipped?: boolean;
220
- omitted?: boolean;
221
- mode: [
222
- Modes
223
- ];
224
- bus?: {
225
- on: (event: string, handler: CB) => {
226
- off: () => void;
227
- };
228
- emit: (event: string, ...args: any[]) => void;
229
- };
191
+ remove: (fieldName: F) => void;
192
+ resetField: (fieldName: F) => void;
230
193
  };
231
- declare const context: typeof _default;
232
194
  /**
233
195
  * Iterates over an array of items, allowing to run tests individually per item.
234
196
  *
@@ -244,6 +206,7 @@ declare const context: typeof _default;
244
206
  */
245
207
  declare function each<T>(list: T[], callback: (arg: T, index: number) => void): void;
246
208
  type ExclusionItem = string | string[] | undefined;
209
+ type FieldExclusion<F extends TFieldName> = F | F[] | undefined;
247
210
  /**
248
211
  * Adds a field or a list of fields into the inclusion list
249
212
  *
@@ -251,7 +214,7 @@ type ExclusionItem = string | string[] | undefined;
251
214
  *
252
215
  * only('username');
253
216
  */
254
- declare function only(item: ExclusionItem): void;
217
+ declare function only<F extends TFieldName>(item: FieldExclusion<F>): void;
255
218
  declare namespace only {
256
219
  var group: (item: ExclusionItem) => void;
257
220
  }
@@ -262,22 +225,13 @@ declare namespace only {
262
225
  *
263
226
  * skip('username');
264
227
  */
265
- declare function skip(item: ExclusionItem): void;
228
+ declare function skip<F extends TFieldName>(item: FieldExclusion<F>): void;
266
229
  declare namespace skip {
267
230
  var group: (item: ExclusionItem) => void;
268
231
  }
269
- /**
270
- * Runs tests within a group so that they can be controlled or queried separately.
271
- *
272
- * @example
273
- *
274
- * group('group_name', () => {
275
- * // Tests go here
276
- * });
277
- */
278
- declare function group(groupName: string, tests: () => void): void;
279
- declare function include(fieldName: string): {
280
- when: (condition: string | boolean | ((draft: SuiteResult) => boolean)) => void;
232
+ declare function group(groupName: string, callback: () => void): Isolate;
233
+ declare function include<F extends TFieldName>(fieldName: F): {
234
+ when: (condition: F | TFieldName | boolean | ((draft: SuiteResult<F>) => boolean)) => void;
281
235
  };
282
236
  /**
283
237
  * Sets the suite to "eager" (fail fast) mode.
@@ -308,7 +262,7 @@ declare function eager(): void;
308
262
  * test('username', 'User already taken', async () => await doesUserExist(username)
309
263
  * });
310
264
  */
311
- declare function omitWhen(conditional: boolean | ((draft: SuiteResult) => boolean), callback: CB): void;
265
+ declare function omitWhen<F extends TFieldName>(conditional: boolean | ((draft: SuiteResult<F>) => boolean), callback: CB): void;
312
266
  /**
313
267
  * Conditionally skips running tests within the callback.
314
268
  *
@@ -318,30 +272,21 @@ declare function omitWhen(conditional: boolean | ((draft: SuiteResult) => boolea
318
272
  * test('username', 'User already taken', async () => await doesUserExist(username)
319
273
  * });
320
274
  */
321
- declare function skipWhen(conditional: boolean | ((draft: SuiteResult) => boolean), callback: CB): void;
322
- declare function testBase(fieldName: string, message: string, cb: TestFn): VestTest;
323
- declare function testBase(fieldName: string, cb: TestFn): VestTest;
324
- declare function testBase(fieldName: string, message: string, cb: TestFn, key: string): VestTest;
325
- declare function testBase(fieldName: string, cb: TestFn, key: string): VestTest;
326
- /**
327
- * Represents a single case in a validation suite.
328
- *
329
- * @example
330
- *
331
- * test("username", "Username is required", () => {
332
- * enforce(data.username).isNotBlank();
333
- * });
334
- */
335
- declare const test: typeof testBase & {
275
+ declare function skipWhen<F extends TFieldName>(condition: boolean | ((draft: SuiteResult<F>) => boolean), callback: CB): void;
276
+ declare function vestTest<F extends TFieldName>(fieldName: F, message: string, cb: TestFn): IsolateTest;
277
+ declare function vestTest<F extends TFieldName>(fieldName: F, cb: TestFn): IsolateTest;
278
+ declare function vestTest<F extends TFieldName>(fieldName: F, message: string, cb: TestFn, key: IsolateKey): IsolateTest;
279
+ declare function vestTest<F extends TFieldName>(fieldName: F, cb: TestFn, key: IsolateKey): IsolateTest;
280
+ declare const test: typeof vestTest & {
336
281
  memo: {
337
- (fieldName: string, test: TestFn, deps: unknown[]): VestTest;
338
- (fieldName: string, message: string, test: TestFn, deps: unknown[]): VestTest;
282
+ (fieldName: string, test: TestFn, dependencies: unknown[]): IsolateTest;
283
+ (fieldName: string, message: string, test: TestFn, dependencies: unknown[]): IsolateTest;
339
284
  };
340
285
  };
341
286
  /**
342
287
  * Sets a running test to warn only mode.
343
288
  */
344
289
  declare function warn(): void;
345
- declare const VERSION = "5.0.0-dev-781e21";
346
- export { suiteSelectors, test, create, each, only, skip, warn, group, optional, skipWhen, omitWhen, enforce, VERSION, context, include, eager };
347
- export type { SuiteResult, SuiteRunResult, SuiteSummary, VestTest, Suite };
290
+ export { createSuite as create, test, group, optional, enforce, skip, skipWhen, omitWhen, only, warn, include, suiteSelectors, eager, each };
291
+ export type { SuiteResult, SuiteRunResult, SuiteSummary, IsolateTest, Suite };
292
+ //# sourceMappingURL=vest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vest.d.ts","sourceRoot":"","sources":["../src/vest.ts","../src/core/isolate/IsolateTypes.ts","../src/core/isolate/isolate.ts","../src/core/isolate/reconciler/Reconciler/Reconciler.ts","../src/core/isolate/reconciler/isSameProfileTest.ts","../src/core/isolate/reconciler/cancelOverriddenPendingTest.ts","../src/errors/ErrorStrings.ts","../src/suiteResult/Severity.ts","../src/core/isolate/walker.ts","../src/core/SuiteWalker/SuiteWalker.ts","../src/core/test/helpers/matchingFieldName.ts","../src/core/isolate/IsolateTest/TestWalker.ts","../src/core/test/helpers/matchingGroupName.ts","../src/core/test/helpers/nonMatchingSeverityProfile.ts","../src/suiteResult/selectors/hasFailuresByTestObjects.ts","../src/hooks/mode.ts","../src/core/context/SuiteContext.ts","../src/suiteResult/selectors/shouldAddValidProperty.ts","../src/suiteResult/selectors/produceSuiteSummary.ts","../src/suiteResult/selectors/collectFailures.ts","../src/suiteResult/selectors/suiteSelectors.ts","../src/suiteResult/suiteResult.ts","../src/isolates/skipWhen.ts","../src/hooks/exclusive.ts","../src/core/isolate/isIsolate.ts","../src/isolates/omitWhen.ts","../src/core/isolate/IsolateTest/IsolateTestReconciler.ts","../src/core/isolate/IsolateTest/SimpleStateMachine.ts","../src/core/isolate/IsolateTest/IsolateTestStateMachine.ts","../src/core/test/TestTypes.ts","../src/core/test/helpers/shouldUseErrorMessage.ts","../src/core/isolate/IsolateTest/IsolateTest.ts","../src/suite/runCallbacks.ts","../src/core/VestBus/VestBus.ts","../src/core/context/PersistedContext.ts","../src/suiteResult/done/deferDoneCallback.ts","../src/suiteResult/done/shouldSkipDoneRegistration.ts","../src/suiteResult/suiteRunResult.ts","../src/suiteResult/SuiteResultTypes.ts","../src/hooks/optional/OptionalTypes.ts","../src/hooks/optional/optional.ts","../src/suite/createSuite.ts","../src/isolates/each.ts","../src/isolates/group.ts","../src/hooks/include.ts","../src/core/test/test.memo.ts","../src/core/test/testLevelFlowControl/verifyTestRun.ts","../src/core/test/testLevelFlowControl/runTest.ts","../src/core/test/testObjectIsolate.ts","../src/core/test/test.ts","../src/hooks/warn.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkB9B,OAAO,qIAeN,CAAC;AAEF,YAAY,iEAAiE,CAAC"}
package/CHANGELOG.md DELETED
@@ -1,87 +0,0 @@
1
- # vest - Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
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
-
7
- ## 3.2.7 - 2021-07-17
8
-
9
- ### Fixed and improved
10
-
11
- - .github/PULL_REQUEST_TEMPLATE.md
12
- - aec6cd6 chore: cleanup unused code (ealush)
13
- - 0103b38 lint: handling lint of all packages (ealush)
14
- - .gitignore
15
- - 03cf487 patch(n4s): add ruleReturn default values (ealush)
16
- - 76e8c98 fix(n4s): make enforce compound runners fall back to correct response (ealush)
17
- - ff91bd2 fix(n4s): make enforce chaining work (ealush)
18
- - c3fd912 chore: some lint fixes (ealush)
19
- - f6321cf add cli options support (ealush)
20
- - 49b6b84 Vest 4 Infra Setup (ealush)
21
- - ba6c296 patch: remove unused optional references from the state (ealush)
22
-
23
- ## 3.2.6 - 2021-07-17
24
-
25
- ### Fixed and improved
26
-
27
- - .github/PULL_REQUEST_TEMPLATE.md
28
- - aec6cd6 chore: cleanup unused code (ealush)
29
- - 0103b38 lint: handling lint of all packages (ealush)
30
- - .gitignore
31
- - 03cf487 patch(n4s): add ruleReturn default values (ealush)
32
- - 76e8c98 fix(n4s): make enforce compound runners fall back to correct response (ealush)
33
- - ff91bd2 fix(n4s): make enforce chaining work (ealush)
34
- - c3fd912 chore: some lint fixes (ealush)
35
- - f6321cf add cli options support (ealush)
36
- - 49b6b84 Vest 4 Infra Setup (ealush)
37
- - ba6c296 patch: remove unused optional references from the state (ealush)
38
-
39
- ## 3.2.5 - 2021-07-17
40
-
41
- ### Fixed and improved
42
-
43
- - .github/PULL_REQUEST_TEMPLATE.md
44
- - aec6cd6 chore: cleanup unused code (ealush)
45
- - 0103b38 lint: handling lint of all packages (ealush)
46
- - .gitignore
47
- - 03cf487 patch(n4s): add ruleReturn default values (ealush)
48
- - 76e8c98 fix(n4s): make enforce compound runners fall back to correct response (ealush)
49
- - ff91bd2 fix(n4s): make enforce chaining work (ealush)
50
- - c3fd912 chore: some lint fixes (ealush)
51
- - f6321cf add cli options support (ealush)
52
- - 49b6b84 Vest 4 Infra Setup (ealush)
53
- - ba6c296 patch: remove unused optional references from the state (ealush)
54
-
55
- ## 1.0.31 - 2021-07-02
56
-
57
- ### Fixed and improved
58
-
59
- - e6ea7d6 support global replaces (undefined)
60
- - 34e0414 improved conditions (undefined)
61
- - 26c28c6 all tests pass (undefined)
62
- - 33f4e46 release (undefined)
63
- - 6fe40c7 better bundle (undefined)
64
- - c2cfb65 better typing (undefined)
65
- - c6387ab before ts settings (undefined)
66
- - c0e9708 generate correct d.ts file (undefined)
67
- - packages/vest/types/vest.development.d.ts
68
- - 8e01b8e x (undefined)
69
- - afb3960 x (undefined)
70
- - e0a8463 add changelog support (undefined)
71
- - cc46c38 current (undefined)
72
- - 4a2073f patch(vest): changes (ealush)
73
- - c0a1705 patch(vest): changes (ealush)
74
- - 240386c better create generic (ealush)
75
- - b6db1c6 transform any to unknowns (ealush)
76
- - f2c20a7 add done integration tests (ealush)
77
- - ba56e33 produce methods (ealush)
78
- - 0638243 better produce integration tests (ealush)
79
- - 4098a11 getFailures as integration tests (ealush)
80
- - f56cf7f pd (ealush)
81
- - 2ea440e pd (ealush)
82
- - b3032ef relocate draftresult (ealush)
83
- - 962141f test getFailuresByGroup (ealush)
84
- - e163c56 test getFailures (ealush)
85
- - a92b6df test collectFailureMessages (ealush)
86
- - 81aad51 fix most tests (ealush)
87
- - c149e90 simplify collectFailureMessages (ealush)
@@ -1,8 +0,0 @@
1
- export default function expandStateRef(stateRef) {
2
- const state = {};
3
- for (const key in stateRef) {
4
- const [value] = stateRef[key]();
5
- state[key] = value;
6
- }
7
- return state;
8
- }