MOBILE-4069 tests: Add unit tests for CoreLogger
parent
e755ff568d
commit
c6ae1f991d
|
@ -0,0 +1,120 @@
|
|||
// (C) Copyright 2015 Moodle Pty Ltd.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
/* eslint-disable no-console */
|
||||
|
||||
import { CoreConstants } from '@/core/constants';
|
||||
import { CoreBrowser } from '@singletons/browser';
|
||||
import { CoreLogger } from '@singletons/logger';
|
||||
|
||||
describe('CoreLogger singleton', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
console.log = jest.fn();
|
||||
console.info = jest.fn();
|
||||
console.warn = jest.fn();
|
||||
console.debug = jest.fn();
|
||||
console.error = jest.fn();
|
||||
});
|
||||
|
||||
it('adds logs to the console in dev environment', () => {
|
||||
// Simulate dev environment.
|
||||
const isTesting = CoreConstants.BUILD.isTesting;
|
||||
const isProduction = CoreConstants.BUILD.isProduction;
|
||||
CoreConstants.BUILD.isTesting = false;
|
||||
CoreConstants.BUILD.isProduction = false;
|
||||
|
||||
const logger = CoreLogger.getInstance('TestName');
|
||||
|
||||
logger.log('Log message');
|
||||
expect((<jest.Mock> console.log).mock.calls[0][0]).toContain('TestName: Log message');
|
||||
|
||||
logger.info('Info message');
|
||||
expect((<jest.Mock> console.info).mock.calls[0][0]).toContain('TestName: Info message');
|
||||
|
||||
logger.warn('Warn message');
|
||||
expect((<jest.Mock> console.warn).mock.calls[0][0]).toContain('TestName: Warn message');
|
||||
|
||||
logger.debug('Debug message');
|
||||
expect((<jest.Mock> console.debug).mock.calls[0][0]).toContain('TestName: Debug message');
|
||||
|
||||
logger.error('Error message');
|
||||
expect((<jest.Mock> console.error).mock.calls[0][0]).toContain('TestName: Error message');
|
||||
|
||||
CoreConstants.BUILD.isTesting = isTesting;
|
||||
CoreConstants.BUILD.isProduction = isProduction;
|
||||
});
|
||||
|
||||
it('adds logs to the console if enabled via dev setting', () => {
|
||||
// Enable logging.
|
||||
CoreBrowser.setDevelopmentSetting('LoggingEnabled', '1');
|
||||
|
||||
const logger = CoreLogger.getInstance('TestName');
|
||||
|
||||
logger.log('Log message');
|
||||
expect((<jest.Mock> console.log).mock.calls[0][0]).toContain('TestName: Log message');
|
||||
|
||||
logger.info('Info message');
|
||||
expect((<jest.Mock> console.info).mock.calls[0][0]).toContain('TestName: Info message');
|
||||
|
||||
logger.warn('Warn message');
|
||||
expect((<jest.Mock> console.warn).mock.calls[0][0]).toContain('TestName: Warn message');
|
||||
|
||||
logger.debug('Debug message');
|
||||
expect((<jest.Mock> console.debug).mock.calls[0][0]).toContain('TestName: Debug message');
|
||||
|
||||
logger.error('Error message');
|
||||
expect((<jest.Mock> console.error).mock.calls[0][0]).toContain('TestName: Error message');
|
||||
|
||||
CoreBrowser.clearDevelopmentSetting('LoggingEnabled');
|
||||
});
|
||||
|
||||
it('doesn\'t log to the console in testing environment', () => {
|
||||
// Disable production.
|
||||
const isProduction = CoreConstants.BUILD.isProduction;
|
||||
CoreConstants.BUILD.isProduction = false;
|
||||
|
||||
const logger = CoreLogger.getInstance('TestName');
|
||||
|
||||
logger.log('Log message');
|
||||
expect(console.log).not.toHaveBeenCalled();
|
||||
|
||||
logger.info('Info message');
|
||||
expect(console.info).not.toHaveBeenCalled();
|
||||
|
||||
logger.warn('Warn message');
|
||||
expect(console.warn).not.toHaveBeenCalled();
|
||||
|
||||
logger.debug('Debug message');
|
||||
expect(console.debug).not.toHaveBeenCalled();
|
||||
|
||||
logger.error('Error message');
|
||||
expect(console.error).not.toHaveBeenCalled();
|
||||
|
||||
CoreConstants.BUILD.isProduction = isProduction;
|
||||
});
|
||||
|
||||
it('displays a warning in production environment', () => {
|
||||
// Enable production.
|
||||
const isProduction = CoreConstants.BUILD.isProduction;
|
||||
CoreConstants.BUILD.isProduction = true;
|
||||
|
||||
CoreLogger.getInstance('TestName');
|
||||
|
||||
expect(console.warn).toHaveBeenCalledWith('Log is disabled in production app');
|
||||
|
||||
CoreConstants.BUILD.isProduction = isProduction;
|
||||
});
|
||||
|
||||
});
|
Loading…
Reference in New Issue