77 WatchHandle ,
88} from '@launchdarkly/js-sdk-common' ;
99
10+ import { FileSystemDataSourceConfiguration } from '../../src/api' ;
1011import FileDataInitializerFDv2 from '../../src/data_sources/fileDataInitilizerFDv2' ;
11- import Configuration from '../../src/options/Configuration' ;
1212import { createBasicPlatform } from '../createBasicPlatform' ;
1313import TestLogger , { LogLevel } from '../Logger' ;
1414
@@ -78,7 +78,6 @@ describe('FileDataInitializerFDv2', () => {
7878 let mockFilesystem : MockFilesystem ;
7979 let logger : TestLogger ;
8080 let platform : Platform ;
81- let config : Configuration ;
8281 let mockDataCallback : jest . Mock ;
8382 let mockStatusCallback : jest . Mock ;
8483
@@ -100,24 +99,14 @@ describe('FileDataInitializerFDv2', () => {
10099 } ) ;
101100
102101 it ( 'throws error when paths are not provided' , ( ) => {
103- config = new Configuration ( {
104- dataSystem : {
105- dataSource : {
106- dataSourceOptionsType : 'standard' ,
107- initializerOptions : {
108- file : {
109- enabled : true ,
110- paths : [ ] ,
111- } ,
112- } ,
113- } ,
114- } ,
115- logger,
116- } ) ;
102+ const options : FileSystemDataSourceConfiguration = {
103+ type : 'file' ,
104+ paths : [ ] ,
105+ } ;
117106
118107 expect ( ( ) => {
119108 /* eslint-disable-next-line no-new */
120- new FileDataInitializerFDv2 ( config , platform ) ;
109+ new FileDataInitializerFDv2 ( options , platform , logger ) ;
121110 } ) . toThrow ( 'FileDataInitializerFDv2: paths are required' ) ;
122111 } ) ;
123112
@@ -127,46 +116,26 @@ describe('FileDataInitializerFDv2', () => {
127116 fileSystem : undefined ,
128117 } ;
129118
130- config = new Configuration ( {
131- dataSystem : {
132- dataSource : {
133- dataSourceOptionsType : 'standard' ,
134- initializerOptions : {
135- file : {
136- enabled : true ,
137- paths : [ 'test.json' ] ,
138- } ,
139- } ,
140- } ,
141- } ,
142- logger,
143- } ) ;
119+ const options : FileSystemDataSourceConfiguration = {
120+ type : 'file' ,
121+ paths : [ 'test.json' ] ,
122+ } ;
144123
145124 expect ( ( ) => {
146125 /* eslint-disable-next-line no-new */
147- new FileDataInitializerFDv2 ( config , platformWithoutFileSystem ) ;
126+ new FileDataInitializerFDv2 ( options , platformWithoutFileSystem , logger ) ;
148127 } ) . toThrow ( 'FileDataInitializerFDv2: file system is required' ) ;
149128 } ) ;
150129
151130 it ( 'loads and processes JSON file with flags and segments' , async ( ) => {
152131 mockFilesystem . fileData [ 'test.json' ] = { timestamp : 0 , data : allPropertiesJson } ;
153132
154- config = new Configuration ( {
155- dataSystem : {
156- dataSource : {
157- dataSourceOptionsType : 'standard' ,
158- initializerOptions : {
159- file : {
160- enabled : true ,
161- paths : [ 'test.json' ] ,
162- } ,
163- } ,
164- } ,
165- } ,
166- logger,
167- } ) ;
133+ const options : FileSystemDataSourceConfiguration = {
134+ type : 'file' ,
135+ paths : [ 'test.json' ] ,
136+ } ;
168137
169- const initializer = new FileDataInitializerFDv2 ( config , platform ) ;
138+ const initializer = new FileDataInitializerFDv2 ( options , platform , logger ) ;
170139 initializer . start ( mockDataCallback , mockStatusCallback ) ;
171140
172141 await jest . runAllTimersAsync ( ) ;
@@ -179,22 +148,12 @@ describe('FileDataInitializerFDv2', () => {
179148 mockFilesystem . fileData [ 'flags.json' ] = { timestamp : 0 , data : flagOnlyJson } ;
180149 mockFilesystem . fileData [ 'segments.json' ] = { timestamp : 0 , data : segmentOnlyJson } ;
181150
182- config = new Configuration ( {
183- dataSystem : {
184- dataSource : {
185- dataSourceOptionsType : 'standard' ,
186- initializerOptions : {
187- file : {
188- enabled : true ,
189- paths : [ 'flags.json' , 'segments.json' ] ,
190- } ,
191- } ,
192- } ,
193- } ,
194- logger,
195- } ) ;
151+ const options : FileSystemDataSourceConfiguration = {
152+ type : 'file' ,
153+ paths : [ 'flags.json' , 'segments.json' ] ,
154+ } ;
196155
197- const initializer = new FileDataInitializerFDv2 ( config , platform ) ;
156+ const initializer = new FileDataInitializerFDv2 ( options , platform , logger ) ;
198157 initializer . start ( mockDataCallback , mockStatusCallback ) ;
199158
200159 await jest . runAllTimersAsync ( ) ;
@@ -218,23 +177,13 @@ describe('FileDataInitializerFDv2', () => {
218177
219178 mockFilesystem . fileData [ 'test.yaml' ] = { timestamp : 0 , data : yamlData } ;
220179
221- config = new Configuration ( {
222- dataSystem : {
223- dataSource : {
224- dataSourceOptionsType : 'standard' ,
225- initializerOptions : {
226- file : {
227- enabled : true ,
228- paths : [ 'test.yaml' ] ,
229- yamlParser : mockYamlParser ,
230- } ,
231- } ,
232- } ,
233- } ,
234- logger,
235- } ) ;
180+ const options : FileSystemDataSourceConfiguration = {
181+ type : 'file' ,
182+ paths : [ 'test.yaml' ] ,
183+ yamlParser : mockYamlParser ,
184+ } ;
236185
237- const initializer = new FileDataInitializerFDv2 ( config , platform ) ;
186+ const initializer = new FileDataInitializerFDv2 ( options , platform , logger ) ;
238187 initializer . start ( mockDataCallback , mockStatusCallback ) ;
239188
240189 await jest . runAllTimersAsync ( ) ;
@@ -248,22 +197,12 @@ describe('FileDataInitializerFDv2', () => {
248197 const yamlData = 'flags:\n flag1:\n key: flag1' ;
249198 mockFilesystem . fileData [ 'test.yaml' ] = { timestamp : 0 , data : yamlData } ;
250199
251- config = new Configuration ( {
252- dataSystem : {
253- dataSource : {
254- dataSourceOptionsType : 'standard' ,
255- initializerOptions : {
256- file : {
257- enabled : true ,
258- paths : [ 'test.yaml' ] ,
259- }
260- } ,
261- } ,
262- } ,
263- logger,
264- } ) ;
200+ const options : FileSystemDataSourceConfiguration = {
201+ type : 'file' ,
202+ paths : [ 'test.yaml' ] ,
203+ } ;
265204
266- const initializer = new FileDataInitializerFDv2 ( config , platform ) ;
205+ const initializer = new FileDataInitializerFDv2 ( options , platform , logger ) ;
267206 initializer . start ( mockDataCallback , mockStatusCallback ) ;
268207
269208 await jest . runAllTimersAsync ( ) ;
@@ -278,22 +217,12 @@ describe('FileDataInitializerFDv2', () => {
278217 it ( 'handles invalid JSON gracefully' , async ( ) => {
279218 mockFilesystem . fileData [ 'test.json' ] = { timestamp : 0 , data : 'invalid json {{{{' } ;
280219
281- config = new Configuration ( {
282- dataSystem : {
283- dataSource : {
284- dataSourceOptionsType : 'standard' ,
285- initializerOptions : {
286- file : {
287- enabled : true ,
288- paths : [ 'test.json' ] ,
289- } ,
290- } ,
291- } ,
292- } ,
293- logger,
294- } ) ;
220+ const options : FileSystemDataSourceConfiguration = {
221+ type : 'file' ,
222+ paths : [ 'test.json' ] ,
223+ } ;
295224
296- const initializer = new FileDataInitializerFDv2 ( config , platform ) ;
225+ const initializer = new FileDataInitializerFDv2 ( options , platform , logger ) ;
297226 initializer . start ( mockDataCallback , mockStatusCallback ) ;
298227
299228 await jest . runAllTimersAsync ( ) ;
@@ -342,22 +271,12 @@ describe('FileDataInitializerFDv2', () => {
342271 mockFilesystem . fileData [ 'flags.json' ] = { timestamp : 0 , data : flagFile } ;
343272 mockFilesystem . fileData [ 'segments.json' ] = { timestamp : 0 , data : segmentFile } ;
344273
345- config = new Configuration ( {
346- dataSystem : {
347- dataSource : {
348- dataSourceOptionsType : 'standard' ,
349- initializerOptions : {
350- file : {
351- enabled : true ,
352- paths : [ 'flags.json' , 'segments.json' ] ,
353- }
354- } ,
355- } ,
356- } ,
357- logger,
358- } ) ;
274+ const options : FileSystemDataSourceConfiguration = {
275+ type : 'file' ,
276+ paths : [ 'flags.json' , 'segments.json' ] ,
277+ } ;
359278
360- const initializer = new FileDataInitializerFDv2 ( config , platform ) ;
279+ const initializer = new FileDataInitializerFDv2 ( options , platform , logger ) ;
361280 initializer . start ( mockDataCallback , mockStatusCallback ) ;
362281
363282 await jest . runAllTimersAsync ( ) ;
@@ -429,22 +348,12 @@ describe('FileDataInitializerFDv2', () => {
429348 mockFilesystem . fileData [ 'file1.json' ] = { timestamp : 0 , data : file1 } ;
430349 mockFilesystem . fileData [ 'file2.json' ] = { timestamp : 0 , data : file2 } ;
431350
432- config = new Configuration ( {
433- dataSystem : {
434- dataSource : {
435- dataSourceOptionsType : 'standard' ,
436- initializerOptions : {
437- file : {
438- enabled : true ,
439- paths : [ 'file1.json' , 'file2.json' ] ,
440- } ,
441- } ,
442- } ,
443- } ,
444- logger,
445- } ) ;
351+ const options : FileSystemDataSourceConfiguration = {
352+ type : 'file' ,
353+ paths : [ 'file1.json' , 'file2.json' ] ,
354+ } ;
446355
447- const initializer = new FileDataInitializerFDv2 ( config , platform ) ;
356+ const initializer = new FileDataInitializerFDv2 ( options , platform , logger ) ;
448357 initializer . start ( mockDataCallback , mockStatusCallback ) ;
449358
450359 await jest . runAllTimersAsync ( ) ;
0 commit comments