// main.test.js const core = require("@actions/core"); const fs = require("fs"); const main = require("../src/main"); // Mocking fs.promises for the test jest.mock("fs", () => { const originalFs = jest.requireActual("fs"); return { ...originalFs, promises: { access: jest.fn(), }, }; }); const child_process = require("child_process"); jest.mock("@actions/core"); jest.mock("child_process"); describe("Inno Setup Action", () => { beforeEach(() => { jest.resetAllMocks(); }); it("should execute Inno Setup command on Windows with existing workspace", () => { process.platform = "win32"; main(); expect(core.getInput).toHaveBeenCalledTimes(2); expect(fs.existsSync).toHaveBeenCalled(); expect(fs.promises.access).toHaveBeenCalled(); // Testing promises property expect(child_process.exec).toHaveBeenCalled(); }); // Add more test cases as needed... // Add other test cases for different scenarios... });