import * as path from "path";
import * as os from "os";
import * as pathUtils from "../src/utils/pathUtils";

jest.mock("@actions/core");
jest.mock("os");

test("expandPaths with no ~ in path", () => {
    const filePath = ".cache/yarn";

    const resolvedPath = pathUtils.expandPaths([filePath]);

    const expectedPath = [path.resolve(filePath)];
    expect(resolvedPath).toStrictEqual(expectedPath);
});

test("expandPaths with ~ in path", () => {
    const filePath = "~/.cache/yarn";

    const homedir = jest.requireActual("os").homedir();
    const homedirMock = jest.spyOn(os, "homedir");
    homedirMock.mockImplementation(() => {
        return homedir;
    });

    const resolvedPath = pathUtils.expandPaths([filePath]);

    const expectedPath = [path.join(homedir, ".cache/yarn")];
    expect(resolvedPath).toStrictEqual(expectedPath);
});

test("expandPaths with home not found", () => {
    const filePath = "~/.cache/yarn";
    const homedirMock = jest.spyOn(os, "homedir");
    homedirMock.mockImplementation(() => {
        return "";
    });

    expect(() => pathUtils.expandPaths([filePath])).toThrow(
        "Unable to resolve `~` to HOME"
    );
});