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
@@ -0,0 +1,89 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`collectFailureMessages getErrors When no options passed should match snapshot 1`] = `
4
+ {
5
+ "field_1": [
6
+ "field_1_failure message 2",
7
+ "field_1_failure message 3",
8
+ ],
9
+ "field_2": [
10
+ "field_2_failure message 1",
11
+ "field_2_failure message 3",
12
+ ],
13
+ }
14
+ `;
15
+
16
+ exports[`collectFailureMessages getErrors When specific field requested Should match snapshot 1`] = `
17
+ [
18
+ "field_1_failure message 2",
19
+ "field_1_failure message 3",
20
+ ]
21
+ `;
22
+
23
+ exports[`collectFailureMessages getErrors When specific field requested Should match snapshot 2`] = `
24
+ [
25
+ "field_2_failure message 1",
26
+ "field_2_failure message 3",
27
+ ]
28
+ `;
29
+
30
+ exports[`collectFailureMessages getErrors When specific field requested Should match snapshot 3`] = `[]`;
31
+
32
+ exports[`collectFailureMessages getErrorsByGroup Should match snapshot 1`] = `
33
+ {
34
+ "field_1": [],
35
+ "field_2": [
36
+ "field_2_failure message 1",
37
+ "field_2_failure message 3",
38
+ ],
39
+ }
40
+ `;
41
+
42
+ exports[`collectFailureMessages getErrorsByGroup with field name Should match snapshot 1`] = `[]`;
43
+
44
+ exports[`collectFailureMessages getErrorsByGroup with field name Should match snapshot 2`] = `
45
+ [
46
+ "field_2_failure message 1",
47
+ "field_2_failure message 3",
48
+ ]
49
+ `;
50
+
51
+ exports[`collectFailureMessages getErrorsByGroup with field name Should match snapshot 3`] = `[]`;
52
+
53
+ exports[`collectFailureMessages getWarnings When no options passed should match snapshot 1`] = `
54
+ {
55
+ "field_2": [
56
+ "field_2_warning message 2",
57
+ "field_2_warning message 3",
58
+ ],
59
+ }
60
+ `;
61
+
62
+ exports[`collectFailureMessages getWarnings When specific field requested Should match snapshot 1`] = `[]`;
63
+
64
+ exports[`collectFailureMessages getWarnings When specific field requested Should match snapshot 2`] = `
65
+ [
66
+ "field_2_warning message 2",
67
+ "field_2_warning message 3",
68
+ ]
69
+ `;
70
+
71
+ exports[`collectFailureMessages getWarnings When specific field requested Should match snapshot 3`] = `[]`;
72
+
73
+ exports[`collectFailureMessages getWarningsByGroup Should match snapshot 1`] = `
74
+ {
75
+ "field_2": [
76
+ "field_2_warning message 3",
77
+ ],
78
+ }
79
+ `;
80
+
81
+ exports[`collectFailureMessages getWarningsByGroup with field name Should match snapshot 1`] = `[]`;
82
+
83
+ exports[`collectFailureMessages getWarningsByGroup with field name Should match snapshot 2`] = `
84
+ [
85
+ "field_2_warning message 3",
86
+ ]
87
+ `;
88
+
89
+ exports[`collectFailureMessages getWarningsByGroup with field name Should match snapshot 3`] = `[]`;
@@ -0,0 +1,124 @@
1
+ // TODO: Verify this test file is not needed and delete it
2
+ import { dummyTest } from '../../../../testUtils/testDummy';
3
+
4
+ import { SuiteResult } from 'SuiteResultTypes';
5
+ import { TTestSuite } from 'testUtils/TVestMock';
6
+ import { create, group } from 'vest';
7
+ import * as vest from 'vest';
8
+
9
+ describe('collectFailureMessages', () => {
10
+ let suite: TTestSuite;
11
+ let res: SuiteResult<string>;
12
+
13
+ test('Result has an array of matching error messages', () => {
14
+ const result = res.getErrors();
15
+ expect(result.field_1).toEqual([
16
+ 'field_1_failure message 2',
17
+ 'field_1_failure message 3',
18
+ ]);
19
+ });
20
+
21
+ it('Should return filtered messages by the selected group', () => {
22
+ const result = res.getErrorsByGroup('group_1');
23
+
24
+ expect(result).toEqual({
25
+ field_1: [],
26
+ field_2: ['field_2_failure message 1', 'field_2_failure message 3'],
27
+ });
28
+ });
29
+
30
+ it('Should return an empty object when no options and no failures', () => {
31
+ expect(res.getErrors('nonexistent_field')).toEqual([]);
32
+ });
33
+
34
+ it('Should return an object with an empty array when selected field has no errors', () => {
35
+ expect(res.getErrors('v')).toEqual([]);
36
+ });
37
+
38
+ describe('getErrors', () => {
39
+ describe('When no options passed', () => {
40
+ it('should match snapshot', () => {
41
+ expect(res.getErrors()).toMatchSnapshot();
42
+ });
43
+ });
44
+
45
+ describe('When specific field requested', () => {
46
+ it('Should match snapshot', () => {
47
+ expect(res.getErrors('field_1')).toMatchSnapshot();
48
+ expect(res.getErrors('field_2')).toMatchSnapshot();
49
+ expect(res.getErrors('field_3')).toMatchSnapshot();
50
+ });
51
+ });
52
+ });
53
+
54
+ describe('getWarnings', () => {
55
+ describe('When no options passed', () => {
56
+ it('should match snapshot', () => {
57
+ expect(res.getWarnings()).toMatchSnapshot();
58
+ });
59
+ });
60
+
61
+ describe('When specific field requested', () => {
62
+ it('Should match snapshot', () => {
63
+ expect(res.getWarnings('field_1')).toMatchSnapshot();
64
+ expect(res.getWarnings('field_2')).toMatchSnapshot();
65
+ expect(res.getWarnings('field_3')).toMatchSnapshot();
66
+ });
67
+ });
68
+ });
69
+
70
+ describe('getErrorsByGroup', () => {
71
+ it('Should match snapshot', () => {
72
+ expect(res.getErrorsByGroup('group_1')).toMatchSnapshot();
73
+ });
74
+
75
+ describe('with field name', () => {
76
+ it('Should match snapshot', () => {
77
+ expect(res.getErrorsByGroup('group_1', 'field_1')).toMatchSnapshot();
78
+ expect(res.getErrorsByGroup('group_1', 'field_2')).toMatchSnapshot();
79
+ expect(res.getErrorsByGroup('group_1', 'field_3')).toMatchSnapshot();
80
+ });
81
+ });
82
+ });
83
+ describe('getWarningsByGroup', () => {
84
+ it('Should match snapshot', () => {
85
+ expect(res.getWarningsByGroup('group_1')).toMatchSnapshot();
86
+ });
87
+
88
+ describe('with field name', () => {
89
+ it('Should match snapshot', () => {
90
+ expect(res.getWarningsByGroup('group_1', 'field_1')).toMatchSnapshot();
91
+ expect(res.getWarningsByGroup('group_1', 'field_2')).toMatchSnapshot();
92
+ expect(res.getWarningsByGroup('group_1', 'field_3')).toMatchSnapshot();
93
+ });
94
+ });
95
+ });
96
+
97
+ beforeEach(() => {
98
+ suite = create(() => {
99
+ dummyTest.passing('field_1', 'field_1_failure message 1');
100
+ dummyTest.failing('field_1', 'field_1_failure message 2');
101
+ dummyTest.failing('field_1', 'field_1_failure message 3');
102
+ group('group_1', () => {
103
+ vest.test('field_1', () => false);
104
+ vest.test('field_3', () => {});
105
+ });
106
+ dummyTest.failing('field_2', 'field_2_failure message 1', 'group_1');
107
+ dummyTest.passingWarning('field_2', 'field_2_warning message 1');
108
+ dummyTest.failingWarning('field_2', 'field_2_warning message 2');
109
+ dummyTest.failingWarning(
110
+ 'field_2',
111
+ 'field_2_warning message 3',
112
+ 'group_1'
113
+ );
114
+ dummyTest.failing('field_2', 'field_2_failure message 3', 'group_1');
115
+ dummyTest.passing('v');
116
+
117
+ group('group_2', () => {
118
+ dummyTest.passing('x');
119
+ });
120
+ });
121
+ suite();
122
+ res = suite.get();
123
+ });
124
+ });
@@ -0,0 +1,158 @@
1
+ import { dummyTest } from '../../../../testUtils/testDummy';
2
+
3
+ import * as vest from 'vest';
4
+
5
+ describe('->getFailures', () => {
6
+ describe(`getErrors`, () => {
7
+ describe('When no tests', () => {
8
+ describe('When no parameters passed', () => {
9
+ it('Should return an empty object', () => {
10
+ const suite = vest.create(() => {});
11
+
12
+ expect(suite().getErrors()).toEqual({});
13
+ expect(suite.get().getErrors()).toEqual({});
14
+ });
15
+ });
16
+ describe('When requesting a fieldName', () => {
17
+ it('Should return an empty array', () => {
18
+ const suite = vest.create(() => {});
19
+ expect(suite().getErrors()).toEqual({});
20
+ expect(suite.get().getErrors('field_2')).toEqual([]);
21
+ });
22
+ });
23
+ });
24
+ describe('When no errors', () => {
25
+ describe('When no parameters passed', () => {
26
+ it('Should return an object no errors', () => {
27
+ const suite = vest.create(() => {
28
+ dummyTest.passing('f1');
29
+ dummyTest.passing('f2');
30
+ });
31
+ expect(suite().getErrors()).toEqual({});
32
+ expect(suite.get().getErrors()).toEqual({});
33
+ });
34
+ });
35
+ describe('When requesting a fieldName', () => {
36
+ it('Should return an empty array', () => {
37
+ const suite = vest.create(() => {
38
+ dummyTest.passing('field_1');
39
+ dummyTest.passing();
40
+ });
41
+ expect(suite().getErrors('field_1')).toEqual([]);
42
+ expect(suite.get().getErrors('field_1')).toEqual([]);
43
+ });
44
+ });
45
+ });
46
+
47
+ describe('When there are errors', () => {
48
+ describe('When no parameters passed', () => {
49
+ it('Should return an object with an array per field', () => {
50
+ const suite = vest.create(() => {
51
+ dummyTest.failing('field_1', 'msg_1');
52
+ dummyTest.failing('field_2', 'msg_2');
53
+ dummyTest.failing('field_2', 'msg_3');
54
+ dummyTest.passing('field_1', 'msg_4');
55
+ dummyTest.failingWarning('field_1', 'msg_5');
56
+ });
57
+ expect(suite().getErrors()).toEqual({
58
+ field_1: ['msg_1'],
59
+ field_2: ['msg_2', 'msg_3'],
60
+ });
61
+ expect(suite.get().getErrors()).toEqual({
62
+ field_1: ['msg_1'],
63
+ field_2: ['msg_2', 'msg_3'],
64
+ });
65
+ });
66
+ });
67
+ describe('When requesting a fieldName', () => {
68
+ it('Should return an empty array', () => {
69
+ const suite = vest.create(() => {
70
+ dummyTest.failing('field_1', 'msg_1');
71
+ dummyTest.failing('field_2', 'msg_2');
72
+ dummyTest.failing('field_2', 'msg_3');
73
+ dummyTest.passing('field_1', 'msg_4');
74
+ dummyTest.failingWarning('field_1', 'msg_5');
75
+ });
76
+ expect(suite().getErrors('field_1')).toEqual(['msg_1']);
77
+ expect(suite.get().getErrors('field_1')).toEqual(['msg_1']);
78
+ });
79
+ });
80
+ });
81
+ });
82
+
83
+ describe(`getWarnings`, () => {
84
+ describe('When no testObjects', () => {
85
+ describe('When no parameters passed', () => {
86
+ it('Should return an empty object', () => {
87
+ const suite = vest.create(() => {});
88
+ expect(suite().getWarnings()).toEqual({});
89
+ expect(suite.get().getWarnings()).toEqual({});
90
+ });
91
+ });
92
+ describe('When requesting a fieldName', () => {
93
+ it('Should return an empty array', () => {
94
+ const suite = vest.create(() => {});
95
+ expect(suite().getWarnings('field_1')).toEqual([]);
96
+ expect(suite.get().getWarnings('field_1')).toEqual([]);
97
+ });
98
+ });
99
+ });
100
+ describe('When no warnings', () => {
101
+ describe('When no parameters passed', () => {
102
+ it('Should return an empty object', () => {
103
+ const suite = vest.create(() => {
104
+ dummyTest.passing('x');
105
+ dummyTest.passing('y');
106
+ });
107
+ expect(suite().getWarnings()).toEqual({});
108
+ expect(suite.get().getWarnings()).toEqual({});
109
+ });
110
+ });
111
+ describe('When requesting a fieldName', () => {
112
+ it('Should return an empty array', () => {
113
+ const suite = vest.create(() => {
114
+ dummyTest.passing('field_1');
115
+ dummyTest.passing();
116
+ });
117
+ expect(suite().getWarnings('field_1')).toEqual([]);
118
+ expect(suite.get().getWarnings('field_1')).toEqual([]);
119
+ });
120
+ });
121
+ });
122
+
123
+ describe('When there are warnings', () => {
124
+ describe('When no parameters passed', () => {
125
+ it('Should return an object with an array per field', () => {
126
+ const suite = vest.create(() => {
127
+ dummyTest.failingWarning('field_1', 'msg_1');
128
+ dummyTest.failingWarning('field_2', 'msg_2');
129
+ dummyTest.failingWarning('field_2', 'msg_3');
130
+ dummyTest.passingWarning('field_1', 'msg_4');
131
+ dummyTest.failing('field_1', 'msg_5');
132
+ });
133
+ expect(suite().getWarnings()).toEqual({
134
+ field_1: ['msg_1'],
135
+ field_2: ['msg_2', 'msg_3'],
136
+ });
137
+ expect(suite.get().getWarnings()).toEqual({
138
+ field_1: ['msg_1'],
139
+ field_2: ['msg_2', 'msg_3'],
140
+ });
141
+ });
142
+ });
143
+ describe('When requesting a fieldName', () => {
144
+ it('Should return an empty array', () => {
145
+ const suite = vest.create(() => {
146
+ dummyTest.failingWarning('field_1', 'msg_1');
147
+ dummyTest.failingWarning('field_2', 'msg_2');
148
+ dummyTest.failingWarning('field_2', 'msg_3');
149
+ dummyTest.passingWarning('field_1', 'msg_4');
150
+ dummyTest.failing('field_1', 'msg_5');
151
+ });
152
+ expect(suite().getWarnings('field_1')).toEqual(['msg_1']);
153
+ expect(suite.get().getWarnings('field_1')).toEqual(['msg_1']);
154
+ });
155
+ });
156
+ });
157
+ });
158
+ });
@@ -0,0 +1,199 @@
1
+ import { dummyTest } from '../../../../testUtils/testDummy';
2
+
3
+ import { TTestSuite } from 'testUtils/TVestMock';
4
+ import { create, group } from 'vest';
5
+ import * as vest from 'vest';
6
+
7
+ const modes = ['SuiteRunResult', 'SuiteResult'];
8
+
9
+ describe.each(modes)('produce method: %s', mode => {
10
+ let suite: TTestSuite;
11
+
12
+ function getRes(...args: any[]) {
13
+ const res = suite(...args);
14
+ return mode === 'SuiteRunResult' ? res : suite.get();
15
+ }
16
+
17
+ describe(`${mode}->getErrorsByGroup`, () => {
18
+ describe('When no tests', () => {
19
+ beforeEach(() => {
20
+ suite = create(() => {});
21
+ });
22
+ describe('When no fieldName passed', () => {
23
+ it('Should return an object with empty message arrays', () => {
24
+ expect(getRes().getErrorsByGroup('group_name')).toEqual({});
25
+ });
26
+ });
27
+ describe('When fieldName passed', () => {
28
+ it('Should return an empty array', () => {
29
+ expect(getRes().getErrorsByGroup('group_name', 'field_name')).toEqual(
30
+ []
31
+ );
32
+ });
33
+ });
34
+ });
35
+
36
+ describe('When no failures', () => {
37
+ describe('When no fieldName passed', () => {
38
+ it('Should return an object with empty message arrays', () => {
39
+ suite = create(() => {
40
+ dummyTest.passing('field_1', 'message', 'group_name');
41
+ dummyTest.passing('f2');
42
+ });
43
+ expect(getRes().getErrorsByGroup('group_name')).toEqual({});
44
+ });
45
+ });
46
+ describe('When fieldName passed', () => {
47
+ it('Should return an empty array', () => {
48
+ suite = create(() => {
49
+ dummyTest.passing('field_1', 'message', 'group_name');
50
+ dummyTest.passing();
51
+ });
52
+ expect(getRes().getErrorsByGroup('group_name', 'field_name')).toEqual(
53
+ []
54
+ );
55
+ });
56
+ });
57
+ });
58
+
59
+ describe('When there are failures', () => {
60
+ describe('When no fieldName passed', () => {
61
+ it('Should return an object containing the error messages of each group', () => {
62
+ suite = create(() => {
63
+ dummyTest.failing('field_1', 'message_1', 'group_name');
64
+ dummyTest.failing('field_1', 'message_2');
65
+ dummyTest.failing('field_2');
66
+ dummyTest.failing('field_2', 'message_3', 'group_name');
67
+ dummyTest.failing('field_2', 'message_4', 'group_name');
68
+ dummyTest.failing('field_2', 'message_4', 'group_name_2');
69
+ dummyTest.passing('field_1');
70
+ dummyTest.passing('field_2');
71
+ dummyTest.passing('field_3');
72
+ });
73
+ expect(getRes().getErrorsByGroup('group_name')).toEqual({
74
+ field_1: ['message_1'],
75
+ field_2: ['message_3', 'message_4'],
76
+ });
77
+ });
78
+ });
79
+ describe('When fieldName passed', () => {
80
+ it("Should return an array of the field's error messages", () => {
81
+ suite = create(() => {
82
+ group('group_name', () => {
83
+ vest.test('field_1', 'message_1', () => false);
84
+ vest.test('field_2', 'message_3', () => false);
85
+ });
86
+ vest.test('field_1', 'message_2', () => false);
87
+ vest.test('field_2', () => false);
88
+ vest.test('field_1', () => {});
89
+ vest.test('field_2', () => {});
90
+ vest.test('field_3', () => {});
91
+ });
92
+ expect(getRes().getErrorsByGroup('group_name', 'field_1')).toEqual([
93
+ 'message_1',
94
+ ]);
95
+ expect(getRes().getErrorsByGroup('group_name', 'field_2')).toEqual([
96
+ 'message_3',
97
+ ]);
98
+ });
99
+ });
100
+ });
101
+ });
102
+ describe(`${mode}->getWarningsByGroup`, () => {
103
+ describe('When no tests', () => {
104
+ beforeEach(() => {
105
+ suite = create(() => {});
106
+ });
107
+ describe('When no fieldName passed', () => {
108
+ it('Should return an object with empty message arrays', () => {
109
+ expect(getRes().getWarningsByGroup('group_name')).toEqual({});
110
+ });
111
+ });
112
+ describe('When fieldName passed', () => {
113
+ it('Should return an empty array', () => {
114
+ expect(
115
+ getRes().getWarningsByGroup('group_name', 'field_name')
116
+ ).toEqual([]);
117
+ });
118
+ });
119
+ });
120
+
121
+ describe('When no failures', () => {
122
+ describe('When no fieldName passed', () => {
123
+ it('Should return an object with no message arrays', () => {
124
+ suite = create(() => {
125
+ dummyTest.passing('field_1', 'message', 'group_name');
126
+ dummyTest.passing();
127
+ });
128
+ expect(getRes().getWarningsByGroup('group_name')).toEqual({});
129
+ });
130
+ });
131
+ describe('When fieldName passed', () => {
132
+ it('Should return an empty array', () => {
133
+ suite = create(() => {
134
+ dummyTest.passing('field_1', 'message', 'group_name');
135
+ dummyTest.passing();
136
+ });
137
+ expect(
138
+ getRes().getWarningsByGroup('group_name', 'field_name')
139
+ ).toEqual([]);
140
+ });
141
+ });
142
+ });
143
+
144
+ describe('When there are failures', () => {
145
+ describe('When no fieldName passed', () => {
146
+ it('Should return an object containing the warning messages of each group', () => {
147
+ suite = create(() => {
148
+ dummyTest.failingWarning('field_1', 'message_1', 'group_name');
149
+ dummyTest.failingWarning('field_1', 'message_2');
150
+ dummyTest.failingWarning('field_2');
151
+ dummyTest.failingWarning('field_2', 'message_3', 'group_name');
152
+ dummyTest.failingWarning('field_2', 'message_4', 'group_name');
153
+ dummyTest.failingWarning('field_2', 'message_4', 'group_name_2');
154
+ dummyTest.passing('field_1');
155
+ dummyTest.passing('field_2');
156
+ dummyTest.passing('field_3');
157
+ });
158
+ expect(getRes().getWarningsByGroup('group_name')).toEqual({
159
+ field_1: ['message_1'],
160
+ field_2: ['message_3', 'message_4'],
161
+ });
162
+ });
163
+ });
164
+ describe('When fieldName passed', () => {
165
+ it("Should return an array of the field's warning messages", () => {
166
+ suite = create(() => {
167
+ group('group_name', () => {
168
+ vest.test('field_1', 'message_1', () => {
169
+ vest.warn();
170
+ return false;
171
+ });
172
+ vest.test('field_2', 'message_3', () => {
173
+ vest.warn();
174
+ return false;
175
+ });
176
+ });
177
+ vest.test('field_1', 'message_2', () => {
178
+ vest.warn();
179
+ return false;
180
+ });
181
+ vest.test('field_2', () => {
182
+ vest.warn();
183
+ return false;
184
+ });
185
+ vest.test('field_1', () => {});
186
+ vest.test('field_2', () => {});
187
+ vest.test('field_3', () => {});
188
+ });
189
+ expect(getRes().getWarningsByGroup('group_name', 'field_1')).toEqual([
190
+ 'message_1',
191
+ ]);
192
+ expect(getRes().getWarningsByGroup('group_name', 'field_2')).toEqual([
193
+ 'message_3',
194
+ ]);
195
+ });
196
+ });
197
+ });
198
+ });
199
+ });