Skip to content

Commit 59f38eb

Browse files
authored
Merge pull request #20 from CodingCarlos/develop
0.2.5 - Fix length filter on undefined data
2 parents eb2d71c + 0b09638 commit 59f38eb

File tree

3 files changed

+88
-28
lines changed

3 files changed

+88
-28
lines changed

lib/validators/length.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@ function isValid(data, model) {
1919
// ToDo: Object length (keys?)
2020

2121
// Data hasn't the exact eq lenght
22-
if (model.length.eq && data.length !== model.length.eq) {
22+
if (model.length.eq && (!data || data.length !== model.length.eq)) {
2323
return false;
2424
}
2525

2626
// Data is higher than max
27-
if (model.length.max && data.length > model.length.max) {
27+
if (model.length.max && (!data || data.length > model.length.max)) {
2828
return false;
2929
}
3030

3131
// Data is lower than min
32-
if (model.length.min && data.length < model.length.min) {
32+
if (model.length.min && (!data || data.length < model.length.min)) {
3333
return false;
3434
}
3535

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "modelate",
3-
"version": "0.2.4",
3+
"version": "0.2.5",
44
"description": "A simple data modeling tool for NodeJS",
55
"main": "index.js",
66
"scripts": {

spec/validators/length.spec.js

Lines changed: 84 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,16 @@ describe(' - Length validator', () => {
2727
expect(valid(str, eqModel)).toEqual(true);
2828
});
2929

30+
it('shall NOT validate undefined string', () => {
31+
const eqModel = { length: { eq: (strLen - 1) } };
32+
expect(valid(undefined, eqModel)).toEqual(false);
33+
});
34+
35+
it('shall NOT validate null string', () => {
36+
const eqModel = { length: { eq: (strLen - 1) } };
37+
expect(valid(null, eqModel)).toEqual(false);
38+
});
39+
3040
it('shall NOT validate string with string.length - 1', () => {
3141
const eqModel = { length: { eq: (strLen - 1) } };
3242
expect(valid(str, eqModel)).toEqual(false);
@@ -44,6 +54,16 @@ describe(' - Length validator', () => {
4454
expect(valid(arr, eqModel)).toEqual(true);
4555
});
4656

57+
it('shall NOT validate undefined string', () => {
58+
const eqModel = { length: { eq: arrLen } };
59+
expect(valid(undefined, eqModel)).toEqual(false);
60+
});
61+
62+
it('shall NOT validate null string', () => {
63+
const eqModel = { length: { eq: arrLen } };
64+
expect(valid(null, eqModel)).toEqual(false);
65+
});
66+
4767
it('shall NOT validate array with array.length - 1', () => {
4868
const eqModel = { length: { eq: (arrLen - 1) } };
4969
expect(valid(arr, eqModel)).toEqual(false);
@@ -59,71 +79,111 @@ describe(' - Length validator', () => {
5979
describe('max filter', () => {
6080
describe('strings', () => {
6181
it('shall validate string with max string.length', () => {
62-
const eqModel = { length: { max: strLen } };
63-
expect(valid(str, eqModel)).toEqual(true);
82+
const maxModel = { length: { max: strLen } };
83+
expect(valid(str, maxModel)).toEqual(true);
84+
});
85+
86+
it('shall NOT validate undefined', () => {
87+
const maxModel = { length: { max: (strLen - 1) } };
88+
expect(valid(undefined, maxModel)).toEqual(false);
89+
});
90+
91+
it('shall NOT validate null', () => {
92+
const maxModel = { length: { max: (strLen - 1) } };
93+
expect(valid(null, maxModel)).toEqual(false);
6494
});
6595

6696
it('shall NOT validate string with max string.length - 1', () => {
67-
const eqModel = { length: { max: (strLen - 1) } };
68-
expect(valid(str, eqModel)).toEqual(false);
97+
const maxModel = { length: { max: (strLen - 1) } };
98+
expect(valid(str, maxModel)).toEqual(false);
6999
});
70100

71101
it('shall validate string with max string.length + 1', () => {
72-
const eqModel = { length: { max: (strLen + 1) } };
73-
expect(valid(str, eqModel)).toEqual(true);
102+
const maxModel = { length: { max: (strLen + 1) } };
103+
expect(valid(str, maxModel)).toEqual(true);
74104
});
75105
});
76106

77107
describe('arrays', () => {
78108
it('shall validate array with max array.length', () => {
79-
const eqModel = { length: { max: arrLen } };
80-
expect(valid(arr, eqModel)).toEqual(true);
109+
const maxModel = { length: { max: arrLen } };
110+
expect(valid(arr, maxModel)).toEqual(true);
111+
});
112+
113+
it('shall NOT validate undefined', () => {
114+
const maxModel = { length: { max: (arrLen - 1) } };
115+
expect(valid(undefined, maxModel)).toEqual(false);
116+
});
117+
118+
it('shall NOT validate null', () => {
119+
const maxModel = { length: { max: (arrLen - 1) } };
120+
expect(valid(null, maxModel)).toEqual(false);
81121
});
82122

83123
it('shall NOT validate array with max array.length - 1', () => {
84-
const eqModel = { length: { max: (arrLen - 1) } };
85-
expect(valid(arr, eqModel)).toEqual(false);
124+
const maxModel = { length: { max: (arrLen - 1) } };
125+
expect(valid(arr, maxModel)).toEqual(false);
86126
});
87127

88128
it('shall validate array with max array.length + 1', () => {
89-
const eqModel = { length: { max: (arrLen + 1) } };
90-
expect(valid(arr, eqModel)).toEqual(true);
129+
const maxModel = { length: { max: (arrLen + 1) } };
130+
expect(valid(arr, maxModel)).toEqual(true);
91131
});
92132
});
93133
});
94134

95135
describe('min filter', () => {
96136
describe('strings', () => {
97137
it('shall validate string with min string.length', () => {
98-
const eqModel = { length: { min: strLen } };
99-
expect(valid(str, eqModel)).toEqual(true);
138+
const minModel = { length: { min: strLen } };
139+
expect(valid(str, minModel)).toEqual(true);
140+
});
141+
142+
it('shall NOT validate undefined', () => {
143+
const minModel = { length: { min: strLen } };
144+
expect(valid(undefined, minModel)).toEqual(false);
145+
});
146+
147+
it('shall NOT validate null', () => {
148+
const minModel = { length: { min: strLen } };
149+
expect(valid(null, minModel)).toEqual(false);
100150
});
101151

102152
it('shall validate string with min string.length - 1', () => {
103-
const eqModel = { length: { min: (strLen - 1) } };
104-
expect(valid(str, eqModel)).toEqual(true);
153+
const minModel = { length: { min: strLen -1 } };
154+
expect(valid(str, minModel)).toEqual(true);
105155
});
106156

107157
it('shall NOT validate string with min string.length + 1', () => {
108-
const eqModel = { length: { min: (strLen + 1) } };
109-
expect(valid(str, eqModel)).toEqual(false);
158+
const minModel = { length: { min: strLen + 1 } };
159+
expect(valid(str, minModel)).toEqual(false);
110160
});
111161
});
112162

113163
describe('arrays', () => {
114164
it('shall validate array with min array.length', () => {
115-
const eqModel = { length: { min: arrLen } };
116-
expect(valid(arr, eqModel)).toEqual(true);
165+
const minModel = { length: { min: arrLen } };
166+
expect(valid(arr, minModel)).toEqual(true);
167+
});
168+
169+
it('shall NOT validate undefined', () => {
170+
const minModel = { length: { min: arrLen } };
171+
expect(valid(undefined, minModel)).toEqual(false);
172+
});
173+
174+
it('shall NOT validate null', () => {
175+
const minModel = { length: { min: arrLen } };
176+
expect(valid(null, minModel)).toEqual(false);
117177
});
118178

119179
it('shall validate array with min array.length - 1', () => {
120-
const eqModel = { length: { min: (arrLen - 1) } };
121-
expect(valid(arr, eqModel)).toEqual(true);
180+
const minModel = { length: { min: (arrLen - 1) } };
181+
expect(valid(arr, minModel)).toEqual(true);
122182
});
123183

124184
it('shall NOT validate array with min array.length + 1', () => {
125-
const eqModel = { length: { min: (arrLen + 1) } };
126-
expect(valid(arr, eqModel)).toEqual(false);
185+
const minModel = { length: { min: (arrLen + 1) } };
186+
expect(valid(arr, minModel)).toEqual(false);
127187
});
128188
});
129189
});

0 commit comments

Comments
 (0)