@@ -81,6 +81,11 @@ export interface ActiveTargetMap {
8181 [ targetId : string ] : ActiveTargetSpec ;
8282}
8383
84+ export interface ResumeSpec {
85+ resumeToken ?: string ;
86+ readTime ?: TestSnapshotVersion ;
87+ }
88+
8489/**
8590 * Tracks the expected memory state of a client (e.g. the expected active watch
8691 * targets based on userListens(), userUnlistens(), and watchRemoves()
@@ -255,10 +260,7 @@ export class SpecBuilder {
255260 return this ;
256261 }
257262
258- userListens (
259- query : Query ,
260- resume ?: { resumeToken ?: string ; readTime ?: TestSnapshotVersion }
261- ) : this {
263+ userListens ( query : Query , resume ?: ResumeSpec ) : this {
262264 this . nextStep ( ) ;
263265
264266 const target = queryToTarget ( query ) ;
@@ -277,12 +279,7 @@ export class SpecBuilder {
277279 }
278280
279281 this . queryMapping . set ( target , targetId ) ;
280- this . addQueryToActiveTargets (
281- targetId ,
282- query ,
283- resume ?. resumeToken ,
284- resume ?. readTime
285- ) ;
282+ this . addQueryToActiveTargets ( targetId , query , resume ) ;
286283 this . currentStep = {
287284 userListen : { targetId, query : SpecBuilder . queryToSpec ( query ) } ,
288285 expectedState : { activeTargets : { ...this . activeTargets } }
@@ -302,7 +299,7 @@ export class SpecBuilder {
302299 throw new Error ( "Can't restore an unknown query: " + query ) ;
303300 }
304301
305- this . addQueryToActiveTargets ( targetId ! , query , resumeToken ) ;
302+ this . addQueryToActiveTargets ( targetId ! , query , { resumeToken } ) ;
306303
307304 const currentStep = this . currentStep ! ;
308305 currentStep . expectedState = currentStep . expectedState || { } ;
@@ -536,12 +533,10 @@ export class SpecBuilder {
536533 const currentStep = this . currentStep ! ;
537534 this . clientState . activeTargets = { } ;
538535 targets . forEach ( ( { query, resumeToken, readTime } ) => {
539- this . addQueryToActiveTargets (
540- this . getTargetId ( query ) ,
541- query ,
536+ this . addQueryToActiveTargets ( this . getTargetId ( query ) , query , {
542537 resumeToken,
543538 readTime
544- ) ;
539+ } ) ;
545540 } ) ;
546541 currentStep . expectedState = currentStep . expectedState || { } ;
547542 currentStep . expectedState . activeTargets = { ...this . activeTargets } ;
@@ -572,7 +567,7 @@ export class SpecBuilder {
572567 this . addQueryToActiveTargets (
573568 this . limboMapping [ path ] ,
574569 newQueryForPath ( key . path ) ,
575- ''
570+ { resumeToken : '' }
576571 ) ;
577572 } ) ;
578573
@@ -769,18 +764,15 @@ export class SpecBuilder {
769764 return this ;
770765 }
771766
772- watchFilters ( queries : Query [ ] , ... docs : DocumentKey [ ] ) : this {
767+ watchFilters ( queries : Query [ ] , docs : DocumentKey [ ] = [ ] ) : this {
773768 this . nextStep ( ) ;
774769 const targetIds = queries . map ( query => {
775770 return this . getTargetId ( query ) ;
776771 } ) ;
777772 const keys = docs . map ( key => {
778773 return key . path . canonicalString ( ) ;
779774 } ) ;
780- const filter : SpecWatchFilter = [ targetIds ] as SpecWatchFilter ;
781- for ( const key of keys ) {
782- filter . push ( key ) ;
783- }
775+ const filter : SpecWatchFilter = { targetIds, keys } ;
784776 this . currentStep = {
785777 watchFilter : filter
786778 } ;
@@ -910,22 +902,14 @@ export class SpecBuilder {
910902 }
911903
912904 /** Registers a query that is active in another tab. */
913- expectListen (
914- query : Query ,
915- resume ?: { resumeToken ?: string ; readTime ?: TestSnapshotVersion }
916- ) : this {
905+ expectListen ( query : Query , resume ?: ResumeSpec ) : this {
917906 this . assertStep ( 'Expectations require previous step' ) ;
918907
919908 const target = queryToTarget ( query ) ;
920909 const targetId = this . queryIdGenerator . cachedId ( target ) ;
921910 this . queryMapping . set ( target , targetId ) ;
922911
923- this . addQueryToActiveTargets (
924- targetId ,
925- query ,
926- resume ?. resumeToken ,
927- resume ?. readTime
928- ) ;
912+ this . addQueryToActiveTargets ( targetId , query , resume ) ;
929913
930914 const currentStep = this . currentStep ! ;
931915 currentStep . expectedState = currentStep . expectedState || { } ;
@@ -1093,8 +1077,7 @@ export class SpecBuilder {
10931077 private addQueryToActiveTargets (
10941078 targetId : number ,
10951079 query : Query ,
1096- resumeToken ?: string ,
1097- readTime ?: TestSnapshotVersion
1080+ resume ?: ResumeSpec
10981081 ) : void {
10991082 if ( this . activeTargets [ targetId ] ) {
11001083 const activeQueries = this . activeTargets [ targetId ] . queries ;
@@ -1106,21 +1089,21 @@ export class SpecBuilder {
11061089 // `query` is not added yet.
11071090 this . activeTargets [ targetId ] = {
11081091 queries : [ SpecBuilder . queryToSpec ( query ) , ...activeQueries ] ,
1109- resumeToken : resumeToken || '' ,
1110- readTime
1092+ resumeToken : resume ?. resumeToken || '' ,
1093+ readTime : resume ?. readTime
11111094 } ;
11121095 } else {
11131096 this . activeTargets [ targetId ] = {
11141097 queries : activeQueries ,
1115- resumeToken : resumeToken || '' ,
1116- readTime
1098+ resumeToken : resume ?. resumeToken || '' ,
1099+ readTime : resume ?. readTime
11171100 } ;
11181101 }
11191102 } else {
11201103 this . activeTargets [ targetId ] = {
11211104 queries : [ SpecBuilder . queryToSpec ( query ) ] ,
1122- resumeToken : resumeToken || '' ,
1123- readTime
1105+ resumeToken : resume ?. resumeToken || '' ,
1106+ readTime : resume ?. readTime
11241107 } ;
11251108 }
11261109 }
0 commit comments