39 lines
1001 B
TypeScript
39 lines
1001 B
TypeScript
import os from "os";
|
|
|
|
import {
|
|
archMap,
|
|
CliInstaller,
|
|
cliUrlBuilder,
|
|
type SupportedPlatform,
|
|
} from "./cli-installer";
|
|
import { WindowsInstaller } from "./windows";
|
|
|
|
afterEach(() => {
|
|
jest.restoreAllMocks();
|
|
});
|
|
|
|
describe("WindowsInstaller", () => {
|
|
const version = "1.2.3";
|
|
const arch: NodeJS.Architecture = "x64";
|
|
|
|
it("should construct with given version and architecture", () => {
|
|
jest.spyOn(os, "arch").mockReturnValue(arch);
|
|
const installer = new WindowsInstaller(version);
|
|
expect(installer.version).toEqual(version);
|
|
expect(installer.arch).toEqual(archMap[arch]);
|
|
});
|
|
|
|
it("should call install with correct URL", async () => {
|
|
const installer = new WindowsInstaller(version);
|
|
const installMock = jest
|
|
.spyOn(CliInstaller.prototype, "install")
|
|
.mockResolvedValue();
|
|
|
|
await installer.installCli();
|
|
|
|
const builder = cliUrlBuilder["win32" as SupportedPlatform];
|
|
const url = builder(version, installer.arch);
|
|
expect(installMock).toHaveBeenCalledWith(url);
|
|
});
|
|
});
|