const directoryMock = jest.fn() const warnMock = jest.fn() import { ArtifactPathValidator } from "../src/ArtifactPathValidator" const pattern = "pattern" jest.mock("@actions/core", () => { return { warning: warnMock } }) jest.mock("fs", () => { return { statSync: () => { return { isDirectory: directoryMock } }, } }) describe("ArtifactPathValidator", () => { beforeEach(() => { warnMock.mockClear() directoryMock.mockClear() }) it("warns and filters out path which points to a directory", () => { const paths = ["path1", "path2"] directoryMock.mockReturnValueOnce(true).mockReturnValueOnce(false) const validator = new ArtifactPathValidator(false, paths, pattern) const result = validator.validate() expect(warnMock).toBeCalled() expect(result).toEqual(["path2"]) }) it("warns when no glob results are produced and empty results shouldn't throw", () => { const validator = new ArtifactPathValidator(false, [], pattern) const result = validator.validate() expect(warnMock).toBeCalled() }) it("throws when no glob results are produced and empty results shouild throw", () => { const validator = new ArtifactPathValidator(true, [], pattern) expect(() => { validator.validate() }).toThrow() }) it("throws when path points to directory", () => { const paths = ["path1", "path2"] directoryMock.mockReturnValueOnce(true).mockReturnValueOnce(false) const validator = new ArtifactPathValidator(true, paths, pattern) expect(() => { validator.validate() }).toThrow() }) })