@@ -261,6 +261,42 @@ test('flush() delegates context configuration to the environment by calling conf
261
261
expect ( environment . configureContext ) . toBeCalled ( ) ;
262
262
} ) ;
263
263
264
+ test ( 'context is preserved across flush() calls' , async ( ) => {
265
+ // arrange
266
+ const expectedNamespace = 'Namespace' ;
267
+ const metricKey = 'Metric' ;
268
+ const expectedDimensionKey = 'Dim' ;
269
+ const expectedPropertyKey = 'Prop' ;
270
+ const expectedValues = 'Value' ;
271
+
272
+ const dimensions : Record < string , string > = { } ;
273
+ dimensions [ expectedDimensionKey ] = expectedValues ;
274
+
275
+ logger . setNamespace ( expectedNamespace ) ;
276
+ logger . setProperty ( expectedPropertyKey , expectedValues ) ;
277
+ logger . setDimensions ( dimensions ) ;
278
+
279
+ // act
280
+ logger . putMetric ( metricKey , 0 ) ;
281
+ await logger . flush ( ) ;
282
+
283
+ logger . putMetric ( metricKey , 1 ) ;
284
+ await logger . flush ( ) ;
285
+
286
+ // assert
287
+ expect ( sink . events ) . toHaveLength ( 2 ) ;
288
+ for ( let i = 0 ; i < sink . events . length ; i ++ ) {
289
+ const evt = sink . events [ i ] ;
290
+ // namespace, properties, dimensions should survive flushes
291
+ expect ( evt . namespace ) . toBe ( expectedNamespace ) ;
292
+ expect ( evt . getDimensions ( ) [ 0 ] [ expectedDimensionKey ] ) . toBe ( expectedValues ) ;
293
+ expect ( evt . properties [ expectedPropertyKey ] ) . toBe ( expectedValues ) ;
294
+ // metric values should not survive flushes
295
+ // @ts -ignore
296
+ expect ( evt . metrics . get ( metricKey ) . values ) . toStrictEqual ( [ i ] ) ;
297
+ }
298
+ } ) ;
299
+
264
300
const expectDimension = ( key : string , value : string ) => {
265
301
expect ( sink . events ) . toHaveLength ( 1 ) ;
266
302
const dimensionSets = sink . events [ 0 ] . getDimensions ( ) ;
0 commit comments