Browse Source

fix(core): Fix DefaultLogger logLevel Error

A bad falsy check was reverting the level to Info.
Michael Bromley 6 years ago
parent
commit
d5405a00a5

+ 128 - 0
packages/core/src/config/logger/default-logger.spec.ts

@@ -0,0 +1,128 @@
+import { DefaultLogger } from './default-logger';
+import { Logger, LogLevel } from './vendure-logger';
+
+describe('DefaultLogger', () => {
+    let stdOutSpy: jest.SpyInstance;
+    beforeEach(() => {
+        stdOutSpy = jest.spyOn(process.stdout, 'write').mockImplementation(() => true);
+    });
+
+    afterEach(() => {
+        stdOutSpy.mockRestore();
+    });
+
+    it('logLevel Debug', () => {
+        const logger = new DefaultLogger({ level: LogLevel.Debug });
+        Logger.useLogger(logger);
+
+        Logger.debug('AAAA');
+        expect(stdOutSpy).toHaveBeenCalledTimes(1);
+        expect(stdOutSpy.mock.calls[0][0]).toContain('AAAA');
+
+        Logger.verbose('BBBB');
+        expect(stdOutSpy).toHaveBeenCalledTimes(2);
+        expect(stdOutSpy.mock.calls[1][0]).toContain('BBBB');
+
+        Logger.info('CCCC');
+        expect(stdOutSpy).toHaveBeenCalledTimes(3);
+        expect(stdOutSpy.mock.calls[2][0]).toContain('CCCC');
+
+        Logger.warn('DDDD');
+        expect(stdOutSpy).toHaveBeenCalledTimes(4);
+        expect(stdOutSpy.mock.calls[3][0]).toContain('DDDD');
+
+        Logger.error('EEEE');
+        expect(stdOutSpy).toHaveBeenCalledTimes(5);
+        expect(stdOutSpy.mock.calls[4][0]).toContain('EEEE');
+    });
+
+    it('logLevel Verbose', () => {
+        const logger = new DefaultLogger({ level: LogLevel.Verbose });
+        Logger.useLogger(logger);
+
+        Logger.debug('AAAA');
+        expect(stdOutSpy).toHaveBeenCalledTimes(0);
+
+        Logger.verbose('BBBB');
+        expect(stdOutSpy).toHaveBeenCalledTimes(1);
+        expect(stdOutSpy.mock.calls[0][0]).toContain('BBBB');
+
+        Logger.info('CCCC');
+        expect(stdOutSpy).toHaveBeenCalledTimes(2);
+        expect(stdOutSpy.mock.calls[1][0]).toContain('CCCC');
+
+        Logger.warn('DDDD');
+        expect(stdOutSpy).toHaveBeenCalledTimes(3);
+        expect(stdOutSpy.mock.calls[2][0]).toContain('DDDD');
+
+        Logger.error('EEEE');
+        expect(stdOutSpy).toHaveBeenCalledTimes(4);
+        expect(stdOutSpy.mock.calls[3][0]).toContain('EEEE');
+    });
+
+    it('logLevel Info', () => {
+        const logger = new DefaultLogger({ level: LogLevel.Info });
+        Logger.useLogger(logger);
+
+        Logger.debug('AAAA');
+        expect(stdOutSpy).toHaveBeenCalledTimes(0);
+
+        Logger.verbose('BBBB');
+        expect(stdOutSpy).toHaveBeenCalledTimes(0);
+
+        Logger.info('CCCC');
+        expect(stdOutSpy).toHaveBeenCalledTimes(1);
+        expect(stdOutSpy.mock.calls[0][0]).toContain('CCCC');
+
+        Logger.warn('DDDD');
+        expect(stdOutSpy).toHaveBeenCalledTimes(2);
+        expect(stdOutSpy.mock.calls[1][0]).toContain('DDDD');
+
+        Logger.error('EEEE');
+        expect(stdOutSpy).toHaveBeenCalledTimes(3);
+        expect(stdOutSpy.mock.calls[2][0]).toContain('EEEE');
+    });
+
+    it('logLevel Warn', () => {
+        const logger = new DefaultLogger({ level: LogLevel.Warn });
+        Logger.useLogger(logger);
+
+        Logger.debug('AAAA');
+        expect(stdOutSpy).toHaveBeenCalledTimes(0);
+
+        Logger.verbose('BBBB');
+        expect(stdOutSpy).toHaveBeenCalledTimes(0);
+
+        Logger.info('CCCC');
+        expect(stdOutSpy).toHaveBeenCalledTimes(0);
+
+        Logger.warn('DDDD');
+        expect(stdOutSpy).toHaveBeenCalledTimes(1);
+        expect(stdOutSpy.mock.calls[0][0]).toContain('DDDD');
+
+        Logger.error('EEEE');
+        expect(stdOutSpy).toHaveBeenCalledTimes(2);
+        expect(stdOutSpy.mock.calls[1][0]).toContain('EEEE');
+    });
+
+    it('logLevel Error', () => {
+        const logger = new DefaultLogger({ level: LogLevel.Error });
+        Logger.useLogger(logger);
+
+        Logger.debug('AAAA');
+        expect(stdOutSpy).toHaveBeenCalledTimes(0);
+
+        Logger.verbose('BBBB');
+        expect(stdOutSpy).toHaveBeenCalledTimes(0);
+
+        Logger.info('CCCC');
+        expect(stdOutSpy).toHaveBeenCalledTimes(0);
+
+        Logger.warn('DDDD');
+        expect(stdOutSpy).toHaveBeenCalledTimes(0);
+
+        Logger.error('EEEE');
+        expect(stdOutSpy).toHaveBeenCalledTimes(1);
+        expect(stdOutSpy.mock.calls[0][0]).toContain('EEEE');
+    });
+});

+ 1 - 1
packages/core/src/config/logger/default-logger.ts

@@ -37,7 +37,7 @@ export class DefaultLogger implements VendureLogger {
     private static originalLogLevel: LogLevel;
 
     constructor(options?: { level?: LogLevel; timestamp?: boolean }) {
-        this.level = (options && options.level) || LogLevel.Info;
+        this.level = options && options.level != null ? options.level : LogLevel.Info;
         this.timestamp = options && options.timestamp !== undefined ? options.timestamp : true;
     }