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.
- package/lib/createValidation.d.ts +6 -0
- package/lib/createValidation.d.ts.map +1 -0
- package/lib/createValidation.js +153 -204
- package/lib/createValidation.js.map +1 -0
- package/lib/helpers.d.ts +2 -0
- package/lib/helpers.d.ts.map +1 -0
- package/lib/helpers.js +4 -8
- package/lib/helpers.js.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +18 -38
- package/lib/index.js.map +1 -0
- package/lib/messageProcessor.d.ts +7 -0
- package/lib/messageProcessor.d.ts.map +1 -0
- package/lib/messageProcessor.js +45 -51
- package/lib/messageProcessor.js.map +1 -0
- package/lib/operators.d.ts +4 -0
- package/lib/operators.d.ts.map +1 -0
- package/lib/operators.js +60 -71
- package/lib/operators.js.map +1 -0
- package/lib/types.d.ts +123 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/validators.d.ts +18 -0
- package/lib/validators.d.ts.map +1 -0
- package/lib/validators.js +164 -196
- package/lib/validators.js.map +1 -0
- package/package.json +13 -21
- package/tsconfig.json +32 -0
- package/lib/__tests__/component.arrayValidation.js +0 -201
- package/lib/__tests__/component.objectValidation.js +0 -556
- package/lib/__tests__/component.reduxFormValidation.js +0 -20
- package/lib/__tests__/component.valueValidation.js +0 -923
- package/lib/__tests__/integration.objectValidation.js +0 -64
- package/lib/__tests__/integration.registrationForm.js +0 -234
- package/lib/__tests__/integration.valueValidation.js +0 -448
- package/lib/__tests__/operators.js +0 -28
- package/lib/__tests__/unit.operators.js +0 -125
- package/lib/createObjectValidation.js +0 -34
- 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
|
-
});
|