diff options
| author | 2023-04-28 01:36:44 +0800 | |
|---|---|---|
| committer | 2023-04-28 01:36:44 +0800 | |
| commit | dd84b9d64fb98746a230cd24233ff50a562c39c9 (patch) | |
| tree | b583261ef00b3afe72ec4d6dacb31e57779a6faf /packages/turbo-workspaces/__tests__/index.test.ts | |
| parent | 0b46fcd72ac34382387b2bcf9095233efbcc52f4 (diff) | |
| download | HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.tar.gz HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.zip | |
Diffstat (limited to 'packages/turbo-workspaces/__tests__/index.test.ts')
| -rw-r--r-- | packages/turbo-workspaces/__tests__/index.test.ts | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/packages/turbo-workspaces/__tests__/index.test.ts b/packages/turbo-workspaces/__tests__/index.test.ts new file mode 100644 index 0000000..21753be --- /dev/null +++ b/packages/turbo-workspaces/__tests__/index.test.ts @@ -0,0 +1,85 @@ +import path from "path"; +import * as turboUtils from "@turbo/utils"; +import { setupTestFixtures } from "@turbo/test-utils"; +import { getWorkspaceDetails, convert } from "../src"; +import { generateConvertMatrix } from "./test-utils"; +import execa from "execa"; + +jest.mock("execa", () => jest.fn()); + +describe("Node entrypoint", () => { + const { useFixture } = setupTestFixtures({ + directory: path.join(__dirname, "../"), + }); + + describe("convert", () => { + test.each(generateConvertMatrix())( + "detects $fixtureType project using $fixtureManager and converts to $toManager (interactive=$interactive dry=$dry install=$install)", + async ({ + fixtureManager, + fixtureType, + toManager, + interactive, + dry, + install, + }) => { + const mockedGetAvailablePackageManagers = jest + .spyOn(turboUtils, "getAvailablePackageManagers") + .mockResolvedValue({ + npm: { + available: true, + version: "8.19.2", + }, + yarn: { + available: true, + version: "1.22.19", + }, + pnpm: { + available: true, + version: "7.29.1", + }, + }); + + const { root } = useFixture({ + fixture: `./${fixtureManager}/${fixtureType}`, + }); + + // read + const details = await getWorkspaceDetails({ root }); + expect(details.packageManager).toBe(fixtureManager); + + // convert + const convertWrapper = () => + convert({ + root, + to: toManager, + options: { interactive, dry, skipInstall: !install }, + }); + + if (fixtureManager === toManager) { + await expect(convertWrapper()).rejects.toThrowError( + "You are already using this package manager" + ); + } else { + await expect(convertWrapper()).resolves.toBeUndefined(); + // read again + const convertedDetails = await getWorkspaceDetails({ + root, + }); + expect(mockedGetAvailablePackageManagers).toHaveBeenCalled(); + + if (dry) { + expect(convertedDetails.packageManager).toBe(fixtureManager); + } else { + if (install) { + expect(execa).toHaveBeenCalled(); + } + expect(convertedDetails.packageManager).toBe(toManager); + } + } + + mockedGetAvailablePackageManagers.mockRestore(); + } + ); + }); +}); |
