Skip to content

Commit 8d436be

Browse files
committed
fixes vue-generators#362 - integer validator now calls number validator, and returns invalidIntegerl: "The value is not an integer" as well as any errors generated by number
* wrapped one-liner conditionals/loops with `{}` (looks cleaner) * simplified some conditionals by merging `if(cond1) { if(cond2) { } }` into `if(cond1 && cond2) { }`
1 parent 268631a commit 8d436be

File tree

4 files changed

+90
-53
lines changed

4 files changed

+90
-53
lines changed

dist/vfg-core.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/vfg.js

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/utils/validators.js

+80-45
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { defaults, isNil, isNumber, isString, isArray, isFunction } from "lodash";
1+
import { defaults, isNil, isNumber, isInteger, isString, isArray, isFunction } from "lodash";
22
import fecha from "fecha";
33

44
let resources = {
@@ -8,6 +8,7 @@ let resources = {
88
numberTooSmall: "The number is too small! Minimum: {0}",
99
numberTooBig: "The number is too big! Maximum: {0}",
1010
invalidNumber: "Invalid number",
11+
invalidInteger: "The value is not an integer",
1112

1213
textTooSmall: "The length of text is too small! Current: {0}, Minimum: {1}",
1314
textTooBig: "The length of text is too big! Current: {0}, Maximum: {1}",
@@ -35,23 +36,26 @@ let resources = {
3536

3637
function checkEmpty(value, required, messages = resources) {
3738
if (isNil(value) || value === "") {
38-
if (required)
39+
if (required) {
3940
return [msg(messages.fieldIsRequired)];
40-
else
41+
} else {
4142
return [];
43+
}
4244
}
4345
return null;
4446
}
4547

4648
function msg(text) {
47-
if (text != null && arguments.length > 1)
48-
for (let i = 1; i < arguments.length; i++)
49+
if (text != null && arguments.length > 1) {
50+
for (let i = 1; i < arguments.length; i++) {
4951
text = text.replace("{" + (i - 1) + "}", arguments[i]);
52+
}
53+
}
5054

5155
return text;
5256
}
5357

54-
module.exports = {
58+
const validators = {
5559

5660
resources,
5761

@@ -60,47 +64,59 @@ module.exports = {
6064
},
6165

6266
number(value, field, model, messages = resources) {
63-
let res = checkEmpty(value, field.required, messages); if (res != null) return res;
67+
let res = checkEmpty(value, field.required, messages);
68+
if (res != null) return res;
6469

6570
let err = [];
6671
if (isNumber(value)) {
67-
if (!isNil(field.min) && value < field.min)
72+
if (!isNil(field.min) && value < field.min) {
6873
err.push(msg(messages.numberTooSmall, field.min));
74+
}
6975

70-
if (!isNil(field.max) && value > field.max)
76+
if (!isNil(field.max) && value > field.max) {
7177
err.push(msg(messages.numberTooBig, field.max));
72-
73-
} else
78+
}
79+
} else {
7480
err.push(msg(messages.invalidNumber));
81+
}
7582

7683
return err;
7784
},
7885

7986
integer(value, field, model, messages = resources) {
80-
let res = checkEmpty(value, field.required, messages); if (res != null) return res;
87+
let res = checkEmpty(value, field.required, messages);
88+
if (res != null) return res;
89+
let errs = validators.number(value, field, model, messages);
8190

82-
if (!(Number(value) === value && value % 1 === 0))
83-
return [msg(messages.invalidNumber)];
91+
if (!isInteger(value)) {
92+
errs.push(msg(messages.invalidInteger));
93+
}
94+
95+
return errs;
8496
},
8597

8698
double(value, field, model, messages = resources) {
87-
let res = checkEmpty(value, field.required, messages); if (res != null) return res;
99+
let res = checkEmpty(value, field.required, messages);
100+
if (res != null) return res;
88101

89-
if (!isNumber(value) || isNaN(value))
102+
if (!isNumber(value) || isNaN(value)) {
90103
return [msg(messages.invalidNumber)];
104+
}
91105
},
92106

93107
string(value, field, model, messages = resources) {
94-
let res = checkEmpty(value, field.required, messages); if (res != null) return res;
108+
let res = checkEmpty(value, field.required, messages);
109+
if (res != null) return res;
95110

96111
let err = [];
97112
if (isString(value)) {
98-
if (!isNil(field.min) && value.length < field.min)
113+
if (!isNil(field.min) && value.length < field.min) {
99114
err.push(msg(messages.textTooSmall, value.length, field.min));
115+
}
100116

101-
if (!isNil(field.max) && value.length > field.max)
117+
if (!isNil(field.max) && value.length > field.max) {
102118
err.push(msg(messages.textTooBig, value.length, field.max));
103-
119+
}
104120
} else
105121
err.push(msg(messages.thisNotText));
106122

@@ -109,77 +125,89 @@ module.exports = {
109125

110126
array(value, field, model, messages = resources) {
111127
if (field.required) {
112-
113-
if (!isArray(value))
128+
if (!isArray(value)) {
114129
return [msg(messages.thisNotArray)];
130+
}
115131

116-
if (value.length == 0)
132+
if (value.length == 0) {
117133
return [msg(messages.fieldIsRequired)];
134+
}
118135
}
119136

120137
if (!isNil(value)) {
121-
if (!isNil(field.min))
122-
if (value.length < field.min)
123-
return [msg(messages.selectMinItems, field.min)];
138+
if (!isNil(field.min) && value.length < field.min) {
139+
return [msg(messages.selectMinItems, field.min)];
140+
}
124141

125-
if (!isNil(field.max))
126-
if (value.length > field.max)
127-
return [msg(messages.selectMaxItems, field.max)];
142+
if (!isNil(field.max) && value.length > field.max) {
143+
return [msg(messages.selectMaxItems, field.max)];
144+
}
128145
}
129146
},
130147

131148
date(value, field, model, messages = resources) {
132-
let res = checkEmpty(value, field.required, messages); if (res != null) return res;
149+
let res = checkEmpty(value, field.required, messages);
150+
if (res != null) return res;
133151

134152
let m = new Date(value);
135-
if (!m)
153+
if (!m) {
136154
return [msg(messages.invalidDate)];
155+
}
137156

138157
let err = [];
139158

140159
if (!isNil(field.min)) {
141160
let min = new Date(field.min);
142-
if (m.valueOf() < min.valueOf())
161+
if (m.valueOf() < min.valueOf()) {
143162
err.push(msg(messages.dateIsEarly, fecha.format(m), fecha.format(min)));
163+
}
144164
}
145165

146166
if (!isNil(field.max)) {
147167
let max = new Date(field.max);
148-
if (m.valueOf() > max.valueOf())
168+
if (m.valueOf() > max.valueOf()) {
149169
err.push(msg(messages.dateIsLate, fecha.format(m), fecha.format(max)));
170+
}
150171
}
151172

152173
return err;
153174
},
154175

155176
regexp(value, field, model, messages = resources) {
156-
let res = checkEmpty(value, field.required, messages); if (res != null) return res;
177+
let res = checkEmpty(value, field.required, messages);
178+
if (res != null) return res;
157179

158180
if (!isNil(field.pattern)) {
159181
let re = new RegExp(field.pattern);
160-
if (!re.test(value))
182+
if (!re.test(value)) {
161183
return [msg(messages.invalidFormat)];
184+
}
162185
}
163186
},
164187

165188
email(value, field, model, messages = resources) {
166-
let res = checkEmpty(value, field.required, messages); if (res != null) return res;
189+
let res = checkEmpty(value, field.required, messages);
190+
if (res != null) return res;
167191

168192
let re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; // eslint-disable-line no-useless-escape
169-
if (!re.test(value))
193+
if (!re.test(value)) {
170194
return [msg(messages.invalidEmail)];
195+
}
171196
},
172197

173198
url(value, field, model, messages = resources) {
174-
let res = checkEmpty(value, field.required, messages); if (res != null) return res;
199+
let res = checkEmpty(value, field.required, messages);
200+
if (res != null) return res;
175201

176202
let re = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g; // eslint-disable-line no-useless-escape
177-
if (!re.test(value))
203+
if (!re.test(value)) {
178204
return [msg(messages.invalidURL)];
205+
}
179206
},
180207

181208
creditCard(value, field, model, messages = resources) {
182-
let res = checkEmpty(value, field.required, messages); if (res != null) return res;
209+
let res = checkEmpty(value, field.required, messages);
210+
if (res != null) return res;
183211

184212
/* From validator.js code
185213
https://github.com/chriso/validator.js/blob/master/src/lib/isCreditCard.js
@@ -209,27 +237,34 @@ module.exports = {
209237
shouldDouble = !shouldDouble;
210238
}
211239

212-
if (!((sum % 10) === 0 ? sanitized : false))
240+
if (!((sum % 10) === 0 ? sanitized : false)) {
213241
return [msg(messages.invalidCardNumber)];
242+
}
214243
},
215244

216245
alpha(value, field, model, messages = resources) {
217-
let res = checkEmpty(value, field.required, messages); if (res != null) return res;
246+
let res = checkEmpty(value, field.required, messages);
247+
if (res != null) return res;
218248

219249
let re = /^[a-zA-Z]*$/;
220-
if (!re.test(value))
250+
if (!re.test(value)) {
221251
return [msg(messages.invalidTextContainNumber)];
252+
}
222253
},
223254

224255
alphaNumeric(value, field, model, messages = resources) {
225-
let res = checkEmpty(value, field.required, messages); if (res != null) return res;
256+
let res = checkEmpty(value, field.required, messages);
257+
if (res != null) return res;
226258

227259
let re = /^[a-zA-Z0-9]*$/;
228-
if (!re.test(value))
260+
if (!re.test(value)) {
229261
return [msg(messages.invalidTextContainSpec)];
262+
}
230263
}
231264
};
232265

266+
module.exports = validators;
267+
233268
Object.keys(module.exports).forEach(name => {
234269
const fn = module.exports[name];
235270
if (isFunction(fn)) {

test/unit/specs/utils/validators.spec.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,10 @@ describe("Validators", () => {
7373
let field = {};
7474

7575
it("should give error if value is not integer", () => {
76+
// invalid integer
7677
check(v.integer, 3.14, field, 1);
77-
check(v.integer, "3.14", field, 1);
78+
// invalid number, invalid integer
79+
check(v.integer, "3.14", field, 2);
7880
});
7981

8082
it("should not give error if value is integer", () => {

0 commit comments

Comments
 (0)