Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9c3e4c4
commit ca40c9a
Showing
7 changed files
with
130 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,43 +1,111 @@ | ||
import { Configuration, DefaultLogger } from '@mikro-orm/core'; | ||
import { Configuration, DefaultLogger, SimpleLogger, colors } from '@mikro-orm/core'; | ||
|
||
describe('Logger', () => { | ||
// Remove colors to allow for text matching in response | ||
const redColorFormatterSpy = jest.spyOn(colors, 'red').mockImplementation(text => text); | ||
const greyColorFormatterSpy = jest.spyOn(colors, 'grey').mockImplementation(text => text); | ||
const cyanColorFormatterSpy = jest.spyOn(colors, 'cyan').mockImplementation(text => text); | ||
const yellowColorFormatterSpy = jest.spyOn(colors, 'yellow').mockImplementation(text => text); | ||
|
||
const mockWriter = jest.fn(); | ||
|
||
test('should have debug mode disabled by default', async () => { | ||
const mock = jest.fn(); | ||
const logger = new DefaultLogger({ writer: mock }); | ||
expect(logger.debugMode).toBe(false); | ||
logger.log('discovery', 'test debug msg'); | ||
expect(mock.mock.calls.length).toBe(0); | ||
logger.log('info', 'test info msg'); | ||
expect(mock.mock.calls.length).toBe(0); | ||
describe('Logger', () => { | ||
beforeEach(() => { | ||
jest.clearAllMocks(); | ||
}); | ||
|
||
test('should print debug messages when debug mode enabled', async () => { | ||
const mock = jest.fn(); | ||
const logger = new DefaultLogger({ writer: mock, debugMode: true }); | ||
expect(logger.debugMode).toBe(true); | ||
logger.log('discovery', 'test debug msg'); | ||
expect(mock.mock.calls.length).toBe(1); | ||
logger.log('info', 'test info msg'); | ||
expect(mock.mock.calls.length).toBe(2); | ||
logger.log('query', 'test query msg'); | ||
expect(mock.mock.calls.length).toBe(3); | ||
describe('DefaultLogger', () => { | ||
|
||
test('should have debug mode disabled by default', async () => { | ||
const logger = new DefaultLogger({ writer: mockWriter }); | ||
expect(logger.debugMode).toBe(false); | ||
logger.log('discovery', 'test debug msg'); | ||
logger.log('info', 'test info msg'); | ||
expect(mockWriter).toBeCalledTimes(0); | ||
}); | ||
|
||
test('should print debug messages when debug mode enabled', async () => { | ||
const logger = new DefaultLogger({ writer: mockWriter, debugMode: true }); | ||
expect(logger.debugMode).toBe(true); | ||
logger.log('discovery', 'test debug msg'); | ||
expect(mockWriter).toBeCalledTimes(1); | ||
logger.log('info', 'test info msg'); | ||
expect(mockWriter).toBeCalledTimes(2); | ||
logger.log('query', 'test query msg'); | ||
expect(mockWriter).toBeCalledTimes(3); | ||
}); | ||
|
||
test('should not print debug messages when given namespace not enabled', async () => { | ||
const logger = new DefaultLogger({ writer: mockWriter, debugMode: ['query'] }); | ||
expect(logger.debugMode).toEqual(['query']); | ||
logger.log('discovery', 'test debug msg'); | ||
expect(mockWriter).toBeCalledTimes(0); | ||
logger.log('info', 'test info msg'); | ||
expect(mockWriter).toBeCalledTimes(0); | ||
logger.log('query', 'test query msg'); | ||
expect(mockWriter).toBeCalledTimes(1); | ||
logger.error('query', 'test error msg'); | ||
expect(mockWriter).toBeCalledTimes(2); | ||
logger.warn('query', 'test warning msg'); | ||
expect(mockWriter).toBeCalledTimes(3); | ||
}); | ||
|
||
test('should print labels correctly', () => { | ||
const logger = new DefaultLogger({ writer: mockWriter, debugMode: ['query'] }); | ||
const namespace = 'query'; | ||
const message = 'test label msg'; | ||
const label = 'hello world handler'; | ||
logger.log(namespace, message, { label }); | ||
expect(mockWriter).toBeCalledWith(`[${namespace}] (${label}) ${message}`); | ||
}); | ||
|
||
test('should print values with the appropriate colors', () => { | ||
const logger = new DefaultLogger({ writer: mockWriter, debugMode: ['query'] }); | ||
const namespace = 'query'; | ||
const label = 'handler'; | ||
const message = 'test label msg'; | ||
|
||
logger.log(namespace, message, { level: 'error', label }); | ||
expect(greyColorFormatterSpy).toBeCalledWith(`[${namespace}] `); | ||
expect(redColorFormatterSpy).toBeCalledWith(message); | ||
expect(cyanColorFormatterSpy).toBeCalledWith(`(${label}) `); | ||
expect(yellowColorFormatterSpy).not.toBeCalled(); | ||
|
||
jest.clearAllMocks(); | ||
|
||
logger.log(namespace, message, { level: 'warning', label }); | ||
expect(greyColorFormatterSpy).toBeCalledWith(`[${namespace}] `); | ||
expect(yellowColorFormatterSpy).toBeCalledWith(message); | ||
expect(cyanColorFormatterSpy).toBeCalledWith(`(${label}) `); | ||
expect(redColorFormatterSpy).not.toBeCalled(); | ||
|
||
jest.clearAllMocks(); | ||
|
||
logger.log(namespace, message, { level: 'info', label }); | ||
expect(greyColorFormatterSpy).toBeCalledWith(`[${namespace}] `); | ||
expect(cyanColorFormatterSpy).toBeCalledWith(`(${label}) `); | ||
expect(yellowColorFormatterSpy).not.toBeCalled(); | ||
expect(redColorFormatterSpy).not.toBeCalled(); | ||
}); | ||
}); | ||
|
||
test('should not print debug messages when given namespace not enabled', async () => { | ||
const mock = jest.fn(); | ||
const logger = new DefaultLogger({ writer: mock, debugMode: ['query'] }); | ||
expect(logger.debugMode).toEqual(['query']); | ||
logger.log('discovery', 'test debug msg'); | ||
expect(mock.mock.calls.length).toBe(0); | ||
logger.log('info', 'test info msg'); | ||
expect(mock.mock.calls.length).toBe(0); | ||
logger.log('query', 'test query msg'); | ||
expect(mock.mock.calls.length).toBe(1); | ||
logger.error('query', 'test error msg'); | ||
expect(mock.mock.calls.length).toBe(2); | ||
logger.warn('query', 'test warning msg'); | ||
expect(mock.mock.calls.length).toBe(3); | ||
describe('SimpleLogger', () => { | ||
|
||
test('should print correctly without a label', () => { | ||
const logger = new SimpleLogger({ writer: mockWriter, debugMode: ['query'] }); | ||
const namespace = 'query'; | ||
const message = 'test label msg'; | ||
logger.log(namespace, message); | ||
expect(mockWriter).toBeCalledWith(`[${namespace}] ${message}`); | ||
}); | ||
|
||
test('should print labels correctly', () => { | ||
const logger = new SimpleLogger({ writer: mockWriter, debugMode: ['query'] }); | ||
const namespace = 'query'; | ||
const message = 'test label msg'; | ||
const label = 'hello world handler'; | ||
logger.log(namespace, message, { label }); | ||
expect(mockWriter).toBeCalledWith(`[${namespace}] (${label}) ${message}`); | ||
}); | ||
}); | ||
|
||
}); |