amos-ionic-logging
Version:
Components for Ionic logging
93 lines (57 loc) • 2.32 kB
text/typescript
/* eslint-disable no-magic-numbers */
import * as log4javascript from "log4javascript";
import { JsonLayout } from "./json-layout.model";
describe("JsonLayout", () => {
let layout: JsonLayout;
beforeEach(() => {
layout = new JsonLayout();
});
describe("ctor", () => {
it("combineMessage false", () => {
layout = new JsonLayout(false, false);
expect(layout.isCombinedMessages()).toBeFalse();
});
it("combineMessage true", () => {
layout = new JsonLayout(false, true);
expect(layout.isCombinedMessages()).toBeTrue();
});
it("combineMessage not specified", () => {
layout = new JsonLayout();
expect(layout.isCombinedMessages()).toBeTrue();
});
});
describe("format", () => {
it("format standard message", () => {
log4javascript.logLog.setQuietMode(true);
const logger = log4javascript.getLogger("test");
const event = new log4javascript.LoggingEvent(logger, new Date(), log4javascript.Level.INFO, ["1"]);
const formattedMessage = layout.format(event);
const originalLayout = new log4javascript.JsonLayout();
const originalFormattedMessage = originalLayout.format(event);
expect(formattedMessage).toBe(originalFormattedMessage);
});
it("format message with escaped quote", () => {
log4javascript.logLog.setQuietMode(true);
const logger = log4javascript.getLogger("test");
const event = new log4javascript.LoggingEvent(logger, new Date(), log4javascript.Level.INFO, ["1\\\"2"]);
const formattedMessage = layout.format(event);
const transformedEvent = JSON.parse(formattedMessage);
expect(transformedEvent.message).toBe(event.messages[0]);
});
it("format message without combine message", () => {
log4javascript.logLog.setQuietMode(true);
const logger = log4javascript.getLogger("test");
const event = new log4javascript.LoggingEvent(logger, new Date(), log4javascript.Level.INFO, ["12"]);
layout = new JsonLayout(false, false);
const formattedMessage = layout.format(event);
const transformedEvent = JSON.parse(formattedMessage);
expect(transformedEvent.message[0]).toBe(event.messages[0]);
});
});
describe("toString(): string", () => {
it("returns logical type name", () => {
const text = layout.toString();
expect(text).toBe("Ionic.Logging.JsonLayout");
});
});
});