@applicaster/zapplicaster-cli
Version:
CLI Tool for the zapp app and Quick Brick project
95 lines (79 loc) • 2.69 kB
JavaScript
const logger = require("../index");
const chalk = require("chalk");
const { inspect } = require("util");
const logSpy = jest.spyOn(console, "log");
const errorSpy = jest.spyOn(console, "error");
const warnSpy = jest.spyOn(console, "warn");
describe("logger modules", () => {
afterEach(() => {
[logSpy, errorSpy, warnSpy].map((spy) => spy.mockReset());
});
it("has the appropriate methods", () => {
const methods = [
"welcome",
"log",
"error",
"warn",
"startStep",
"endStep",
"success",
];
methods.forEach((method) => {
expect(logger).toHaveProperty(method);
expect(typeof logger[method] === "function").toBe(true);
});
});
it("displays a welcome message", () => {
logger.welcome("name");
expect(logSpy).toHaveBeenCalledTimes(3);
});
it("displays a welcome message with an optional additional message", () => {
logger.welcome("name", "message");
expect(logSpy).toHaveBeenCalledTimes(4);
});
it("displays a log message", () => {
const message = "a log message";
logger.log(message);
expect(logSpy).toHaveBeenCalledWith(message);
});
it("inspects the object passed to the log", () => {
const obj = { foo: "bar" };
logger.log(obj);
expect(logSpy).toHaveBeenCalledWith(inspect(obj));
});
it("displays a warn message", () => {
const message = "a warn message";
logger.warn(message);
expect(warnSpy).toHaveBeenCalledWith("\u26A0 ", chalk.yellow(message));
});
describe("error function", () => {
it("returns a function if only a message is passed", () => {
const errorLogger = logger.error("message");
expect(typeof errorLogger === "function").toBe(true);
});
it("displays an error message", () => {
const message = "an error message";
logger.error(message, new Error(message));
expect(errorSpy).toHaveBeenCalledTimes(2);
});
});
it("displays a start step message", () => {
logger.startStep("message");
expect(logSpy).toHaveBeenCalledWith("\n\u{1F680} ", chalk.cyan("message"));
});
describe("endStep function", () => {
it("displays a end step message", () => {
logger.endStep("message");
expect(logSpy).toHaveBeenCalledWith("\u2714 ", chalk.green("message"));
});
it("inspects the object passed to the function", () => {
const obj = { foo: "bar" };
logger.endStep(obj);
expect(logSpy).toHaveBeenCalledWith("\u2714 ", chalk.green(inspect(obj)));
});
});
it("displays a success message", () => {
logger.success("message");
expect(logSpy).toHaveBeenCalledWith("\n\u{1F389} ", chalk.green("message"));
});
});