1+ const overwriteObjectFieldValue = require ( "./object_field_resolver" ) ;
2+
3+ describe ( `resolver: object field` , ( ) => {
4+ const dataProvider = [
5+ {
6+ absolutePath : 'node1' ,
7+ value : { } ,
8+ object : { } ,
9+ expected : { node1 : { } }
10+ } ,
11+ {
12+ absolutePath : 'node1' ,
13+ value : { } ,
14+ object : { node1 : [ 'test' ] } ,
15+ expected : { node1 : { } }
16+ } ,
17+ {
18+ absolutePath : 'node1' ,
19+ value : { } ,
20+ object : { node2 : [ 'test' ] } ,
21+ expected : { node2 : [ 'test' ] , node1 : { } }
22+ } ,
23+ {
24+ absolutePath : 'node1.node2' ,
25+ value : { value : 'test' } ,
26+ object : { } ,
27+ expected : { node1 : { node2 : { value : 'test' } } }
28+ } ,
29+ {
30+ absolutePath : 'node1.node2.node3' ,
31+ value : [ 'test' ] ,
32+ object : { } ,
33+ expected : { node1 : { node2 : { node3 : [ 'test' ] } } }
34+ } ,
35+ {
36+ absolutePath : 'node1.node2.node3' ,
37+ value : [ 'test' ] ,
38+ object : { node1 : { node2 : { node3 : { node4 : { } } } } } ,
39+ expected : { node1 : { node2 : { node3 : [ 'test' ] } } }
40+ } ,
41+ {
42+ absolutePath : 'node1.node2.node3.node4' ,
43+ value : 'string' ,
44+ object : { node4 : { node2 : { node3 : { node4 : '' } } } } ,
45+ expected : { node4 : { node2 : { node3 : { node4 : '' } } } , node1 : { node2 : { node3 : { node4 : 'string' } } } }
46+ }
47+ ] ;
48+ const execute = ( el ) => {
49+ it ( `::overwriteObjectFieldValue using: object - "${ JSON . stringify ( el . object ) } " path - "${ el . absolutePath } " delimiter - "${ el . delimiter } "` , ( ) => {
50+ const object = overwriteObjectFieldValue ( el . absolutePath , el . value , el . object , el . delimiter ) ;
51+
52+ expect ( JSON . stringify ( object ) ) . toMatch ( JSON . stringify ( el . expected ) ) ;
53+ } ) ;
54+ } ;
55+
56+ dataProvider
57+ /** tests where delimiter is undefined */
58+ . forEach ( el => execute ( el ) ) ;
59+
60+ dataProvider
61+ /** tests where delimiter is defined */
62+ . map ( el => {
63+ const delimiter = '/' ;
64+ el . absolutePath = el . absolutePath . replace ( / \. / g, delimiter ) ;
65+ el . delimiter = delimiter ;
66+
67+ return el ;
68+ } ) . forEach ( el => execute ( el ) ) ;
69+ } ) ;
0 commit comments