@@ -463,6 +463,97 @@ describe('multiple consumers', () => {
463463 } ) ;
464464} ) ;
465465
466+ describe ( 'LogConsumer level enabled getter' , ( ) => {
467+ it ( 'should have enabled property for each level' , ( ) => {
468+ const consumer = new LogConsumer ( { level : 'warn' } ) ;
469+ assert . strictEqual ( consumer . trace . enabled , false ) ;
470+ assert . strictEqual ( consumer . debug . enabled , false ) ;
471+ assert . strictEqual ( consumer . info . enabled , false ) ;
472+ assert . strictEqual ( consumer . warn . enabled , true ) ;
473+ assert . strictEqual ( consumer . error . enabled , true ) ;
474+ assert . strictEqual ( consumer . fatal . enabled , true ) ;
475+ } ) ;
476+
477+ it ( 'should have all levels enabled when level is trace' , ( ) => {
478+ const consumer = new LogConsumer ( { level : 'trace' } ) ;
479+ assert . strictEqual ( consumer . trace . enabled , true ) ;
480+ assert . strictEqual ( consumer . debug . enabled , true ) ;
481+ assert . strictEqual ( consumer . info . enabled , true ) ;
482+ assert . strictEqual ( consumer . warn . enabled , true ) ;
483+ assert . strictEqual ( consumer . error . enabled , true ) ;
484+ assert . strictEqual ( consumer . fatal . enabled , true ) ;
485+ } ) ;
486+
487+ it ( 'should have only fatal enabled when level is fatal' , ( ) => {
488+ const consumer = new LogConsumer ( { level : 'fatal' } ) ;
489+ assert . strictEqual ( consumer . trace . enabled , false ) ;
490+ assert . strictEqual ( consumer . debug . enabled , false ) ;
491+ assert . strictEqual ( consumer . info . enabled , false ) ;
492+ assert . strictEqual ( consumer . warn . enabled , false ) ;
493+ assert . strictEqual ( consumer . error . enabled , false ) ;
494+ assert . strictEqual ( consumer . fatal . enabled , true ) ;
495+ } ) ;
496+ } ) ;
497+
498+ describe ( 'JSONConsumer stream options' , ( ) => {
499+ it ( 'should accept a writable stream object' , ( ) => {
500+ const stream = new TestStream ( ) ;
501+ const consumer = new JSONConsumer ( { stream, level : 'info' } ) ;
502+ consumer . attach ( ) ;
503+ const logger = new Logger ( { level : 'info' } ) ;
504+
505+ logger . info ( 'stream object test' ) ;
506+ consumer . flushSync ( ) ;
507+
508+ assert . strictEqual ( stream . logs . length , 1 ) ;
509+ assert . strictEqual ( stream . logs [ 0 ] . msg , 'stream object test' ) ;
510+ } ) ;
511+
512+ it ( 'should throw for invalid stream type' , ( ) => {
513+ assert . throws ( ( ) => {
514+ new JSONConsumer ( { stream : true , level : 'info' } ) ;
515+ } , {
516+ code : 'ERR_INVALID_ARG_TYPE' ,
517+ } ) ;
518+ } ) ;
519+
520+ it ( 'should accept a file descriptor number' , ( ) => {
521+ // fd 1 is stdout - just verify no throw on construction
522+ const consumer = new JSONConsumer ( { stream : 1 , level : 'info' } ) ;
523+ assert . ok ( consumer ) ;
524+ } ) ;
525+
526+ it ( 'should throw for invalid consumer level' , ( ) => {
527+ assert . throws ( ( ) => {
528+ new JSONConsumer ( { level : 'invalid' } ) ;
529+ } , {
530+ code : 'ERR_INVALID_ARG_VALUE' ,
531+ } ) ;
532+ } ) ;
533+ } ) ;
534+
535+ describe ( 'JSONConsumer flush and end' , ( ) => {
536+ it ( 'should call flush with callback' , ( _ , done ) => {
537+ const stream = new TestStream ( ) ;
538+ const consumer = new JSONConsumer ( { stream, level : 'info' } ) ;
539+ consumer . flush ( ( ) => {
540+ done ( ) ;
541+ } ) ;
542+ } ) ;
543+
544+ it ( 'should call flushSync without error' , ( ) => {
545+ const stream = new TestStream ( ) ;
546+ const consumer = new JSONConsumer ( { stream, level : 'info' } ) ;
547+ consumer . flushSync ( ) ;
548+ } ) ;
549+
550+ it ( 'should call end without error' , ( ) => {
551+ const stream = new TestStream ( ) ;
552+ const consumer = new JSONConsumer ( { stream, level : 'info' } ) ;
553+ consumer . end ( ) ;
554+ } ) ;
555+ } ) ;
556+
466557describe ( 'channels export' , ( ) => {
467558 it ( 'should export channel objects for all levels' , ( ) => {
468559 assert . strictEqual ( typeof channels , 'object' ) ;
0 commit comments