@@ -36,6 +36,7 @@ describe('TipTracker', () => {
3636 logger,
3737 maxPollInterval : Number . MAX_VALUE ,
3838 minPollInterval : pollInterval ,
39+ pollController$ : of ( true ) ,
3940 provider$,
4041 store,
4142 syncStatus : { isSettled$ : NEVER } as unknown as SyncStatus
@@ -62,6 +63,7 @@ describe('TipTracker', () => {
6263 logger,
6364 maxPollInterval : Number . MAX_VALUE ,
6465 minPollInterval : poll ,
66+ pollController$ : of ( true ) ,
6567 provider$,
6668 store,
6769 syncStatus : syncStatus as SyncStatus
@@ -84,6 +86,7 @@ describe('TipTracker', () => {
8486 logger,
8587 maxPollInterval : Number . MAX_VALUE ,
8688 minPollInterval : pollInterval ,
89+ pollController$ : of ( true ) ,
8790 provider$,
8891 store,
8992 syncStatus : syncStatus as SyncStatus
@@ -105,6 +108,7 @@ describe('TipTracker', () => {
105108 logger,
106109 maxPollInterval : Number . MAX_VALUE ,
107110 minPollInterval : pollInterval ,
111+ pollController$ : of ( true ) ,
108112 provider$,
109113 store,
110114 syncStatus : syncStatus as SyncStatus
@@ -131,6 +135,7 @@ describe('TipTracker', () => {
131135 logger,
132136 maxPollInterval : Number . MAX_VALUE ,
133137 minPollInterval : pollInterval ,
138+ pollController$ : of ( true ) ,
134139 provider$,
135140 store,
136141 syncStatus : syncStatus as SyncStatus
@@ -154,6 +159,7 @@ describe('TipTracker', () => {
154159 logger,
155160 maxPollInterval : 6 ,
156161 minPollInterval : pollInterval ,
162+ pollController$ : of ( true ) ,
157163 provider$,
158164 store,
159165 syncStatus : syncStatus as SyncStatus
@@ -177,6 +183,7 @@ describe('TipTracker', () => {
177183 logger,
178184 maxPollInterval : Number . MAX_VALUE ,
179185 minPollInterval : 0 ,
186+ pollController$ : of ( true ) ,
180187 provider$,
181188 store,
182189 syncStatus : syncStatus as SyncStatus
@@ -185,6 +192,29 @@ describe('TipTracker', () => {
185192 } ) ;
186193 } ) ;
187194
195+ it ( 'is not polling while last poll$ emission is false' , ( ) => {
196+ createTestScheduler ( ) . run ( ( { cold, hot, expectObservable } ) => {
197+ const poll$ = hot ( 't----f----t|' , trueFalse ) ;
198+ const syncStatus : Partial < SyncStatus > = { isSettled$ : cold ( 'tftft' , trueFalse ) } ;
199+ const provider$ = createStubObservable < Cardano . Tip > (
200+ cold ( 'a|' , mockTips ) ,
201+ cold ( 'b|' , mockTips ) ,
202+ cold ( 'c|' , mockTips )
203+ ) ;
204+ const tracker$ = new TipTracker ( {
205+ connectionStatus$,
206+ logger,
207+ maxPollInterval : Number . MAX_VALUE ,
208+ minPollInterval : pollInterval ,
209+ pollController$ : poll$ ,
210+ provider$,
211+ store,
212+ syncStatus : syncStatus as SyncStatus
213+ } ) ;
214+ expectObservable ( tracker$ , '^-----------!' ) . toBe ( 'a--b------c' , mockTips ) ;
215+ } ) ;
216+ } ) ;
217+
188218 it ( 'syncStatus timeout while connection is down does not emit tip updates' , ( ) => {
189219 createTestScheduler ( ) . run ( ( { cold, hot, expectObservable, expectSubscriptions } ) => {
190220 const syncStatus : Partial < SyncStatus > = { isSettled$ : hot ( '10ms |' ) } ;
@@ -195,6 +225,7 @@ describe('TipTracker', () => {
195225 logger,
196226 maxPollInterval : 6 ,
197227 minPollInterval : 0 ,
228+ pollController$ : of ( true ) ,
198229 provider$,
199230 store,
200231 syncStatus : syncStatus as SyncStatus
0 commit comments