@@ -5,7 +5,7 @@ describe('ArrayState', () => {
55 type ObjectType = { key : string ; another : string } ;
66 type ArrayType = ObjectType [ ] ;
77
8- let subject : UmbArrayState < ObjectType > ;
8+ let state : UmbArrayState < ObjectType > ;
99 let initialData : ArrayType ;
1010
1111 beforeEach ( ( ) => {
@@ -14,12 +14,12 @@ describe('ArrayState', () => {
1414 { key : '2' , another : 'myValue2' } ,
1515 { key : '3' , another : 'myValue3' } ,
1616 ] ;
17- subject = new UmbArrayState ( initialData , ( x ) => x . key ) ;
17+ state = new UmbArrayState ( initialData , ( x ) => x . key ) ;
1818 } ) ;
1919
2020 it ( 'replays latests, no matter the amount of subscriptions.' , ( done ) => {
2121 let amountOfCallbacks = 0 ;
22- const observer = subject . asObservable ( ) ;
22+ const observer = state . asObservable ( ) ;
2323 observer . subscribe ( ( value ) => {
2424 amountOfCallbacks ++ ;
2525 expect ( value ) . to . be . equal ( initialData ) ;
@@ -36,26 +36,26 @@ describe('ArrayState', () => {
3636 it ( 'remove method, removes the one with the key' , ( done ) => {
3737 const expectedData = [ initialData [ 0 ] , initialData [ 2 ] ] ;
3838
39- subject . remove ( [ '2' ] ) ;
40- const observer = subject . asObservable ( ) ;
39+ state . remove ( [ '2' ] ) ;
40+ const observer = state . asObservable ( ) ;
4141 observer . subscribe ( ( value ) => {
4242 expect ( JSON . stringify ( value ) ) . to . be . equal ( JSON . stringify ( expectedData ) ) ;
4343 done ( ) ;
4444 } ) ;
4545 } ) ;
4646
4747 it ( 'getHasOne method, return true when key exists' , ( ) => {
48- expect ( subject . getHasOne ( '2' ) ) . to . be . true ;
48+ expect ( state . getHasOne ( '2' ) ) . to . be . true ;
4949 } ) ;
5050 it ( 'getHasOne method, return false when key does not exists' , ( ) => {
51- expect ( subject . getHasOne ( '1337' ) ) . to . be . false ;
51+ expect ( state . getHasOne ( '1337' ) ) . to . be . false ;
5252 } ) ;
5353
5454 it ( 'filter method, removes anything that is not true of the given predicate method' , ( done ) => {
5555 const expectedData = [ initialData [ 0 ] , initialData [ 2 ] ] ;
5656
57- subject . filter ( ( x ) => x . key !== '2' ) ;
58- const observer = subject . asObservable ( ) ;
57+ state . filter ( ( x ) => x . key !== '2' ) ;
58+ const observer = state . asObservable ( ) ;
5959 observer . subscribe ( ( value ) => {
6060 expect ( JSON . stringify ( value ) ) . to . be . equal ( JSON . stringify ( expectedData ) ) ;
6161 done ( ) ;
@@ -64,11 +64,11 @@ describe('ArrayState', () => {
6464
6565 it ( 'add new item via appendOne method.' , ( done ) => {
6666 const newItem = { key : '4' , another : 'myValue4' } ;
67- subject . appendOne ( newItem ) ;
67+ state . appendOne ( newItem ) ;
6868
6969 const expectedData = [ ...initialData , newItem ] ;
7070
71- const observer = subject . asObservable ( ) ;
71+ const observer = state . asObservable ( ) ;
7272 observer . subscribe ( ( value ) => {
7373 expect ( value . length ) . to . be . equal ( expectedData . length ) ;
7474 expect ( value [ 3 ] . another ) . to . be . equal ( expectedData [ 3 ] . another ) ;
@@ -78,9 +78,25 @@ describe('ArrayState', () => {
7878
7979 it ( 'partially update an existing item via updateOne method.' , ( done ) => {
8080 const newItem = { another : 'myValue2.2' } ;
81- subject . updateOne ( '2' , newItem ) ;
81+ state . updateOne ( '2' , newItem ) ;
8282
83- const observer = subject . asObservable ( ) ;
83+ const observer = state . asObservable ( ) ;
84+ observer . subscribe ( ( value ) => {
85+ expect ( value . length ) . to . be . equal ( initialData . length ) ;
86+ expect ( value [ 0 ] . another ) . to . be . equal ( 'myValue1' ) ;
87+ expect ( value [ 1 ] . another ) . to . be . equal ( 'myValue2.2' ) ;
88+ done ( ) ;
89+ } ) ;
90+ } ) ;
91+
92+ it ( 'replaces only existing items via replace method.' , ( done ) => {
93+ const newItems = [
94+ { key : '2' , another : 'myValue2.2' } ,
95+ { key : '4' , another : 'myValue4.4' } ,
96+ ] ;
97+ state . replace ( newItems ) ;
98+
99+ const observer = state . asObservable ( ) ;
84100 observer . subscribe ( ( value ) => {
85101 expect ( value . length ) . to . be . equal ( initialData . length ) ;
86102 expect ( value [ 0 ] . another ) . to . be . equal ( 'myValue1' ) ;
@@ -90,7 +106,7 @@ describe('ArrayState', () => {
90106 } ) ;
91107
92108 it ( 'getObservablePart for a specific entry of array' , ( done ) => {
93- const subObserver = subject . asObservablePart ( ( data ) => data . find ( ( x ) => x . key === '2' ) ) ;
109+ const subObserver = state . asObservablePart ( ( data ) => data . find ( ( x ) => x . key === '2' ) ) ;
94110 subObserver . subscribe ( ( entry ) => {
95111 if ( entry ) {
96112 expect ( entry . another ) . to . be . equal ( initialData [ 1 ] . another ) ;
@@ -103,7 +119,7 @@ describe('ArrayState', () => {
103119 let amountOfCallbacks = 0 ;
104120 const newItem = { key : '4' , another : 'myValue4' } ;
105121
106- const subObserver = subject . asObservablePart ( ( data ) => data . find ( ( x ) => x . key === newItem . key ) ) ;
122+ const subObserver = state . asObservablePart ( ( data ) => data . find ( ( x ) => x . key === newItem . key ) ) ;
107123 subObserver . subscribe ( ( entry ) => {
108124 amountOfCallbacks ++ ;
109125 if ( amountOfCallbacks === 1 ) {
@@ -118,16 +134,16 @@ describe('ArrayState', () => {
118134 }
119135 } ) ;
120136
121- subject . appendOne ( newItem ) ;
137+ state . appendOne ( newItem ) ;
122138 } ) ;
123139
124140 it ( 'asObservable returns the replaced item' , ( done ) => {
125141 const newItem = { key : '2' , another : 'myValue4' } ;
126- subject . appendOne ( newItem ) ;
142+ state . appendOne ( newItem ) ;
127143
128144 const expectedData = [ initialData [ 0 ] , newItem , initialData [ 2 ] ] ;
129145
130- const observer = subject . asObservable ( ) ;
146+ const observer = state . asObservable ( ) ;
131147 observer . subscribe ( ( value ) => {
132148 expect ( value . length ) . to . be . equal ( expectedData . length ) ;
133149 expect ( value [ 1 ] . another ) . to . be . equal ( newItem . another ) ;
@@ -137,9 +153,9 @@ describe('ArrayState', () => {
137153
138154 it ( 'getObservablePart returns the replaced item' , ( done ) => {
139155 const newItem = { key : '2' , another : 'myValue4' } ;
140- subject . appendOne ( newItem ) ;
156+ state . appendOne ( newItem ) ;
141157
142- const subObserver = subject . asObservablePart ( ( data ) => data . find ( ( x ) => x . key === newItem . key ) ) ;
158+ const subObserver = state . asObservablePart ( ( data ) => data . find ( ( x ) => x . key === newItem . key ) ) ;
143159 subObserver . subscribe ( ( entry ) => {
144160 expect ( entry ) . to . be . equal ( newItem ) ; // Second callback should give us the right data:
145161 if ( entry ) {
@@ -152,7 +168,7 @@ describe('ArrayState', () => {
152168 it ( 'getObservablePart replays existing data to any amount of subscribers.' , ( done ) => {
153169 let amountOfCallbacks = 0 ;
154170
155- const subObserver = subject . asObservablePart ( ( data ) => data . find ( ( x ) => x . key === '2' ) ) ;
171+ const subObserver = state . asObservablePart ( ( data ) => data . find ( ( x ) => x . key === '2' ) ) ;
156172 subObserver . subscribe ( ( entry ) => {
157173 if ( entry ) {
158174 amountOfCallbacks ++ ;
@@ -173,7 +189,7 @@ describe('ArrayState', () => {
173189 it ( 'getObservablePart replays existing data to any amount of subscribers.' , ( done ) => {
174190 let amountOfCallbacks = 0 ;
175191
176- const subObserver = subject . asObservablePart ( ( data ) => data . find ( ( x ) => x . key === '2' ) ) ;
192+ const subObserver = state . asObservablePart ( ( data ) => data . find ( ( x ) => x . key === '2' ) ) ;
177193 subObserver . subscribe ( ( entry ) => {
178194 if ( entry ) {
179195 amountOfCallbacks ++ ;
@@ -194,7 +210,7 @@ describe('ArrayState', () => {
194210 it ( 'append only updates observable if changes item' , ( done ) => {
195211 let count = 0 ;
196212
197- const observer = subject . asObservable ( ) ;
213+ const observer = state . asObservable ( ) ;
198214 observer . subscribe ( ( value ) => {
199215 count ++ ;
200216 if ( count === 1 ) {
@@ -212,12 +228,12 @@ describe('ArrayState', () => {
212228
213229 Promise . resolve ( ) . then ( ( ) => {
214230 // Despite how many times this happens it should not trigger any change.
215- subject . append ( initialData ) ;
216- subject . append ( initialData ) ;
217- subject . append ( initialData ) ;
231+ state . append ( initialData ) ;
232+ state . append ( initialData ) ;
233+ state . append ( initialData ) ;
218234
219235 Promise . resolve ( ) . then ( ( ) => {
220- subject . appendOne ( { key : '4' , another : 'myValue4' } ) ;
236+ state . appendOne ( { key : '4' , another : 'myValue4' } ) ;
221237 } ) ;
222238 } ) ;
223239 } ) ;
0 commit comments