@@ -2,7 +2,7 @@ import { BasicEntityGetter, BasicListGetter, DataCache, FilterBuilder, ListView,
22import { LoadingStatus } from "@batch-flask/ui/loading" ;
33import { List , OrderedSet } from "immutable" ;
44import { from , of } from "rxjs" ;
5- import { flatMap } from "rxjs/operators" ;
5+ import { switchMap } from "rxjs/operators" ;
66import { FakeModel } from "../test/fake-model" ;
77
88const fake1 = { id : "1" , parentId : "parent-1" , state : "active" , name : "Fake1" } ;
@@ -62,6 +62,9 @@ describe("ListView", () => {
6262 let status : LoadingStatus ;
6363 let error : ServerError ;
6464
65+ let setKeysSpy : jasmine . Spy ;
66+ let appendKeysSpy : jasmine . Spy ;
67+
6568 beforeEach ( ( ) => {
6669 cache = new DataCache < FakeModel > ( ) ;
6770 dataSpy = jasmine . createSpy ( "supplyDataSpy" ) . and . callFake ( ( params , options , nextLink ) => {
@@ -92,6 +95,9 @@ describe("ListView", () => {
9295 view . hasMore . subscribe ( x => hasMore = x ) ;
9396 view . status . subscribe ( x => status = x ) ;
9497 view . error . subscribe ( x => error = x ) ;
98+
99+ setKeysSpy = spyOn < any > ( view , "_setItemKeys" ) . and . callThrough ( ) ;
100+ appendKeysSpy = spyOn < any > ( view , "_appendItemKeys" ) . and . callThrough ( ) ;
95101 } ) ;
96102
97103 afterEach ( ( ) => {
@@ -114,9 +120,11 @@ describe("ListView", () => {
114120
115121 it ( "It retrieve the next batch of items" , ( done ) => {
116122 view . fetchNext ( ) . pipe (
117- flatMap ( ( ) => view . fetchNext ( ) ) ,
123+ switchMap ( ( ) => view . fetchNext ( ) ) ,
118124 ) . subscribe ( ( ) => {
119125 expect ( dataSpy ) . toHaveBeenCalledTimes ( 2 ) ;
126+ expect ( setKeysSpy ) . toHaveBeenCalledTimes ( 2 ) ;
127+ expect ( appendKeysSpy ) . toHaveBeenCalledTimes ( 1 ) ;
120128 expect ( items . toJS ( ) ) . toEqual ( [ fake1 , fake2 , fake3 , fake4 , fake5 ] ) ;
121129 expect ( hasMore ) . toBe ( false ) ;
122130 done ( ) ;
@@ -127,6 +135,8 @@ describe("ListView", () => {
127135 view . fetchAll ( ) . subscribe ( ( ) => {
128136 expect ( items . toJS ( ) ) . toEqual ( [ fake1 , fake2 , fake3 , fake4 , fake5 ] ) ;
129137 expect ( dataSpy ) . toHaveBeenCalledTimes ( 2 ) ;
138+ expect ( setKeysSpy ) . toHaveBeenCalledTimes ( 1 ) ;
139+ expect ( appendKeysSpy ) . toHaveBeenCalledTimes ( 0 ) ;
130140 expect ( hasMore ) . toBe ( false ) ;
131141 done ( ) ;
132142 } ) ;
@@ -136,11 +146,14 @@ describe("ListView", () => {
136146 view . fetchNext ( ) . subscribe ( ( ) => {
137147 expect ( dataSpy ) . toHaveBeenCalledTimes ( 1 ) ;
138148 const obs = view . refresh ( true ) ;
139- expect ( items . size ) . toBe ( 0 , "Should have cleared the items" ) ;
149+ expect ( items . size )
150+ . withContext ( "Should have cleared the items" )
151+ . toBe ( 0 ) ;
140152
141153 obs . subscribe ( ( ) => {
142154 expect ( dataSpy ) . toHaveBeenCalledTimes ( 2 ) ;
143-
155+ expect ( setKeysSpy ) . toHaveBeenCalledTimes ( 3 ) ;
156+ expect ( appendKeysSpy ) . toHaveBeenCalledTimes ( 0 ) ;
144157 expect ( items . toJS ( ) ) . toEqual ( [ fake1 , fake2 , fake3 ] ) ;
145158 done ( ) ;
146159 } ) ;
@@ -151,12 +164,15 @@ describe("ListView", () => {
151164 view . fetchNext ( ) . subscribe ( ( ) => {
152165 expect ( dataSpy ) . toHaveBeenCalledTimes ( 1 ) ;
153166 const obs = view . refresh ( false ) ;
154- expect ( items . size ) . not . toBe ( 0 , "Should NOT have cleared the items" ) ;
167+ expect ( items . size )
168+ . withContext ( "should NOT have cleared the items" ) . not . toBe ( 0 ) ;
155169
156170 items = List ( ) ; // Make sure it get the new value
157171 obs . subscribe ( ( ) => {
158172 view . items . subscribe ( x => items = x ) ;
159173 expect ( dataSpy ) . toHaveBeenCalledTimes ( 2 ) ;
174+ expect ( setKeysSpy ) . toHaveBeenCalledTimes ( 2 ) ;
175+ expect ( appendKeysSpy ) . toHaveBeenCalledTimes ( 0 ) ;
160176 expect ( items . toJS ( ) ) . toEqual ( [ fake1 , fake2 , fake3 ] ) ;
161177 done ( ) ;
162178 } ) ;
0 commit comments