1
1
import { assert } from 'chai' ;
2
2
import { combineReducers } from 'redux' ;
3
3
import Immutable from 'immutable' ;
4
- import { actions , modelReducer , formReducer , track } from '../src' ;
4
+ import { actions , modelReducer , formReducer , track , combineForms } from '../src' ;
5
5
import {
6
6
actions as immutableActions ,
7
7
modelReducer as immutableModelReducer ,
@@ -22,6 +22,85 @@ describe('model actions', () => {
22
22
assert . deepEqual ( actual , { bar : 'string' } ) ;
23
23
} ) ;
24
24
25
+ it ( 'should load array values and form values' , ( ) => {
26
+ const reducer = combineForms ( {
27
+ user : {
28
+ username : '' ,
29
+ items : [ { name : 'item 1' , subitems : [ { name : 'subitem 1' } ] } ] ,
30
+ } ,
31
+ } ) ;
32
+ const DATA = {
33
+ username : 'loaded' ,
34
+ items : [
35
+ { name : 'item 1' , subitems : [
36
+ { name : 'subitem 1' } ,
37
+ { name : 'subitem 2' } ,
38
+ ] } ,
39
+ { name : 'item 2' , subitems : [
40
+ { name : 'subitem 1' } ,
41
+ ] } ] ,
42
+ } ;
43
+ // const initial = reducer(undefined, {});
44
+ const actual = reducer ( { } , actions . load ( 'user' , DATA ) ) ;
45
+
46
+ assert . equal (
47
+ actual . forms . user . items . $form . model ,
48
+ 'user.items'
49
+ ) ;
50
+
51
+ assert . equal (
52
+ actual . forms . user . items [ 0 ] . $form . model ,
53
+ 'user.items.0'
54
+ ) ;
55
+ assert . equal (
56
+ actual . forms . user . items [ 0 ] . name . model ,
57
+ 'user.items.0.name'
58
+ ) ;
59
+ assert . equal (
60
+ actual . forms . user . items [ 0 ] . subitems . $form . model ,
61
+ 'user.items.0.subitems'
62
+ ) ;
63
+
64
+ // assert.equal(actual.forms.user.items[0].subitems, "user.items.0.subitems.0");
65
+ assert . equal (
66
+ actual . forms . user . items [ 0 ] . subitems [ 0 ] . $form . model ,
67
+ 'user.items.0.subitems.0'
68
+ ) ;
69
+ assert . equal (
70
+ actual . forms . user . items [ 0 ] . subitems [ 0 ] . name . model ,
71
+ 'user.items.0.subitems.0.name'
72
+ ) ;
73
+ assert . equal (
74
+ actual . forms . user . items [ 0 ] . subitems [ 1 ] . $form . model ,
75
+ 'user.items.0.subitems.1'
76
+ ) ;
77
+ assert . equal (
78
+ actual . forms . user . items [ 0 ] . subitems [ 1 ] . name . model ,
79
+ 'user.items.0.subitems.1.name'
80
+ ) ;
81
+
82
+ assert . equal (
83
+ actual . forms . user . items [ 1 ] . $form . model ,
84
+ 'user.items.1'
85
+ ) ;
86
+ assert . equal (
87
+ actual . forms . user . items [ 1 ] . name . model ,
88
+ 'user.items.1.name'
89
+ ) ;
90
+ assert . equal (
91
+ actual . forms . user . items [ 1 ] . subitems . $form . model ,
92
+ 'user.items.1.subitems'
93
+ ) ;
94
+ assert . equal (
95
+ actual . forms . user . items [ 1 ] . subitems [ 0 ] . $form . model ,
96
+ 'user.items.1.subitems.0'
97
+ ) ;
98
+ assert . equal (
99
+ actual . forms . user . items [ 1 ] . subitems [ 0 ] . name . model ,
100
+ 'user.items.1.subitems.0.name'
101
+ ) ;
102
+ } ) ;
103
+
25
104
it ( 'should load model and form stay untouched' , ( ) => {
26
105
const reducer = combineReducers ( {
27
106
foo : modelReducer ( 'foo' ) ,
0 commit comments