@coveo/semantic-monorepo-tools
Version:
A library of helper functions to do SemVer2 compliant releases from Conventional Commits in monorepos
58 lines (57 loc) • 2.64 kB
JavaScript
import { spawn } from "node:child_process";
import { EventEmitter } from "node:events";
import npmBump from "../doNpmBumpVersion.js";
import appendCmdIfWindows from "../utils/appendCmdIfWindows.js";
jest.mock("node:child_process");
const mockedSpawn = jest.mocked(spawn);
jest.mock("../utils/appendCmdIfWindows.js");
jest.mocked(appendCmdIfWindows).mockImplementation((string) => string);
const doMockDummySpawn = () => {
mockedSpawn.mockImplementation(() => {
const cpEventEmitter = new EventEmitter();
const stdoutEventEmitter = new EventEmitter();
const stderrEventEmitter = new EventEmitter();
cpEventEmitter.stdout = stdoutEventEmitter;
cpEventEmitter.stderr = stderrEventEmitter;
setTimeout(() => {
cpEventEmitter.emit("close", 0);
}, 0);
return cpEventEmitter;
});
};
describe("npmPublish()", () => {
beforeEach(() => {
jest.resetAllMocks();
doMockDummySpawn();
});
describe("when no options is given", () => {
it("calls `npm version` with only --git-tag-version=false flag", async () => {
await npmBump("0.1.2", "somepath");
expect(mockedSpawn).toHaveBeenCalledWith(appendCmdIfWindows `npm`, ["version", "0.1.2", "--git-tag-version=false"], { cwd: "somepath" });
});
});
describe("when options.NoUpdate is given", () => {
it("calls `npm version` with only --git-tag-version=false flag", async () => {
await npmBump("0.1.2", "somepath", {
workspaceUpdateStrategy: "NoUpdate",
});
expect(mockedSpawn).toHaveBeenCalledWith(appendCmdIfWindows `npm`, ["version", "0.1.2", "--git-tag-version=false"], { cwd: "somepath" });
});
});
describe("when options.UpdateWithCarret is given", () => {
it("calls `npm version` with --save flag", async () => {
await npmBump("0.1.2", "somepath", {
workspaceUpdateStrategy: "UpdateWithCarret",
});
expect(mockedSpawn).toHaveBeenCalledWith(appendCmdIfWindows `npm`, ["version", "0.1.2", "--git-tag-version=false", "--save"], { cwd: "somepath" });
});
});
describe("when options.UpdateExact is given", () => {
it("calls `npm version` with --save and -E flag", async () => {
await npmBump("0.1.2", "somepath", {
workspaceUpdateStrategy: "UpdateExact",
});
expect(mockedSpawn).toHaveBeenCalledWith(appendCmdIfWindows `npm`, ["version", "0.1.2", "--git-tag-version=false", "--save", "-E"], { cwd: "somepath" });
});
});
});