multi-clasp2
Version:
Google Clasp wrapper to push changes to multiple Apps Script projects at once.
36 lines (35 loc) • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const multiClaspMocks_1 = require("./_mocks/multiClaspMocks");
const common_1 = require("../src/common");
describe.each(['open-script', 'open-web-app', 'open-container'])("multi-clasp %s -> execShellCommand", (openCommand) => {
const realArgv = process.argv.slice();
beforeEach(() => {
process.argv = ["node", "multi-clasp", openCommand];
multiClaspMocks_1.foreachMock.mockReset();
multiClaspMocks_1.execMock.mockReset();
multiClaspMocks_1.getOptionsMock.mockReset();
multiClaspMocks_1.execMock.mockResolvedValue({ error: null, stdout: "ok", stderr: "" });
});
afterEach(() => {
process.argv = realArgv;
});
it(`no options: executes npx clasp ${openCommand}`, async () => {
const tasks = (0, multiClaspMocks_1.mockForeach)(["AAA", "BBB"]);
multiClaspMocks_1.getOptionsMock.mockReturnValue("");
await (0, common_1.genericAction)();
await Promise.all(tasks);
expect(multiClaspMocks_1.execMock).toHaveBeenCalledTimes(2);
expect(multiClaspMocks_1.execMock.mock.calls[0][0]).toBe(`npx clasp ${openCommand} `);
expect(multiClaspMocks_1.execMock.mock.calls[1][0]).toBe(`npx clasp ${openCommand} `);
});
it("exits(1) if clasp fails", async () => {
const tasks = (0, multiClaspMocks_1.mockForeach)(["AAA"]);
const exitSpy = jest.spyOn(process, "exit").mockImplementation((() => undefined));
multiClaspMocks_1.execMock.mockResolvedValue({ error: new Error("boom"), stdout: "", stderr: "fail" });
await (0, common_1.genericAction)();
await Promise.all(tasks);
expect(exitSpy).toHaveBeenCalledWith(1);
exitSpy.mockRestore();
});
});