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,39 @@ 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 : [ { name : 'item 1' , subitems : [ { name : 'subitem 1' } , { name : 'subitem 2' } ] } , { name : 'item 2' , subitems : [ { name : 'subitem 1' } ] } ] ,
35
+ } ;
36
+ const initial = reducer ( undefined , { } ) ;
37
+ const actual = reducer ( { } , actions . load ( 'user' , DATA ) ) ;
38
+
39
+ assert . equal ( actual . forms . user . items . $form . model , "user.items" ) ;
40
+
41
+ assert . equal ( actual . forms . user . items [ 0 ] . $form . model , "user.items.0" ) ;
42
+ assert . equal ( actual . forms . user . items [ 0 ] . name . model , "user.items.0.name" ) ;
43
+ assert . equal ( actual . forms . user . items [ 0 ] . subitems . $form . model , "user.items.0.subitems" ) ;
44
+
45
+ // assert.equal(actual.forms.user.items[0].subitems, "user.items.0.subitems.0");
46
+ assert . equal ( actual . forms . user . items [ 0 ] . subitems [ 0 ] . $form . model , "user.items.0.subitems.0" ) ;
47
+ assert . equal ( actual . forms . user . items [ 0 ] . subitems [ 0 ] . name . model , "user.items.0.subitems.0.name" ) ;
48
+ assert . equal ( actual . forms . user . items [ 0 ] . subitems [ 1 ] . $form . model , "user.items.0.subitems.1" ) ;
49
+ assert . equal ( actual . forms . user . items [ 0 ] . subitems [ 1 ] . name . model , "user.items.0.subitems.1.name" ) ;
50
+
51
+ assert . equal ( actual . forms . user . items [ 1 ] . $form . model , "user.items.1" ) ;
52
+ assert . equal ( actual . forms . user . items [ 1 ] . name . model , "user.items.1.name" ) ;
53
+ assert . equal ( actual . forms . user . items [ 1 ] . subitems . $form . model , "user.items.1.subitems" ) ;
54
+ assert . equal ( actual . forms . user . items [ 1 ] . subitems [ 0 ] . $form . model , "user.items.1.subitems.0" ) ;
55
+ assert . equal ( actual . forms . user . items [ 1 ] . subitems [ 0 ] . name . model , "user.items.1.subitems.0.name" ) ;
56
+ } ) ;
57
+
25
58
it ( 'should load model and form stay untouched' , ( ) => {
26
59
const reducer = combineReducers ( {
27
60
foo : modelReducer ( 'foo' ) ,
0 commit comments