@@ -355,6 +355,100 @@ describe('Job', function () {
355355 const logsRemoved = await queue . getJobLogs ( job . id ) ;
356356 expect ( logsRemoved ) . to . be . eql ( { logs : [ ] , count : 0 } ) ;
357357 } ) ;
358+
359+ it ( 'should preserve up to keepLogs latest entries' , async ( ) => {
360+ const firstLog = 'some log text 1' ;
361+ const secondLog = 'some log text 2' ;
362+ const thirdLog = 'some log text 3' ;
363+
364+ const job = await Job . create (
365+ queue ,
366+ 'test' ,
367+ { foo : 'bar' } ,
368+ { keepLogs : 2 } ,
369+ ) ;
370+
371+ const count1 = await job . log ( firstLog ) ;
372+ expect ( count1 ) . to . be . equal ( 1 ) ;
373+
374+ const logs1 = await queue . getJobLogs ( job . id ) ;
375+ expect ( logs1 ) . to . be . eql ( { logs : [ firstLog ] , count : 1 } ) ;
376+
377+ const count2 = await job . log ( secondLog ) ;
378+ expect ( count2 ) . to . be . equal ( 2 ) ;
379+
380+ const logs2 = await queue . getJobLogs ( job . id ) ;
381+ expect ( logs2 ) . to . be . eql ( { logs : [ firstLog , secondLog ] , count : 2 } ) ;
382+
383+ const count3 = await job . log ( thirdLog ) ;
384+ expect ( count3 ) . to . be . equal ( 2 ) ;
385+
386+ const logs3 = await queue . getJobLogs ( job . id ) ;
387+ expect ( logs3 ) . to . be . eql ( { logs : [ secondLog , thirdLog ] , count : 2 } ) ;
388+ } ) ;
389+ } ) ;
390+
391+ describe ( '.clearLogs' , ( ) => {
392+ it ( 'can clear the log' , async ( ) => {
393+ const firstLog = 'some log text 1' ;
394+ const secondLog = 'some log text 2' ;
395+
396+ const job = await Job . create ( queue , 'test' , { foo : 'bar' } ) ;
397+
398+ await job . log ( firstLog ) ;
399+ await job . log ( secondLog ) ;
400+ const logs = await queue . getJobLogs ( job . id ) ;
401+ expect ( logs ) . to . be . eql ( { logs : [ firstLog , secondLog ] , count : 2 } ) ;
402+
403+ await job . clearLogs ( ) ;
404+
405+ const logsRemoved = await queue . getJobLogs ( job . id ) ;
406+ expect ( logsRemoved ) . to . be . eql ( { logs : [ ] , count : 0 } ) ;
407+ } ) ;
408+
409+ it ( 'can preserve up to keepLogs latest entries' , async ( ) => {
410+ const firstLog = 'some log text 1' ;
411+ const secondLog = 'some log text 2' ;
412+ const thirdLog = 'some log text 3' ;
413+
414+ const job = await Job . create ( queue , 'test' , { foo : 'bar' } ) ;
415+
416+ await job . log ( firstLog ) ;
417+ await job . log ( secondLog ) ;
418+ await job . log ( thirdLog ) ;
419+
420+ const logs1 = await queue . getJobLogs ( job . id ) ;
421+ expect ( logs1 ) . to . be . eql ( {
422+ logs : [ firstLog , secondLog , thirdLog ] ,
423+ count : 3 ,
424+ } ) ;
425+
426+ await job . clearLogs ( 4 ) ;
427+
428+ const logs2 = await queue . getJobLogs ( job . id ) ;
429+ expect ( logs2 ) . to . be . eql ( {
430+ logs : [ firstLog , secondLog , thirdLog ] ,
431+ count : 3 ,
432+ } ) ;
433+
434+ await job . clearLogs ( 3 ) ;
435+
436+ const logs3 = await queue . getJobLogs ( job . id ) ;
437+ expect ( logs3 ) . to . be . eql ( {
438+ logs : [ firstLog , secondLog , thirdLog ] ,
439+ count : 3 ,
440+ } ) ;
441+
442+ await job . clearLogs ( 2 ) ;
443+
444+ const logs4 = await queue . getJobLogs ( job . id ) ;
445+ expect ( logs4 ) . to . be . eql ( { logs : [ secondLog , thirdLog ] , count : 2 } ) ;
446+
447+ await job . clearLogs ( 0 ) ;
448+
449+ const logsRemoved = await queue . getJobLogs ( job . id ) ;
450+ expect ( logsRemoved ) . to . be . eql ( { logs : [ ] , count : 0 } ) ;
451+ } ) ;
358452 } ) ;
359453
360454 describe ( '.moveToCompleted' , function ( ) {
0 commit comments