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", }; }