@@ -125,6 +125,46 @@ describe('lane model', () => {
125
125
} )
126
126
} )
127
127
128
+ test ( 'array value is protected' , async ( ) => {
129
+ const { useStore } = createStore ( ( ) => {
130
+ const [ list , setList ] = useModel ( < Array < number > > [ ] )
131
+ return { list, setList }
132
+ } )
133
+
134
+ let renderTimes = 0
135
+ const { result, rerender } = renderHook ( ( ) => {
136
+ const { list, setList } = useStore ( )
137
+ renderTimes += 1
138
+ return { renderTimes, list, setList }
139
+ } )
140
+ act ( ( ) => {
141
+ expect ( renderTimes ) . toEqual ( 1 )
142
+ expect ( result . current . list . constructor . name ) . toBe ( 'Array' )
143
+ } )
144
+
145
+ act ( ( ) => {
146
+ result . current . setList ( [ 1 , 2 ] )
147
+ } )
148
+
149
+ act ( ( ) => {
150
+ expect ( renderTimes ) . toEqual ( 2 )
151
+ expect ( result . current . list . constructor . name ) . toBe ( 'Array' )
152
+ expect ( result . current . list [ 0 ] ) . toBe ( 1 )
153
+ expect ( result . current . list [ 1 ] ) . toBe ( 2 )
154
+ } )
155
+
156
+ act ( ( ) => {
157
+ rerender ( )
158
+ } )
159
+
160
+ act ( ( ) => {
161
+ expect ( renderTimes ) . toEqual ( 3 )
162
+ expect ( result . current . list . constructor . name ) . toBe ( 'Array' )
163
+ expect ( result . current . list [ 0 ] ) . toBe ( 1 )
164
+ expect ( result . current . list [ 1 ] ) . toBe ( 2 )
165
+ } )
166
+ } )
167
+
128
168
test ( 'multiple models' , async ( ) => {
129
169
const { useStore } = createStore ( ( ) => {
130
170
const [ count , setCount ] = useModel ( 1 )
0 commit comments