diff --git a/__tests__/config.test.ts b/__tests__/config.test.ts index 9ea14fa..69590ca 100644 --- a/__tests__/config.test.ts +++ b/__tests__/config.test.ts @@ -78,6 +78,7 @@ afterEach(() => { delete process.env["INPUT_IGNORE_EMPTY"] delete process.env["INPUT_SKIP_UNCHANGED"] delete process.env["INPUT_FOLLOW_SYMBOLIC_LINKS"] + delete process.env["INPUT_NUMBER_FORCE"] }) test("repo", async () => { @@ -428,3 +429,26 @@ test("skip_unchanged", async () => { }) expect(await config.getBody()).toEqual("") }) + +test("number_force", async () => { + process.env["INPUT_NUMBER_FORCE"] = "456" + mockConfig.pullRequestNumber = 456 + + const config = await import('../src/config') + expect(config).toMatchObject({ + pullRequestNumber: 456, + repo: {owner: "marocchino", repo: "stick-pull-request-comment"}, + header: "", + append: false, + recreate: false, + deleteOldComment: false, + hideOldComment: false, + hideAndRecreate: false, + hideClassify: "OUTDATED", + hideDetails: false, + githubToken: "some-token", + ignoreEmpty: false, + skipUnchanged: false + }) + expect(await config.getBody()).toEqual("") +}) diff --git a/__tests__/pullRequestNumber.test.ts b/__tests__/pullRequestNumber.test.ts new file mode 100644 index 0000000..5a15383 --- /dev/null +++ b/__tests__/pullRequestNumber.test.ts @@ -0,0 +1,86 @@ +import {afterEach, describe, expect, test, vi} from "vitest" + +const mockGetInput = vi.fn().mockReturnValue("") + +vi.mock("@actions/core", () => ({ + getInput: mockGetInput, + getBooleanInput: vi.fn().mockReturnValue(false), + getMultilineInput: vi.fn().mockReturnValue([]), + setFailed: vi.fn(), + info: vi.fn(), +})) + +const mockContext: {payload: Record; repo: {owner: string; repo: string}} = { + payload: {}, + repo: {owner: "marocchino", repo: "sticky-pull-request-comment"}, +} + +vi.mock("@actions/github", () => ({ + context: mockContext, +})) + +vi.mock("@actions/glob", () => ({ + create: vi.fn(), +})) + +afterEach(() => { + vi.resetModules() + mockContext.payload = {} + mockGetInput.mockReturnValue("") +}) + +describe("pullRequestNumber priority", () => { + test("uses number_force when set, overriding pull_request event number", async () => { + mockContext.payload = {pull_request: {number: 100}} + mockGetInput.mockImplementation((name: string) => { + if (name === "number_force") return "999" + if (name === "number") return "200" + return "" + }) + + const {pullRequestNumber} = await import("../src/config") + expect(pullRequestNumber).toBe(999) + }) + + test("uses number_force when set, overriding number input", async () => { + mockContext.payload = {} + mockGetInput.mockImplementation((name: string) => { + if (name === "number_force") return "999" + if (name === "number") return "200" + return "" + }) + + const {pullRequestNumber} = await import("../src/config") + expect(pullRequestNumber).toBe(999) + }) + + test("uses pull_request event number when number_force is not set", async () => { + mockContext.payload = {pull_request: {number: 100}} + mockGetInput.mockImplementation((name: string) => { + if (name === "number") return "200" + return "" + }) + + const {pullRequestNumber} = await import("../src/config") + expect(pullRequestNumber).toBe(100) + }) + + test("uses number input when number_force and pull_request event number are not set", async () => { + mockContext.payload = {} + mockGetInput.mockImplementation((name: string) => { + if (name === "number") return "200" + return "" + }) + + const {pullRequestNumber} = await import("../src/config") + expect(pullRequestNumber).toBe(200) + }) + + test("returns 0 when none of number_force, pull_request number, or number are set", async () => { + mockContext.payload = {} + mockGetInput.mockReturnValue("") + + const {pullRequestNumber} = await import("../src/config") + expect(pullRequestNumber).toBe(0) + }) +})