Skip to content

Commit 892827d

Browse files
authored
Merge pull request #22 from CodingCarlos/develop
v0.2.7 Fix type modifier on boolean
2 parents b341f0f + f1896c8 commit 892827d

File tree

3 files changed

+64
-2
lines changed

3 files changed

+64
-2
lines changed

lib/modifiers/type.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,18 @@ function modify(data, model) {
2222
case 'number':
2323
if (!isNaN(Number(data))) {
2424
parsed = Number(data);
25+
} else {
26+
parsed = undefined;
2527
}
2628
break;
2729
case 'boolean':
28-
parsed = Boolean(data);
30+
parsed = String(data).toLowerCase() === 'true';
31+
break;
32+
case 'object':
33+
parsed = (typeof data === 'object') ? data : undefined;
34+
break;
35+
case 'array':
36+
parsed = (Array.isArray(data)) ? data : undefined;
2937
break;
3038
}
3139

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.6",
3+
"version": "0.2.7",
44
"description": "A simple data modeling tool for NodeJS",
55
"main": "index.js",
66
"scripts": {

spec/modifiers/type.spec.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
var valid = require('../../lib/modifiers/type');
2+
3+
const str = 'Hello world';
4+
const obj = {hello: 'world'};
5+
const num = 42;
6+
const bool = true;
7+
const arr = [1, 2, 3];
8+
9+
const types = {
10+
string: str,
11+
object: obj,
12+
number: num,
13+
boolean: bool,
14+
array: arr
15+
};
16+
const typesKeys = Object.keys(types);
17+
18+
describe(' - Type modifier', () => {
19+
it('shall be a function', () => {
20+
expect(typeof valid).toEqual('function');
21+
});
22+
23+
for (let key in typesKeys) {
24+
it('shall let '+ typesKeys[key] +' when no model set', () => {
25+
expect(valid(types[key], {})).toEqual(types[key]);
26+
});
27+
}
28+
29+
for (let validType in typesKeys) {
30+
let model = {type: typesKeys[validType]};
31+
for (let check in typesKeys) {
32+
it('shall only validate '+ typesKeys[validType] +' when model set, and '+ typesKeys[check] +' given', () => {
33+
const modelated = valid(types[typesKeys[check]], model);
34+
let shallBeValid = (typeof modelated === typesKeys[validType]);
35+
36+
if (typesKeys[validType] === 'object' && typeof modelated === 'undefined') {
37+
shallBeValid = true;
38+
}
39+
40+
if ((typesKeys[validType] === 'array' && Array.isArray(modelated))
41+
|| (typesKeys[validType] === 'array' && typeof modelated === 'undefined')) {
42+
shallBeValid = true;
43+
}
44+
45+
if (typesKeys[validType] === 'number' && typeof modelated === 'undefined') {
46+
shallBeValid = true;
47+
}
48+
49+
expect(shallBeValid).toEqual(true);
50+
});
51+
}
52+
}
53+
54+
});

0 commit comments

Comments
 (0)