aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/turbo-codemod/__tests__/transform.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/turbo-codemod/__tests__/transform.test.ts')
-rw-r--r--packages/turbo-codemod/__tests__/transform.test.ts172
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);
+ });
+});