@@ -16,12 +16,19 @@ var {
1616 View,
1717} = React ;
1818
19+ var deepDiffer = require ( 'deepDiffer' ) ;
20+
1921var DEBUG = false ;
2022
2123var KEY_1 = 'key_1' ;
2224var VAL_1 = 'val_1' ;
2325var KEY_2 = 'key_2' ;
2426var VAL_2 = 'val_2' ;
27+ var KEY_MERGE = 'key_merge' ;
28+ var VAL_MERGE_1 = { 'foo' : 1 , 'bar' : { 'hoo' : 1 , 'boo' : 1 } , 'moo' : { 'a' : 3 } } ;
29+ var VAL_MERGE_2 = { 'bar' : { 'hoo' : 2 } , 'baz' : 2 , 'moo' : { 'a' : 3 } } ;
30+ var VAL_MERGE_EXPECT =
31+ { 'foo' : 1 , 'bar' : { 'hoo' : 2 , 'boo' : 1 } , 'baz' : 2 , 'moo' : { 'a' : 3 } } ;
2532
2633// setup in componentDidMount
2734var done ;
@@ -40,8 +47,9 @@ function expectTrue(condition, message) {
4047
4148function expectEqual ( lhs , rhs , testname ) {
4249 expectTrue (
43- lhs === rhs ,
44- 'Error in test ' + testname + ': expected ' + rhs + ', got ' + lhs
50+ ! deepDiffer ( lhs , rhs ) ,
51+ 'Error in test ' + testname + ': expected\n' + JSON . stringify ( rhs ) +
52+ '\ngot\n' + JSON . stringify ( lhs )
4553 ) ;
4654}
4755
@@ -93,25 +101,25 @@ function testRemoveItem() {
93101 'Missing KEY_1 or KEY_2 in ' + '(' + result + ')'
94102 ) ;
95103 updateMessage ( 'testRemoveItem - add two items' ) ;
96- AsyncStorage . removeItem ( KEY_1 , ( err ) => {
97- expectAsyncNoError ( err ) ;
104+ AsyncStorage . removeItem ( KEY_1 , ( err2 ) => {
105+ expectAsyncNoError ( err2 ) ;
98106 updateMessage ( 'delete successful ' ) ;
99- AsyncStorage . getItem ( KEY_1 , ( err , result ) => {
100- expectAsyncNoError ( err ) ;
107+ AsyncStorage . getItem ( KEY_1 , ( err3 , result2 ) => {
108+ expectAsyncNoError ( err3 ) ;
101109 expectEqual (
102- result ,
110+ result2 ,
103111 null ,
104112 'testRemoveItem: key_1 present after delete'
105113 ) ;
106114 updateMessage ( 'key properly removed ' ) ;
107- AsyncStorage . getAllKeys ( ( err , result2 ) => {
108- expectAsyncNoError ( err ) ;
115+ AsyncStorage . getAllKeys ( ( err4 , result3 ) => {
116+ expectAsyncNoError ( err4 ) ;
109117 expectTrue (
110- result2 . indexOf ( KEY_1 ) === - 1 ,
111- 'Unexpected: KEY_1 present in ' + result2
118+ result3 . indexOf ( KEY_1 ) === - 1 ,
119+ 'Unexpected: KEY_1 present in ' + result3
112120 ) ;
113- updateMessage ( 'proper length returned.\nDone! ' ) ;
114- done ( ) ;
121+ updateMessage ( 'proper length returned.' ) ;
122+ runTestCase ( 'should merge values' , testMerge ) ;
115123 } ) ;
116124 } ) ;
117125 } ) ;
@@ -120,6 +128,21 @@ function testRemoveItem() {
120128 } ) ;
121129}
122130
131+ function testMerge ( ) {
132+ AsyncStorage . setItem ( KEY_MERGE , JSON . stringify ( VAL_MERGE_1 ) , ( err1 ) => {
133+ expectAsyncNoError ( err1 ) ;
134+ AsyncStorage . mergeItem ( KEY_MERGE , JSON . stringify ( VAL_MERGE_2 ) , ( err2 ) => {
135+ expectAsyncNoError ( err2 ) ;
136+ AsyncStorage . getItem ( KEY_MERGE , ( err3 , result ) => {
137+ expectAsyncNoError ( err3 ) ;
138+ expectEqual ( JSON . parse ( result ) , VAL_MERGE_EXPECT , 'testMerge' ) ;
139+ updateMessage ( 'objects deeply merged\nDone!' ) ;
140+ done ( ) ;
141+ } ) ;
142+ } ) ;
143+ } ) ;
144+ }
145+
123146var AsyncStorageTest = React . createClass ( {
124147 getInitialState ( ) {
125148 return {
0 commit comments