103 lines
3.3 KiB
JavaScript
103 lines
3.3 KiB
JavaScript
import bailoutMixin from "@/mixins/bailout-mixin";
|
|
import { storeActions } from "@/constants/store-actions.js";
|
|
import { navigationScenarios } from "@/router/constants/navigation-scenarios";
|
|
import { bailoutCodes } from "@/constants/bailout-codes.js";
|
|
|
|
describe("bailout-mixin.js", () => {
|
|
test("navigateToBailoutPage: dispatches SAVE_BAILOUT_CODE action with bailout code", async () => {
|
|
// Arrange
|
|
const mockVm = createMockVm();
|
|
const bailoutCode = bailoutCodes.PART_NOT_FOUND;
|
|
|
|
// Act
|
|
await bailoutMixin.methods.navigateToBailoutPage(mockVm, bailoutCode);
|
|
|
|
// Assert
|
|
expect(mockVm.dispatchStoreAction).toHaveBeenCalledWith(
|
|
storeActions.SAVE_BAILOUT_CODE,
|
|
bailoutCode
|
|
);
|
|
});
|
|
|
|
test("navigateToBailoutPage: navigates to bailout page after saving bailout code", async () => {
|
|
// Arrange
|
|
const mockVm = createMockVm();
|
|
const bailoutCode = bailoutCodes.PART_NOT_FOUND;
|
|
|
|
// Act
|
|
await bailoutMixin.methods.navigateToBailoutPage(mockVm, bailoutCode);
|
|
|
|
// Assert
|
|
expect(mockVm.$router.navigateWithoutSaving).toHaveBeenCalledWith(
|
|
navigationScenarios.BAILOUT,
|
|
mockVm.pageName
|
|
);
|
|
});
|
|
|
|
test("navigateToBailoutPage: uses current context (this) when vm is not provided", async () => {
|
|
// Arrange
|
|
const mockRouter = {
|
|
navigateWithoutSaving: jest.fn().mockResolvedValue(undefined),
|
|
};
|
|
const mockThis = {
|
|
dispatchStoreAction: jest.fn().mockResolvedValue(undefined),
|
|
$router: mockRouter,
|
|
storeActions: storeActions,
|
|
pageName: "test-page",
|
|
};
|
|
|
|
const bailoutCode = bailoutCodes.PART_NOT_FOUND;
|
|
|
|
// Act
|
|
await bailoutMixin.methods.navigateToBailoutPage.call(mockThis, undefined, bailoutCode);
|
|
|
|
// Assert
|
|
expect(mockThis.dispatchStoreAction).toHaveBeenCalledWith(
|
|
storeActions.SAVE_BAILOUT_CODE,
|
|
bailoutCode
|
|
);
|
|
});
|
|
|
|
test("navigateToBailoutPage: passes correct bailout code to store", async () => {
|
|
// Arrange
|
|
const mockVm = createMockVm();
|
|
const customBailoutCode = 999;
|
|
|
|
// Act
|
|
await bailoutMixin.methods.navigateToBailoutPage(mockVm, customBailoutCode);
|
|
|
|
// Assert
|
|
expect(mockVm.dispatchStoreAction).toHaveBeenCalledWith(
|
|
storeActions.SAVE_BAILOUT_CODE,
|
|
customBailoutCode
|
|
);
|
|
});
|
|
|
|
test("navigateToBailoutPage: calls navigateWithoutSaving with correct parameters", async () => {
|
|
// Arrange
|
|
const mockVm = createMockVm();
|
|
const mockPageName = "vehicle-damage";
|
|
mockVm.pageName = mockPageName;
|
|
const bailoutCode = bailoutCodes.PART_NOT_FOUND;
|
|
|
|
// Act
|
|
await bailoutMixin.methods.navigateToBailoutPage(mockVm, bailoutCode);
|
|
|
|
// Assert
|
|
expect(mockVm.$router.navigateWithoutSaving).toHaveBeenCalledWith(
|
|
navigationScenarios.BAILOUT,
|
|
mockPageName
|
|
);
|
|
});
|
|
});
|
|
|
|
function createMockVm() {
|
|
return {
|
|
dispatchStoreAction: jest.fn().mockResolvedValue(undefined),
|
|
$router: {
|
|
navigateWithoutSaving: jest.fn().mockResolvedValue(undefined),
|
|
},
|
|
storeActions,
|
|
pageName: "test-page",
|
|
};
|
|
}
|