From 946c44a25117a6c6a54eb02f3f605a96ce6fba51 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Tue, 18 Feb 2025 09:24:53 -0500 Subject: [PATCH] CASH-245 | Add insurance-company unit tests Renamed the file Built the necessary scaffolding to run tests wrote tests covering the pay on my own back button Wrote two other simple tests to help test the scaffolding --- .../insurance-company-spec.js | 3 - .../insurance-company.spec.js | 105 ++++++++++++++++++ 2 files changed, 105 insertions(+), 3 deletions(-) delete mode 100644 src/layouts/insurance-company/insurance-company-spec.js create mode 100644 src/layouts/insurance-company/insurance-company.spec.js 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 + ); + }); +});