@@ -283,26 +283,14 @@ describe('LogClient#flush', () => {
283
283
body : { data : { id : `log-id-${ reqManager . size ( ) + 1 } ` , type : 'logs' } } ,
284
284
} ) ;
285
285
} ) ;
286
- logger . addLog ( {
287
- type : 'mock-log' ,
288
- val : 1 ,
289
- date : new Date ( '2021-06-03T02:00:00.000Z' ) ,
290
- } ) ;
291
- logger . addLog ( {
292
- type : 'mock-log' ,
293
- val : 2 ,
294
- date : new Date ( '2021-06-03T03:00:00.000Z' ) ,
295
- } ) ;
286
+ logger . addLog ( { type : 'mock-log' , val : 1 } ) ;
287
+ logger . addLog ( { type : 'mock-log' , val : 2 } ) ;
296
288
let resolved = false ;
297
289
let flushPromise = logger . flush ( ) . then ( ( result ) => {
298
290
resolved = true ;
299
291
return result ;
300
292
} ) ;
301
- logger . addLog ( {
302
- type : 'mock-log' ,
303
- val : 3 ,
304
- date : new Date ( '2021-06-03T04:00:00.000Z' ) ,
305
- } ) ;
293
+ logger . addLog ( { type : 'mock-log' , val : 3 } ) ;
306
294
await reqManager . waitForRequests ( 2 ) ;
307
295
expect ( resolved ) . toBe ( false ) ;
308
296
reqManager . resolveNextRequest ( ) ;
@@ -328,38 +316,53 @@ describe('LogClient#flush', () => {
328
316
body : { data : { id : `log-id-${ defManager . size ( ) + 1 } ` , type : 'logs' } } ,
329
317
} ) ;
330
318
} ) ;
331
- logger . addLog ( {
332
- type : 'mock-log' ,
333
- val : 1 ,
334
- date : new Date ( '2021-06-03T02:00:00.000Z' ) ,
335
- } ) ;
336
- logger . addLog ( {
337
- type : 'mock-log' ,
338
- val : 2 ,
339
- date : new Date ( '2021-06-03T03:00:00.000Z' ) ,
319
+ let oldGetRun = server . handlers [ '/runs/{id}' ] . get . getMockImplementation ( ) ! ;
320
+ server . handlers [ '/runs/{id}' ] . get . mockImplementation ( async ( ...args ) => {
321
+ let result = await oldGetRun ( ...args ) ;
322
+ if ( result . status !== 200 ) return result ;
323
+ result . body . data . attributes = {
324
+ ...result . body . data . attributes ,
325
+ // Should be ignored by first flush call.
326
+ missingLogNumbers : [ 3 ] ,
327
+ } ;
328
+ return result ;
340
329
} ) ;
330
+ logger . addLog ( { type : 'mock-log' , val : 1 } ) ;
331
+ logger . addLog ( { type : 'mock-log' , val : 2 } ) ;
341
332
let flushPromise = logger . flush ( ) ;
342
- logger
343
- . addLog ( {
344
- type : 'mock-log' ,
345
- val : 'fail' ,
346
- date : new Date ( '2021-06-03T04:00:00.000Z' ) ,
347
- } )
348
- . catch ( ( ) => {
349
- // Prevent vitest from catching the error and complaining about it.
350
- } ) ;
351
- logger . addLog ( {
352
- type : 'mock-log' ,
353
- val : 4 ,
354
- date : new Date ( '2021-06-03T03:00:00.000Z' ) ,
333
+ logger . addLog ( { type : 'mock-log' , val : 'fail' } ) . catch ( ( ) => {
334
+ // Prevent vitest from catching the error and complaining about it.
355
335
} ) ;
336
+ logger . addLog ( { type : 'mock-log' , val : 4 } ) ;
356
337
await defManager . waitForRequests ( 3 ) ;
357
338
defManager . resolveAllRequests ( ) ;
358
339
await expect ( flushPromise ) . resolves . toBeUndefined ( ) ;
359
340
await expect ( logger . flush ( ) ) . rejects . toThrowErrorMatchingInlineSnapshot (
360
341
`[AddLogError: FORBIDDEN]` ,
361
342
) ;
362
343
} ) ;
344
+
345
+ it ( 'fails if there are still missing logs on the server' , async ( {
346
+ logger,
347
+ server,
348
+ } ) => {
349
+ let oldGetRun = server . handlers [ '/runs/{id}' ] . get . getMockImplementation ( ) ! ;
350
+ server . handlers [ '/runs/{id}' ] . get . mockImplementation ( async ( ...args ) => {
351
+ let result = await oldGetRun ( ...args ) ;
352
+ if ( result . status !== 200 ) return result ;
353
+ result . body . data . attributes = {
354
+ ...result . body . data . attributes ,
355
+ // Should be ignored by first flush call.
356
+ missingLogNumbers : [ 1 ] ,
357
+ } ;
358
+ return result ;
359
+ } ) ;
360
+ logger . addLog ( { type : 'mock-log' , val : 1 } ) ;
361
+ logger . addLog ( { type : 'mock-log' , val : 2 } ) ;
362
+ await expect ( logger . flush ( ) ) . rejects . toThrowErrorMatchingInlineSnapshot (
363
+ `[FlushError: There are missing logs on server after flushing. Missing logs: 1]` ,
364
+ ) ;
365
+ } ) ;
363
366
} ) ;
364
367
365
368
describe ( 'LogClient#completeRun' , ( ) => {
0 commit comments