@jungvonmatt/sb-migrate
Version:
CLI tool for managing Storyblok schema and content migrations
130 lines • 5.63 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const transformEntries_1 = require("../../handlers/transformEntries");
const migration_1 = require("../../utils/migration");
// Mock the helper and component methods
vitest_1.vi.mock("../../utils/migration", () => ({
helper: {
updateComponent: vitest_1.vi.fn(),
},
}));
(0, vitest_1.describe)("handleTransformEntries", () => {
const mockTransform = vitest_1.vi.fn();
const mockTransformEntries = vitest_1.vi.fn();
const mockComponent = {
transformEntries: mockTransformEntries,
};
const mockMigration = {
component: "test-component",
transform: mockTransform,
type: "transform-entries",
};
const mockOptions = {
isDryrun: false,
publish: false,
publishLanguages: ["en"],
};
(0, vitest_1.beforeEach)(() => {
vitest_1.vi.clearAllMocks();
migration_1.helper.updateComponent.mockResolvedValue(mockComponent);
});
(0, vitest_1.it)("should transform entries successfully", async () => {
// Arrange
mockTransformEntries.mockResolvedValue(undefined);
// Act
await (0, transformEntries_1.handleTransformEntries)(mockMigration, mockOptions);
// Assert
(0, vitest_1.expect)(migration_1.helper.updateComponent).toHaveBeenCalledWith("test-component");
(0, vitest_1.expect)(mockTransformEntries).toHaveBeenCalledWith(mockTransform, {
isDryrun: false,
publish: false,
publishLanguages: ["en"],
});
});
(0, vitest_1.it)("should handle publish option from migration", async () => {
// Arrange
const migrationWithPublish = {
...mockMigration,
publish: true,
};
mockTransformEntries.mockResolvedValue(undefined);
// Act
await (0, transformEntries_1.handleTransformEntries)(migrationWithPublish, mockOptions);
// Assert
(0, vitest_1.expect)(mockTransformEntries).toHaveBeenCalledWith(mockTransform, {
isDryrun: false,
publish: true,
publishLanguages: ["en"],
});
});
(0, vitest_1.it)("should handle languages option from migration", async () => {
// Arrange
const migrationWithLanguages = {
...mockMigration,
languages: ["de", "fr"],
};
mockTransformEntries.mockResolvedValue(undefined);
// Act
await (0, transformEntries_1.handleTransformEntries)(migrationWithLanguages, mockOptions);
// Assert
(0, vitest_1.expect)(mockTransformEntries).toHaveBeenCalledWith(mockTransform, {
isDryrun: false,
publish: false,
publishLanguages: ["de", "fr"],
});
});
(0, vitest_1.it)("should handle dry run correctly", async () => {
// Arrange
const dryRunOptions = {
isDryrun: true,
publish: false,
publishLanguages: ["en"],
};
mockTransformEntries.mockResolvedValue(undefined);
// Act
await (0, transformEntries_1.handleTransformEntries)(mockMigration, dryRunOptions);
// Assert
(0, vitest_1.expect)(mockTransformEntries).toHaveBeenCalledWith(mockTransform, {
isDryrun: true,
publish: false,
publishLanguages: ["en"],
});
});
(0, vitest_1.it)("should throw error if component is missing", async () => {
// Arrange
const migrationWithoutComponent = {
transform: mockTransform,
};
// Act & Assert
await (0, vitest_1.expect)((0, transformEntries_1.handleTransformEntries)(migrationWithoutComponent, mockOptions)).rejects.toThrow("Transform migration requires a component name and transform function");
(0, vitest_1.expect)(migration_1.helper.updateComponent).not.toHaveBeenCalled();
(0, vitest_1.expect)(mockTransformEntries).not.toHaveBeenCalled();
});
(0, vitest_1.it)("should throw error if transform function is missing", async () => {
// Arrange
const migrationWithoutTransform = {
component: "test-component",
};
// Act & Assert
await (0, vitest_1.expect)((0, transformEntries_1.handleTransformEntries)(migrationWithoutTransform, mockOptions)).rejects.toThrow("Transform migration requires a component name and transform function");
(0, vitest_1.expect)(migration_1.helper.updateComponent).not.toHaveBeenCalled();
(0, vitest_1.expect)(mockTransformEntries).not.toHaveBeenCalled();
});
(0, vitest_1.it)("should handle component update errors gracefully", async () => {
// Arrange
const error = new Error("Component Update Error");
migration_1.helper.updateComponent.mockRejectedValue(error);
// Act & Assert
await (0, vitest_1.expect)((0, transformEntries_1.handleTransformEntries)(mockMigration, mockOptions)).rejects.toThrow("Component Update Error");
(0, vitest_1.expect)(mockTransformEntries).not.toHaveBeenCalled();
});
(0, vitest_1.it)("should handle transform entries errors gracefully", async () => {
// Arrange
const error = new Error("Transform Error");
mockTransformEntries.mockRejectedValue(error);
// Act & Assert
await (0, vitest_1.expect)((0, transformEntries_1.handleTransformEntries)(mockMigration, mockOptions)).rejects.toThrow("Transform Error");
});
});
//# sourceMappingURL=transformEntries.test.js.map