1
- import { ClientContext } from '@launchdarkly/js-sdk-common' ;
2
-
3
1
import { LDFeatureStore } from '../../src' ;
4
2
import PollingProcessor from '../../src/data_sources/PollingProcessor' ;
5
3
import Requestor from '../../src/data_sources/Requestor' ;
6
- import Configuration from '../../src/options/Configuration' ;
7
4
import AsyncStoreFacade from '../../src/store/AsyncStoreFacade' ;
8
5
import InMemoryFeatureStore from '../../src/store/InMemoryFeatureStore' ;
9
6
import VersionedDataKinds from '../../src/store/VersionedDataKinds' ;
10
- import { createBasicPlatform } from '../createBasicPlatform' ;
11
7
import TestLogger , { LogLevel } from '../Logger' ;
12
8
13
- describe ( 'given an event processor' , ( ) => {
9
+ describe ( 'given a polling processor' , ( ) => {
14
10
const requestor = {
15
11
requestAllData : jest . fn ( ) ,
16
12
} ;
@@ -23,24 +19,19 @@ describe('given an event processor', () => {
23
19
24
20
let store : LDFeatureStore ;
25
21
let storeFacade : AsyncStoreFacade ;
26
- let config : Configuration ;
27
22
let processor : PollingProcessor ;
28
23
let initSuccessHandler : jest . Mock ;
29
24
30
25
beforeEach ( ( ) => {
31
26
store = new InMemoryFeatureStore ( ) ;
32
27
storeFacade = new AsyncStoreFacade ( store ) ;
33
- config = new Configuration ( {
34
- featureStore : store ,
35
- pollInterval : longInterval ,
36
- logger : new TestLogger ( ) ,
37
- } ) ;
38
28
initSuccessHandler = jest . fn ( ) ;
39
29
40
30
processor = new PollingProcessor (
41
- config ,
42
31
requestor as unknown as Requestor ,
43
- config . featureStoreFactory ( new ClientContext ( '' , config , createBasicPlatform ( ) ) ) ,
32
+ longInterval ,
33
+ store ,
34
+ new TestLogger ( ) ,
44
35
initSuccessHandler ,
45
36
) ;
46
37
} ) ;
@@ -99,27 +90,22 @@ describe('given a polling processor with a short poll duration', () => {
99
90
const jsonData = JSON . stringify ( allData ) ;
100
91
101
92
let store : LDFeatureStore ;
102
- let config : Configuration ;
93
+ let testLogger : TestLogger ;
103
94
let processor : PollingProcessor ;
104
95
let initSuccessHandler : jest . Mock ;
105
96
let errorHandler : jest . Mock ;
106
97
107
98
beforeEach ( ( ) => {
108
99
store = new InMemoryFeatureStore ( ) ;
109
- config = new Configuration ( {
110
- featureStore : store ,
111
- pollInterval : shortInterval ,
112
- logger : new TestLogger ( ) ,
113
- } ) ;
100
+ testLogger = new TestLogger ( ) ;
114
101
initSuccessHandler = jest . fn ( ) ;
115
102
errorHandler = jest . fn ( ) ;
116
103
117
- // Configuration will not let us set this as low as needed for the test.
118
- Object . defineProperty ( config , 'pollInterval' , { value : 0.1 } ) ;
119
104
processor = new PollingProcessor (
120
- config ,
121
105
requestor as unknown as Requestor ,
122
- config . featureStoreFactory ( new ClientContext ( '' , config , createBasicPlatform ( ) ) ) ,
106
+ shortInterval ,
107
+ store ,
108
+ testLogger ,
123
109
initSuccessHandler ,
124
110
errorHandler ,
125
111
) ;
@@ -130,14 +116,21 @@ describe('given a polling processor with a short poll duration', () => {
130
116
jest . resetAllMocks ( ) ;
131
117
} ) ;
132
118
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
+ } ) ;
135
129
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 ;
141
134
} ) ;
142
135
143
136
it . each < number | jest . DoneCallback > ( [ 400 , 408 , 429 , 500 , 503 ] ) (
@@ -158,7 +151,6 @@ describe('given a polling processor with a short poll duration', () => {
158
151
expect ( errorHandler ) . not . toBeCalled ( ) ;
159
152
setTimeout ( ( ) => {
160
153
expect ( requestor . requestAllData . mock . calls . length ) . toBeGreaterThanOrEqual ( 2 ) ;
161
- const testLogger = config . logger as TestLogger ;
162
154
expect ( testLogger . getCount ( LogLevel . Error ) ) . toBe ( 0 ) ;
163
155
expect ( testLogger . getCount ( LogLevel . Warn ) ) . toBeGreaterThan ( 2 ) ;
164
156
( done as jest . DoneCallback ) ( ) ;
@@ -176,7 +168,6 @@ describe('given a polling processor with a short poll duration', () => {
176
168
177
169
setTimeout ( ( ) => {
178
170
expect ( requestor . requestAllData . mock . calls . length ) . toBeGreaterThanOrEqual ( 2 ) ;
179
- const testLogger = config . logger as TestLogger ;
180
171
expect ( testLogger . getCount ( LogLevel . Error ) ) . toBeGreaterThan ( 2 ) ;
181
172
( done as jest . DoneCallback ) ( ) ;
182
173
} , 300 ) ;
@@ -199,7 +190,6 @@ describe('given a polling processor with a short poll duration', () => {
199
190
200
191
setTimeout ( ( ) => {
201
192
expect ( requestor . requestAllData . mock . calls . length ) . toBe ( 1 ) ;
202
- const testLogger = config . logger as TestLogger ;
203
193
expect ( testLogger . getCount ( LogLevel . Error ) ) . toBe ( 1 ) ;
204
194
( done as jest . DoneCallback ) ( ) ;
205
195
} , 300 ) ;
0 commit comments