File tree Expand file tree Collapse file tree 3 files changed +64
-2
lines changed
Expand file tree Collapse file tree 3 files changed +64
-2
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change 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" : {
Original file line number Diff line number Diff line change 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+ } ) ;
You can’t perform that action at this time.
0 commit comments