co.validation 2.7.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/lib/createValidation.d.ts +6 -0
  2. package/lib/createValidation.d.ts.map +1 -0
  3. package/lib/createValidation.js +153 -204
  4. package/lib/createValidation.js.map +1 -0
  5. package/lib/helpers.d.ts +2 -0
  6. package/lib/helpers.d.ts.map +1 -0
  7. package/lib/helpers.js +4 -8
  8. package/lib/helpers.js.map +1 -0
  9. package/lib/index.d.ts +7 -0
  10. package/lib/index.d.ts.map +1 -0
  11. package/lib/index.js +18 -38
  12. package/lib/index.js.map +1 -0
  13. package/lib/messageProcessor.d.ts +7 -0
  14. package/lib/messageProcessor.d.ts.map +1 -0
  15. package/lib/messageProcessor.js +45 -51
  16. package/lib/messageProcessor.js.map +1 -0
  17. package/lib/operators.d.ts +4 -0
  18. package/lib/operators.d.ts.map +1 -0
  19. package/lib/operators.js +60 -71
  20. package/lib/operators.js.map +1 -0
  21. package/lib/types.d.ts +123 -0
  22. package/lib/types.d.ts.map +1 -0
  23. package/lib/types.js +3 -0
  24. package/lib/types.js.map +1 -0
  25. package/lib/validators.d.ts +18 -0
  26. package/lib/validators.d.ts.map +1 -0
  27. package/lib/validators.js +164 -196
  28. package/lib/validators.js.map +1 -0
  29. package/package.json +13 -21
  30. package/tsconfig.json +32 -0
  31. package/lib/__tests__/component.arrayValidation.js +0 -201
  32. package/lib/__tests__/component.objectValidation.js +0 -556
  33. package/lib/__tests__/component.reduxFormValidation.js +0 -20
  34. package/lib/__tests__/component.valueValidation.js +0 -923
  35. package/lib/__tests__/integration.objectValidation.js +0 -64
  36. package/lib/__tests__/integration.registrationForm.js +0 -234
  37. package/lib/__tests__/integration.valueValidation.js +0 -448
  38. package/lib/__tests__/operators.js +0 -28
  39. package/lib/__tests__/unit.operators.js +0 -125
  40. package/lib/createObjectValidation.js +0 -34
  41. package/lib/createValueValidation.js +0 -71
