2021-06-03 18:58:57 +02:00
|
|
|
import { ConsoleLogService } from "jslib-common/services/consoleLog.service";
|
2020-12-11 17:44:57 +01:00
|
|
|
|
|
|
|
const originalConsole = console;
|
|
|
|
let caughtMessage: any;
|
|
|
|
|
2022-02-22 15:39:11 +01:00
|
|
|
declare let console: any;
|
2020-12-11 17:44:57 +01:00
|
|
|
|
|
|
|
export function interceptConsole(interceptions: any): object {
|
|
|
|
console = {
|
|
|
|
log: function () {
|
2022-02-22 15:39:11 +01:00
|
|
|
// eslint-disable-next-line
|
2020-12-11 17:44:57 +01:00
|
|
|
interceptions.log = arguments;
|
|
|
|
},
|
|
|
|
warn: function () {
|
2022-02-22 15:39:11 +01:00
|
|
|
// eslint-disable-next-line
|
2020-12-11 17:44:57 +01:00
|
|
|
interceptions.warn = arguments;
|
|
|
|
},
|
|
|
|
error: function () {
|
2022-02-22 15:39:11 +01:00
|
|
|
// eslint-disable-next-line
|
2020-12-11 17:44:57 +01:00
|
|
|
interceptions.error = arguments;
|
2021-02-08 21:11:44 +01:00
|
|
|
},
|
2020-12-11 17:44:57 +01:00
|
|
|
};
|
|
|
|
return interceptions;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function restoreConsole() {
|
|
|
|
console = originalConsole;
|
|
|
|
}
|
|
|
|
|
|
|
|
describe("ConsoleLogService", () => {
|
|
|
|
let logService: ConsoleLogService;
|
|
|
|
beforeEach(() => {
|
|
|
|
caughtMessage = {};
|
|
|
|
interceptConsole(caughtMessage);
|
|
|
|
logService = new ConsoleLogService(true);
|
2021-12-16 13:36:21 +01:00
|
|
|
});
|
|
|
|
|
2020-12-11 17:44:57 +01:00
|
|
|
afterAll(() => {
|
|
|
|
restoreConsole();
|
2021-12-16 13:36:21 +01:00
|
|
|
});
|
|
|
|
|
2020-12-11 17:44:57 +01:00
|
|
|
it("filters messages below the set threshold", () => {
|
2022-02-22 15:39:11 +01:00
|
|
|
logService = new ConsoleLogService(true, () => true);
|
2020-12-11 17:44:57 +01:00
|
|
|
logService.debug("debug");
|
|
|
|
logService.info("info");
|
|
|
|
logService.warning("warning");
|
|
|
|
logService.error("error");
|
2021-12-16 13:36:21 +01:00
|
|
|
|
2020-12-11 17:44:57 +01:00
|
|
|
expect(caughtMessage).toEqual({});
|
2021-12-16 13:36:21 +01:00
|
|
|
});
|
2020-12-11 17:44:57 +01:00
|
|
|
it("only writes debug messages in dev mode", () => {
|
|
|
|
logService = new ConsoleLogService(false);
|
2021-12-16 13:36:21 +01:00
|
|
|
|
2020-12-11 17:44:57 +01:00
|
|
|
logService.debug("debug message");
|
|
|
|
expect(caughtMessage.log).toBeUndefined();
|
2021-12-16 13:36:21 +01:00
|
|
|
});
|
|
|
|
|
2020-12-11 17:44:57 +01:00
|
|
|
it("writes debug/info messages to console.log", () => {
|
|
|
|
logService.debug("this is a debug message");
|
|
|
|
expect(caughtMessage).toEqual({
|
|
|
|
log: jasmine.arrayWithExactContents(["this is a debug message"]),
|
|
|
|
});
|
|
|
|
|
|
|
|
logService.info("this is an info message");
|
|
|
|
expect(caughtMessage).toEqual({
|
|
|
|
log: jasmine.arrayWithExactContents(["this is an info message"]),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
it("writes warning messages to console.warn", () => {
|
|
|
|
logService.warning("this is a warning message");
|
|
|
|
expect(caughtMessage).toEqual({
|
|
|
|
warn: jasmine.arrayWithExactContents(["this is a warning message"]),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
it("writes error messages to console.error", () => {
|
|
|
|
logService.error("this is an error message");
|
|
|
|
expect(caughtMessage).toEqual({
|
|
|
|
error: jasmine.arrayWithExactContents(["this is an error message"]),
|
|
|
|
});
|
2021-12-16 13:36:21 +01:00
|
|
|
});
|
|
|
|
|
2020-12-11 17:44:57 +01:00
|
|
|
it("times with output to info", async () => {
|
|
|
|
logService.time();
|
|
|
|
await new Promise((r) => setTimeout(r, 250));
|
|
|
|
const duration = logService.timeEnd();
|
|
|
|
expect(duration[0]).toBe(0);
|
|
|
|
expect(duration[1]).toBeGreaterThan(0);
|
|
|
|
expect(duration[1]).toBeLessThan(500 * 10e6);
|
2021-12-16 13:36:21 +01:00
|
|
|
|
2020-12-11 17:44:57 +01:00
|
|
|
expect(caughtMessage).toEqual(jasmine.arrayContaining([]));
|
|
|
|
expect(caughtMessage.log.length).toBe(1);
|
|
|
|
expect(caughtMessage.log[0]).toEqual(jasmine.stringMatching(/^default: \d+\.?\d*ms$/));
|
2021-12-16 13:36:21 +01:00
|
|
|
});
|
|
|
|
|
2020-12-11 17:44:57 +01:00
|
|
|
it("filters time output", async () => {
|
2022-02-22 15:39:11 +01:00
|
|
|
logService = new ConsoleLogService(true, () => true);
|
2020-12-11 17:44:57 +01:00
|
|
|
logService.time();
|
|
|
|
logService.timeEnd();
|
2021-12-16 13:36:21 +01:00
|
|
|
|
2020-12-11 17:44:57 +01:00
|
|
|
expect(caughtMessage).toEqual({});
|
2021-12-16 13:36:21 +01:00
|
|
|
});
|
2020-12-11 17:44:57 +01:00
|
|
|
});
|