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-codemod/__tests__/transform.test.ts | |
| parent | 0b46fcd72ac34382387b2bcf9095233efbcc52f4 (diff) | |
| download | HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.tar.gz HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.zip | |
Diffstat (limited to 'packages/turbo-codemod/__tests__/transform.test.ts')
| -rw-r--r-- | packages/turbo-codemod/__tests__/transform.test.ts | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/packages/turbo-codemod/__tests__/transform.test.ts b/packages/turbo-codemod/__tests__/transform.test.ts new file mode 100644 index 0000000..abd015d --- /dev/null +++ b/packages/turbo-codemod/__tests__/transform.test.ts @@ -0,0 +1,172 @@ +import transform from "../src/commands/transform"; +import { MigrateCommandArgument } from "../src/commands"; +import { setupTestFixtures, spyExit } from "@turbo/test-utils"; +import * as checkGitStatus from "../src/utils/checkGitStatus"; +import * as getPackageManager from "../src/utils/getPackageManager"; +import * as getPackageManagerVersion from "../src/utils/getPackageManagerVersion"; + +describe("transform", () => { + const mockExit = spyExit(); + const { useFixture } = setupTestFixtures({ + directory: __dirname, + test: "transform", + }); + + it("runs the selected transform", async () => { + const { root, readJson } = useFixture({ + fixture: "basic", + }); + + const packageManager = "pnpm"; + const packageManagerVersion = "1.2.3"; + + // setup mocks + const mockedCheckGitStatus = jest + .spyOn(checkGitStatus, "default") + .mockReturnValue(undefined); + const mockedGetPackageManagerVersion = jest + .spyOn(getPackageManagerVersion, "default") + .mockReturnValue(packageManagerVersion); + const mockedGetPackageManager = jest + .spyOn(getPackageManager, "default") + .mockReturnValue(packageManager); + + await transform( + "add-package-manager" as MigrateCommandArgument, + root as MigrateCommandArgument, + { + list: false, + force: false, + dry: false, + print: false, + } + ); + + expect(readJson("package.json")).toStrictEqual({ + dependencies: {}, + devDependencies: { + turbo: "1.0.0", + }, + name: "transform-basic", + packageManager: "pnpm@1.2.3", + version: "1.0.0", + }); + + // verify mocks were called + expect(mockedCheckGitStatus).toHaveBeenCalled(); + expect(mockedGetPackageManagerVersion).toHaveBeenCalled(); + expect(mockedGetPackageManager).toHaveBeenCalled(); + + // restore mocks + mockedCheckGitStatus.mockRestore(); + mockedGetPackageManagerVersion.mockRestore(); + mockedGetPackageManager.mockRestore(); + }); + + it("runs the selected transform - dry & print", async () => { + const { root, readJson } = useFixture({ + fixture: "basic", + }); + + const packageManager = "pnpm"; + const packageManagerVersion = "1.2.3"; + + // setup mocks + const mockedCheckGitStatus = jest + .spyOn(checkGitStatus, "default") + .mockReturnValue(undefined); + const mockedGetPackageManagerVersion = jest + .spyOn(getPackageManagerVersion, "default") + .mockReturnValue(packageManagerVersion); + const mockedGetPackageManager = jest + .spyOn(getPackageManager, "default") + .mockReturnValue(packageManager); + + await transform( + "add-package-manager" as MigrateCommandArgument, + root as MigrateCommandArgument, + { + list: false, + force: false, + dry: true, + print: true, + } + ); + + expect(readJson("package.json")).toStrictEqual({ + dependencies: {}, + devDependencies: { + turbo: "1.0.0", + }, + name: "transform-basic", + version: "1.0.0", + }); + + // verify mocks were called + expect(mockedCheckGitStatus).not.toHaveBeenCalled(); + expect(mockedGetPackageManagerVersion).toHaveBeenCalled(); + expect(mockedGetPackageManager).toHaveBeenCalled(); + + // restore mocks + mockedCheckGitStatus.mockRestore(); + mockedGetPackageManagerVersion.mockRestore(); + mockedGetPackageManager.mockRestore(); + }); + + it("lists transforms", async () => { + const { root } = useFixture({ + fixture: "basic", + }); + + await transform( + "add-package-manager" as MigrateCommandArgument, + root as MigrateCommandArgument, + { + list: true, + force: false, + dry: false, + print: false, + } + ); + + expect(mockExit.exit).toHaveBeenCalledWith(0); + }); + + it("exits on invalid transform", async () => { + const { root } = useFixture({ + fixture: "basic", + }); + + await transform( + "not-a-real-option" as MigrateCommandArgument, + root as MigrateCommandArgument, + { + list: false, + force: false, + dry: false, + print: false, + } + ); + + expect(mockExit.exit).toHaveBeenCalledWith(1); + }); + + it("exits on invalid directory", async () => { + const { root } = useFixture({ + fixture: "basic", + }); + + await transform( + "add-package-manager" as MigrateCommandArgument, + "~/path/that/does/not/exist" as MigrateCommandArgument, + { + list: false, + force: false, + dry: false, + print: false, + } + ); + + expect(mockExit.exit).toHaveBeenCalledWith(1); + }); +}); |