@@ -1,64 +0,0 @@
1
- "use strict";
2
-
3
- var _ = require("..");
4
-
5
- describe('createObjectValidation', () => {
6
- it('supports property validation for invalid object', () => {
7
- const validatedObject = {
8
- login: ''
9
- };
10
- const validationResult = (0, _.createObjectValidation)({
11
- login: {
12
- type: 'required'
13
- }
14
- })(validatedObject);
15
- expect(validationResult.errors).toEqual({
16
- login: ['Required']
17
- });
18
- expect(validationResult.data).toEqual(validatedObject);
19
- });
20
- it('supports property validation for invalid object and omits extra properties', () => {
21
- const validatedObject = {
22
- login: '',
23
- password: ''
24
- };
25
- const validationResult = (0, _.createObjectValidation)({
26
- login: {
27
- type: 'required'
28
- }
29
- })(validatedObject);
30
- expect(validationResult.errors).toEqual({
31
- login: ['Required']
32
- });
33
- expect(validationResult.data).toEqual({
34
- login: ''
35
- });
36
- });
37
- it('supports property validation for valid object', () => {
38
- const validatedObject = {
39
- login: 'asd'
40
- };
41
- const validationResult = (0, _.createObjectValidation)({
42
- login: {
43
- type: 'required'
44
- }
45
- })(validatedObject);
46
- expect(validationResult.errors).toEqual(undefined);
47
- expect(validationResult.data).toEqual(validatedObject);
48
- });
49
- it('supports property validation for valid object and omits extra properties', () => {
50
- const validatedObject = {
51
- login: 'asd',
52
- password: 'dsa'
53
- };
54
- const validationResult = (0, _.createObjectValidation)({
55
- login: {
56
- type: 'required'
57
- }
58
- })(validatedObject);
59
- expect(validationResult.errors).toEqual(undefined);
60
- expect(validationResult.data).toEqual({
61
- login: 'asd'
62
- });
63
- });
64
- });
@@ -1,234 +0,0 @@
1
- "use strict";
2
-
3
- var _ = require("..");
4
-
5
- const registrationFormValidation = (0, _.createValidation)({
6
- type: 'object',
7
- rules: {
8
- firstName: {
9
- type: 'all',
10
- validators: [{
11
- type: 'required'
12
- }, {
13
- type: 'minLength',
14
- value: 3
15
- }, {
16
- type: 'maxLength',
17
- value: 30
18
- }]
19
- },
20
- lastName: {
21
- type: 'all',
22
- validators: [{
23
- type: 'required'
24
- }, {
25
- type: 'minLength',
26
- value: 3
27
- }, {
28
- type: 'maxLength',
29
- value: 30
30
- }]
31
- },
32
- email: {
33
- type: 'all',
34
- validators: [{
35
- type: 'required'
36
- }, {
37
- type: 'email'
38
- }]
39
- },
40
- age: {
41
- type: 'all',
42
- validators: [{
43
- type: 'required'
44
- }, {
45
- type: 'number'
46
- }]
47
- },
48
- numberOfDiplomas: {
49
- type: 'oneOf',
50
- validators: [{
51
- type: 'equals',
52
- to: undefined
53
- }, {
54
- type: 'number'
55
- }]
56
- },
57
- hobbies: {
58
- type: 'array',
59
- itemRule: {
60
- type: 'object',
61
- rules: {
62
- title: {
63
- type: 'all',
64
- validators: [{
65
- type: 'required'
66
- }, {
67
- type: 'minLength',
68
- value: 3
69
- }, {
70
- type: 'maxLength',
71
- value: 30
72
- }]
73
- },
74
- description: {
75
- type: 'all',
76
- validators: [{
77
- type: 'minLength',
78
- value: 30
79
- }, {
80
- type: 'maxLength',
81
- value: 300
82
- }]
83
- },
84
- toys: {
85
- type: 'array',
86
- itemRule: {
87
- type: 'required'
88
- }
89
- }
90
- }
91
- }
92
- }
93
- }
94
- });
95
- const ukErrors = {
96
- '##object': 'Має бути об\'єкт',
97
- '##array': 'Має бути масив',
98
- '##required': 'Обов\'язково',
99
- '##equals': `Має дорівнювати {to}`,
100
- '##maxLength': `Має бути {max} символів або менше`,
101
- '##minLength': `Має бути принаймні {min} символів`,
102
- '##number': 'Має бути число',
103
- '##minValue': `Має бути принаймні {min}`,
104
- '##maxValue': `Має бути не більше ніж {max}`,
105
- '##email': 'Недійсний формат електронної пошти',
106
- '##alphanumeric': 'Тільки буквено-цифрові символи',
107
- '##string': 'Має бути рядок',
108
- '##boolean': 'Має бути логічним значенням',
109
- '##equalsToField': 'Має дорівнювати {field}',
110
- '##regex': 'Недійсний формат',
111
- '##custom': 'Помилка'
112
- };
113
- describe('registrationFormValidation in language=' + encodeURI, () => {
114
- it('success of full validation', () => {
115
- const validatedObject = {
116
- firstName: 'John',
117
- lastName: 'Doe',
118
- email: 'john.doe@example.com',
119
- age: 25,
120
- numberOfDiplomas: '2',
121
- hobbies: [{
122
- title: 'Gardening',
123
- description: 'I love spending time in my garden, growing flowers and vegetables.',
124
- toys: ['Shovel', 'Watering can']
125
- }, {
126
- title: 'Cooking',
127
- description: 'Cooking is my passion. I enjoy experimenting with new recipes.',
128
- toys: ['Cookware', 'Cutting board']
129
- }]
130
- };
131
- ;
132
- const validationResult = registrationFormValidation(validatedObject);
133
- expect(validationResult.errors).toEqual(undefined);
134
- expect(validationResult.data).toEqual({ ...validatedObject,
135
- numberOfDiplomas: 2
136
- });
137
- });
138
- ['en', 'uk', 'en'].map(lang => {
139
- it('single invalid item creates error without array in lang' + lang, () => {
140
- if (lang === 'en') {
141
- (0, _.resetDefaultMessages)();
142
- } else {
143
- (0, _.setDefaultMessages)(ukErrors);
144
- }
145
-
146
- const validatedObject = {};
147
- const validationResult = registrationFormValidation(validatedObject);
148
- expect(validationResult.errors).toEqual({
149
- firstName: [lang === 'en' ? 'Required' : 'Обов\'язково'],
150
- lastName: [lang === 'en' ? 'Required' : 'Обов\'язково'],
151
- email: [lang === 'en' ? 'Required' : 'Обов\'язково'],
152
- age: [lang === 'en' ? 'Required' : 'Обов\'язково']
153
- });
154
- expect(validationResult.data).toEqual(undefined);
155
- });
156
- });
157
- it('single invalid item creates error with empty array', () => {
158
- const validatedObject = {
159
- hobbies: []
160
- };
161
- const validationResult = registrationFormValidation(validatedObject);
162
- expect(validationResult.errors).toEqual({
163
- firstName: ['Required'],
164
- lastName: ['Required'],
165
- email: ['Required'],
166
- age: ['Required']
167
- });
168
- expect(validationResult.data).toEqual(validatedObject);
169
- });
170
- it('single valid item stays in data and single invalid creates error', () => {
171
- const validatedObject = [{
172
- login: 'hey'
173
- }, {
174
- login: ''
175
- }];
176
- const validationResult = (0, _.createValidation)({
177
- type: 'array',
178
- itemRule: {
179
- type: 'object',
180
- rules: {
181
- login: {
182
- type: 'required'
183
- }
184
- }
185
- }
186
- })(validatedObject);
187
- expect(validationResult.errors).toEqual([null, {
188
- login: ['Required']
189
- }]);
190
- expect(validationResult.data).toEqual([validatedObject[0]]);
191
- });
192
- it('invalid inner array', () => {
193
- const validatedObject = {
194
- firstName: 'firstName',
195
- lastName: 'lastName',
196
- email: 'test@mail.com',
197
- age: '12',
198
- hobbies: [1, {
199
- title: 'title'
200
- }, {
201
- title: 'title',
202
- toys: [null, 123]
203
- }, {}, {
204
- title: 'title',
205
- description: 'description',
206
- toys: [1, true, 'test']
207
- }]
208
- };
209
- const validationResult = registrationFormValidation(validatedObject);
210
- expect(validationResult.data).toEqual({
211
- firstName: 'firstName',
212
- lastName: 'lastName',
213
- email: 'test@mail.com',
214
- age: 12,
215
- hobbies: [{
216
- title: 'title'
217
- }, {
218
- title: 'title',
219
- toys: [123]
220
- }, {
221
- title: 'title',
222
- description: 'description',
223
- toys: [1, true, 'test']
224
- }]
225
- });
226
- expect(validationResult.errors).toEqual({
227
- hobbies: [['Must be an object'], null, {
228
- toys: [['Required'], null]
229
- }, {
230
- title: ['Required']
231
- }, null]
232
- });
233
- });
234
- });