diff --git a/src/layouts/insurance-company/insurance-company-spec.js b/src/layouts/insurance-company/insurance-company-spec.js deleted file mode 100644 index bd932b7d2..000000000 --- a/src/layouts/insurance-company/insurance-company-spec.js +++ /dev/null @@ -1,3 +0,0 @@ -describe("insurance-company.vue", () => { - it.todo("Some test for the future"); -}); diff --git a/src/layouts/insurance-company/insurance-company.spec.js b/src/layouts/insurance-company/insurance-company.spec.js new file mode 100644 index 000000000..b1297d13b --- /dev/null +++ b/src/layouts/insurance-company/insurance-company.spec.js @@ -0,0 +1,105 @@ +import { shallowMount } from '@vue/test-utils'; +import InsuranceCompany from '@/layouts/insurance-company/insurance-company.vue'; +import { applicationConfig } from '@/constants/application-config.js'; +import store from "@/store"; +import baseMixin from "@/mixins/base-mixin.js"; + + +jest.mock('@/store', () => ({ + getters: { + order: { + payment: { + parentAccountNumber: '12345', + }, + }, + }, + })); + +var mockRouter = { + navigateWithoutSaving: jest.fn(), + }; + + jest.mock('@/mixins/base-mixin.js', () => ({ + methods: { + navigateWithoutSaving: jest.fn(), + }, + data() { + return { + navigationScenarios: { + CLICKED_BACK: 'clicked_back', + }, + }; + }, + })); + +describe("insurance-company.vue", () => { + + beforeEach(() => { + // Reset the store's parentAccountNumber before each test + store.getters.order.payment.parentAccountNumber = '12345'; + }); + + test('should return true when parentAccountNumber matches CASH_PARENT_ACCOUNT_NUMBER', () => { + applicationConfig.CASH_PARENT_ACCOUNT_NUMBER = "12345"; + const wrapper = shallowMount(InsuranceCompany, { + global: { + mocks: { + $store: store + }, + }, + }); + + expect(wrapper.vm.isCashParentAccountNumber()).toBe(true); + }); + + test('should return false when parentAccountNumber does not match CASH_PARENT_ACCOUNT_NUMBER', () => { + applicationConfig.CASH_PARENT_ACCOUNT_NUMBER = "12345"; + store.getters.order.payment.parentAccountNumber = '67890'; + const wrapper = shallowMount(InsuranceCompany, { + global: { + mocks: { + $store: store, + }, + }, + }); + + expect(wrapper.vm.isCashParentAccountNumber()).toBe(false); + }); + + test('should call navigateWithoutSaving with { isCashSelected: true } when forceCashSelection is true', () => { + const wrapper = shallowMount(InsuranceCompany, { + global: { + mocks: { + $store: store, + $router: mockRouter, + }, + mixins: [baseMixin], + }, + }); + + + wrapper.vm.backButtonAction(true); + expect(mockRouter.navigateWithoutSaving).toHaveBeenCalledWith( + wrapper.vm.navigationScenarios.CLICKED_BACK, + wrapper.vm.$route, + { isCashSelected: true } + ); + }); + + test('should call navigateWithoutSaving with no extra parameter when forceCashSelection is false', () => { + const wrapper = shallowMount(InsuranceCompany, { + global: { + mocks: { + $store: store, + $router: mockRouter, + }, + mixins: [baseMixin], + }, + }); + wrapper.vm.backButtonAction(false); + expect(mockRouter.navigateWithoutSaving).toHaveBeenCalledWith( + wrapper.vm.navigationScenarios.CLICKED_BACK, + wrapper.vm.$route + ); + }); +});