mirror of
https://github.com/Kir-Antipov/mc-publish.git
synced 2024-11-27 02:41:07 -05:00
130 lines
4.5 KiB
TypeScript
130 lines
4.5 KiB
TypeScript
|
import { ProcessLogger } from "@/utils/logging/process-logger";
|
||
|
|
||
|
interface MockProcess {
|
||
|
stdout: {
|
||
|
write: jest.Mock;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function createMockProcess(): MockProcess {
|
||
|
return {
|
||
|
stdout: {
|
||
|
write: jest.fn(),
|
||
|
},
|
||
|
};
|
||
|
}
|
||
|
|
||
|
describe("ProcessLogger", () => {
|
||
|
describe("constructor", () => {
|
||
|
test("constructs a new instance with the provided process", () => {
|
||
|
const process = createMockProcess();
|
||
|
const logger = new ProcessLogger(process, "\n");
|
||
|
|
||
|
logger.info("Info");
|
||
|
|
||
|
expect(process.stdout.write).toHaveBeenCalledTimes(1);
|
||
|
expect(process.stdout.write).toHaveBeenCalledWith("Info\n");
|
||
|
});
|
||
|
|
||
|
test("constructor uses provided newline sequence", () => {
|
||
|
const process = createMockProcess();
|
||
|
const logger = new ProcessLogger(process, "\n\n");
|
||
|
|
||
|
logger.info("Info");
|
||
|
|
||
|
expect(process.stdout.write).toHaveBeenCalledTimes(1);
|
||
|
expect(process.stdout.write).toHaveBeenCalledWith("Info\n\n");
|
||
|
});
|
||
|
|
||
|
test("constructor uses provided log consumer", () => {
|
||
|
const logConsumer = jest.fn();
|
||
|
const logger = new ProcessLogger(logConsumer, "\n");
|
||
|
|
||
|
logger.info("Info");
|
||
|
|
||
|
expect(logConsumer).toHaveBeenCalledTimes(1);
|
||
|
expect(logConsumer).toHaveBeenCalledWith("Info\n");
|
||
|
});
|
||
|
|
||
|
test("constructor uses provided log consumer and newline sequence", () => {
|
||
|
const logConsumer = jest.fn();
|
||
|
const logger = new ProcessLogger(logConsumer, "\n\n");
|
||
|
|
||
|
logger.info("Info");
|
||
|
|
||
|
expect(logConsumer).toHaveBeenCalledTimes(1);
|
||
|
expect(logConsumer).toHaveBeenCalledWith("Info\n\n");
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("fatal", () => {
|
||
|
test("redirects the call to process.stdout.write", () => {
|
||
|
const process = createMockProcess();
|
||
|
const logger = new ProcessLogger(process, "\n");
|
||
|
|
||
|
logger.fatal("Fatal Error");
|
||
|
logger.fatal(new Error("Fatal Error"));
|
||
|
|
||
|
expect(process.stdout.write).toHaveBeenCalledTimes(2);
|
||
|
expect(process.stdout.write).toHaveBeenNthCalledWith(1, "::error::Fatal Error\n");
|
||
|
expect(process.stdout.write).toHaveBeenNthCalledWith(2, "::error::Error: Fatal Error\n");
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("error", () => {
|
||
|
test("redirects the call to process.stdout.write", () => {
|
||
|
const process = createMockProcess();
|
||
|
const logger = new ProcessLogger(process, "\n");
|
||
|
|
||
|
logger.error("Error");
|
||
|
logger.error(new Error("Error"));
|
||
|
|
||
|
expect(process.stdout.write).toHaveBeenCalledTimes(2);
|
||
|
expect(process.stdout.write).toHaveBeenNthCalledWith(1, "::error::Error\n");
|
||
|
expect(process.stdout.write).toHaveBeenNthCalledWith(2, "::error::Error: Error\n");
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("warn", () => {
|
||
|
test("redirects the call to process.stdout.write", () => {
|
||
|
const process = createMockProcess();
|
||
|
const logger = new ProcessLogger(process, "\n");
|
||
|
|
||
|
logger.warn("Warning");
|
||
|
logger.warn(new Error("Warning"));
|
||
|
|
||
|
expect(process.stdout.write).toHaveBeenCalledTimes(2);
|
||
|
expect(process.stdout.write).toHaveBeenNthCalledWith(1, "::warning::Warning\n");
|
||
|
expect(process.stdout.write).toHaveBeenNthCalledWith(2, "::warning::Error: Warning\n");
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("info", () => {
|
||
|
test("redirects the call to process.stdout.write", () => {
|
||
|
const process = createMockProcess();
|
||
|
const logger = new ProcessLogger(process, "\n");
|
||
|
|
||
|
logger.info("Info");
|
||
|
logger.info(new Error("Info"));
|
||
|
|
||
|
expect(process.stdout.write).toHaveBeenCalledTimes(2);
|
||
|
expect(process.stdout.write).toHaveBeenNthCalledWith(1, "Info\n");
|
||
|
expect(process.stdout.write).toHaveBeenNthCalledWith(2, "Error: Info\n");
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("debug", () => {
|
||
|
test("redirects the call to process.stdout.write", () => {
|
||
|
const process = createMockProcess();
|
||
|
const logger = new ProcessLogger(process, "\n");
|
||
|
|
||
|
logger.debug("Debug Info");
|
||
|
logger.debug(new Error("Debug Info"));
|
||
|
|
||
|
expect(process.stdout.write).toHaveBeenCalledTimes(2);
|
||
|
expect(process.stdout.write).toHaveBeenNthCalledWith(1, "::debug::Debug Info\n");
|
||
|
expect(process.stdout.write).toHaveBeenNthCalledWith(2, "::debug::Error: Debug Info\n");
|
||
|
});
|
||
|
});
|
||
|
});
|