@hyper-fetch/core
Version:
Cache, Queue and Persist your requests no matter if you are online or offline!
110 lines (81 loc) • 3.78 kB
text/typescript
import type { Mock } from "vitest";
import { Client } from "client";
import { LoggerManager } from "managers";
describe("Logger [ Base ]", () => {
let client = new Client({ url: "shared-base-url" }).setDebug(true);
let loggerManager = new LoggerManager();
let mockLogger: Mock;
beforeEach(() => {
client = new Client({ url: "shared-base-url" }).setDebug(true);
loggerManager = new LoggerManager();
mockLogger = vi.fn();
loggerManager.logger = mockLogger;
});
describe("When using config methods", () => {
it("should allow to initialize logger with module name", async () => {
const logger = loggerManager.initialize(client, "Test Module");
expect(logger).toBeDefined();
});
it("should allow to set severity level", () => {
loggerManager.setSeverity("error");
expect(loggerManager.level).toBe("error");
});
it("should allow to set modules", () => {
const modules = ["Module1", "Module2"];
loggerManager.setModules(modules);
expect(loggerManager.modules).toEqual(modules);
});
it("should allow to clear modules by passing undefined", () => {
const modules = ["Module1", "Module2"];
loggerManager.setModules(modules);
loggerManager.setModules(undefined);
expect(loggerManager.modules).toBeUndefined();
});
});
describe("When filtering logs", () => {
it("should log if message level is higher than manager level", () => {
loggerManager.setSeverity("info");
const logData = { level: "error", type: "system", module: "Test", title: "Test", extra: {} } as const;
loggerManager.logger(logData);
expect(mockLogger).toHaveBeenCalledWith(logData);
});
it("should log if message level equals manager level", () => {
loggerManager.setSeverity("error");
const logData = { level: "error", type: "system", module: "Test", title: "Test", extra: {} } as const;
loggerManager.logger(logData);
expect(mockLogger).toHaveBeenCalledWith(logData);
});
it("should not log if message level is lower than manager level", () => {
loggerManager.setSeverity("error");
const logger = loggerManager.initialize(client, "Test Module");
logger.info({ type: "system", title: "Test", extra: {} });
expect(mockLogger).not.toHaveBeenCalled();
});
it("should not log if module is not in allowed modules", () => {
loggerManager.setModules(["Module1"]);
const logger = loggerManager.initialize(client, "Test Module");
logger.info({ type: "system", title: "Test", extra: {} });
expect(mockLogger).not.toHaveBeenCalled();
});
it("should log if module is in allowed modules", () => {
loggerManager.setModules(["Module1"]);
const logger = loggerManager.initialize(client, "Module1");
const logData = { level: "error", type: "system", module: "Module1", title: "Test", extra: {} } as const;
logger.error(logData);
expect(mockLogger).toHaveBeenCalledWith(logData);
});
it("should not log if module is in allowed modules", () => {
loggerManager.setModules(["Module1"]);
const logger = loggerManager.initialize(client, "Module2");
const logData = { level: "error", type: "system", module: "Module2", title: "Test", extra: {} } as const;
logger.error(logData);
expect(mockLogger).not.toHaveBeenCalled();
});
it("should log all modules if no modules filter is set", () => {
const logger = loggerManager.initialize(client, "Test Module");
const logData = { level: "error", type: "system", module: "Test Module", title: "Test", extra: {} } as const;
logger.error(logData);
expect(mockLogger).toHaveBeenCalledWith(logData);
});
});
});