1- import { ClientContext } from '@launchdarkly/js-sdk-common' ;
2-
31import { LDFeatureStore } from '../../src' ;
42import PollingProcessor from '../../src/data_sources/PollingProcessor' ;
53import Requestor from '../../src/data_sources/Requestor' ;
6- import Configuration from '../../src/options/Configuration' ;
74import AsyncStoreFacade from '../../src/store/AsyncStoreFacade' ;
85import InMemoryFeatureStore from '../../src/store/InMemoryFeatureStore' ;
96import VersionedDataKinds from '../../src/store/VersionedDataKinds' ;
10- import { createBasicPlatform } from '../createBasicPlatform' ;
117import TestLogger , { LogLevel } from '../Logger' ;
128
13- describe ( 'given an event processor' , ( ) => {
9+ describe ( 'given a polling processor' , ( ) => {
1410 const requestor = {
1511 requestAllData : jest . fn ( ) ,
1612 } ;
@@ -23,24 +19,19 @@ describe('given an event processor', () => {
2319
2420 let store : LDFeatureStore ;
2521 let storeFacade : AsyncStoreFacade ;
26- let config : Configuration ;
2722 let processor : PollingProcessor ;
2823 let initSuccessHandler : jest . Mock ;
2924
3025 beforeEach ( ( ) => {
3126 store = new InMemoryFeatureStore ( ) ;
3227 storeFacade = new AsyncStoreFacade ( store ) ;
33- config = new Configuration ( {
34- featureStore : store ,
35- pollInterval : longInterval ,
36- logger : new TestLogger ( ) ,
37- } ) ;
3828 initSuccessHandler = jest . fn ( ) ;
3929
4030 processor = new PollingProcessor (
41- config ,
4231 requestor as unknown as Requestor ,
43- config . featureStoreFactory ( new ClientContext ( '' , config , createBasicPlatform ( ) ) ) ,
32+ longInterval ,
33+ store ,
34+ new TestLogger ( ) ,
4435 initSuccessHandler ,
4536 ) ;
4637 } ) ;
@@ -99,27 +90,22 @@ describe('given a polling processor with a short poll duration', () => {
9990 const jsonData = JSON . stringify ( allData ) ;
10091
10192 let store : LDFeatureStore ;
102- let config : Configuration ;
93+ let testLogger : TestLogger ;
10394 let processor : PollingProcessor ;
10495 let initSuccessHandler : jest . Mock ;
10596 let errorHandler : jest . Mock ;
10697
10798 beforeEach ( ( ) => {
10899 store = new InMemoryFeatureStore ( ) ;
109- config = new Configuration ( {
110- featureStore : store ,
111- pollInterval : shortInterval ,
112- logger : new TestLogger ( ) ,
113- } ) ;
100+ testLogger = new TestLogger ( ) ;
114101 initSuccessHandler = jest . fn ( ) ;
115102 errorHandler = jest . fn ( ) ;
116103
117- // Configuration will not let us set this as low as needed for the test.
118- Object . defineProperty ( config , 'pollInterval' , { value : 0.1 } ) ;
119104 processor = new PollingProcessor (
120- config ,
121105 requestor as unknown as Requestor ,
122- config . featureStoreFactory ( new ClientContext ( '' , config , createBasicPlatform ( ) ) ) ,
106+ shortInterval ,
107+ store ,
108+ testLogger ,
123109 initSuccessHandler ,
124110 errorHandler ,
125111 ) ;
@@ -130,14 +116,21 @@ describe('given a polling processor with a short poll duration', () => {
130116 jest . resetAllMocks ( ) ;
131117 } ) ;
132118
133- it ( 'polls repeatedly' , ( done ) => {
134- requestor . requestAllData = jest . fn ( ( cb ) => cb ( undefined , jsonData ) ) ;
119+ it ( 'polls repeatedly' , async ( ) => {
120+ const expectedCalls = new Promise < void > ( ( resolve ) => {
121+ let callCount = 0 ;
122+ requestor . requestAllData = jest . fn ( ( cb ) => {
123+ cb ( undefined , jsonData ) ;
124+ callCount += 1 ;
125+ if ( callCount >= 10 ) {
126+ resolve ( ) ;
127+ }
128+ } ) ;
135129
136- processor . start ( ) ;
137- setTimeout ( ( ) => {
138- expect ( requestor . requestAllData . mock . calls . length ) . toBeGreaterThanOrEqual ( 4 ) ;
139- done ( ) ;
140- } , 500 ) ;
130+ processor . start ( ) ;
131+ } ) ;
132+
133+ await expectedCalls ;
141134 } ) ;
142135
143136 it . each < number | jest . DoneCallback > ( [ 400 , 408 , 429 , 500 , 503 ] ) (
@@ -158,7 +151,6 @@ describe('given a polling processor with a short poll duration', () => {
158151 expect ( errorHandler ) . not . toBeCalled ( ) ;
159152 setTimeout ( ( ) => {
160153 expect ( requestor . requestAllData . mock . calls . length ) . toBeGreaterThanOrEqual ( 2 ) ;
161- const testLogger = config . logger as TestLogger ;
162154 expect ( testLogger . getCount ( LogLevel . Error ) ) . toBe ( 0 ) ;
163155 expect ( testLogger . getCount ( LogLevel . Warn ) ) . toBeGreaterThan ( 2 ) ;
164156 ( done as jest . DoneCallback ) ( ) ;
@@ -176,7 +168,6 @@ describe('given a polling processor with a short poll duration', () => {
176168
177169 setTimeout ( ( ) => {
178170 expect ( requestor . requestAllData . mock . calls . length ) . toBeGreaterThanOrEqual ( 2 ) ;
179- const testLogger = config . logger as TestLogger ;
180171 expect ( testLogger . getCount ( LogLevel . Error ) ) . toBeGreaterThan ( 2 ) ;
181172 ( done as jest . DoneCallback ) ( ) ;
182173 } , 300 ) ;
@@ -199,7 +190,6 @@ describe('given a polling processor with a short poll duration', () => {
199190
200191 setTimeout ( ( ) => {
201192 expect ( requestor . requestAllData . mock . calls . length ) . toBe ( 1 ) ;
202- const testLogger = config . logger as TestLogger ;
203193 expect ( testLogger . getCount ( LogLevel . Error ) ) . toBe ( 1 ) ;
204194 ( done as jest . DoneCallback ) ( ) ;
205195 } , 300 ) ;
0 commit comments