diff --git a/src/layouts/payment-method/payment-method.spec.js b/src/layouts/payment-method/payment-method.spec.js index 01e06a1e..476c9f59 100644 --- a/src/layouts/payment-method/payment-method.spec.js +++ b/src/layouts/payment-method/payment-method.spec.js @@ -5,39 +5,70 @@ import paymentMethod from '@/layouts/payment-method/payment-method.vue'; import { shallowMount } from '@vue/test-utils'; import { getMountOptions } from '@/helpers/unit-test-helper.js'; import { useMainStore } from '@/store'; +import issPageValues from '@/router/router-constants/issPage-values'; import { paymentMethods } from '@/constants/payment-method-constants'; +import queryStrings from '@/constants/query-strings'; -function setupMocks() { - const mountOptions = getMountOptions(); +function setupMocks({ customMountOptions = {}, queryString }) { + const mountOptions = getMountOptions({ + ...customMountOptions, + route: { query: { issPage: issPageValues.PAYMENT_METHOD, ...queryString }, params: {} } + }); const wrapper = shallowMount(paymentMethod, mountOptions); - return { wrapper }; + return wrapper; } describe('payment-method.vue', () => { - test('getting payment method when method is pay later', async () => { + describe('Payment Method Type', () => { + test('getting payment method when method is pay later', async () => { // Arrange - const { wrapper } = setupMocks(); - const payLaterPaymentMethod = paymentMethods.PAY_AT_TIME_OF_SERVICE; - useMainStore().savePaymentMethodChoice(payLaterPaymentMethod); + const wrapper = setupMocks({}); + const payLaterPaymentMethod = paymentMethods.PAY_AT_TIME_OF_SERVICE; + useMainStore().savePaymentMethodChoice(payLaterPaymentMethod); - // Act - const paymethod = wrapper.vm.getPaymentMethodFromStore(); + // Act + const paymethod = wrapper.vm.getPaymentMethodFromStore(); - // Assert - expect(paymethod).toBe(payLaterPaymentMethod); + // Assert + expect(paymethod).toBe(payLaterPaymentMethod); + }); + test('getting payment method when method is pay in advance', async () => { + // Arrange + const wrapper = setupMocks({}); + const payInAdvancePaymentMethod = paymentMethods.CREDIT_CARD; + useMainStore().savePaymentMethodChoice(payInAdvancePaymentMethod); + + // Act + const paymethod = wrapper.vm.getPaymentMethodFromStore(); + + // Assert + expect(paymethod).not.toBe(payInAdvancePaymentMethod); + }); }); - test('getting payment method when method is pay in advance', async () => { - // Arrange - const { wrapper } = setupMocks(); - const payInAdvancePaymentMethod = paymentMethods.CREDIT_CARD; - useMainStore().savePaymentMethodChoice(payInAdvancePaymentMethod); - // Act - const paymethod = wrapper.vm.getPaymentMethodFromStore(); + describe('Pay In Advance Error Alert', () => { + test('show pay in advance error alert when contained in querystring', () => { + // Arrange + const queryString = { + [queryStrings.DISPLAY_PAY_IN_ADVANCE_ALERT]: paymentMethods.AFTERPAY + }; + const wrapper = setupMocks({ queryString }); - // Assert - expect(paymethod).not.toBe(payInAdvancePaymentMethod); + // Assert + const payInAdvanceErrorAlert = wrapper.find('[name="payInAdvanceErrorAlert"]'); + expect(payInAdvanceErrorAlert.exists()).toBeTruthy(); + expect(payInAdvanceErrorAlert.isVisible()).toBeTruthy(); + }); + + test('hide pay in advance error alert when not contained in querystring', () => { + // Arrange + const wrapper = setupMocks({}); + + // Assert + const payInAdvanceErrorAlert = wrapper.find('[name="payInAdvanceErrorAlert"]'); + expect(payInAdvanceErrorAlert.exists()).toBeFalsy(); + }); }); }); diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index 34e1ed67..a3f97d78 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -26,7 +26,13 @@ servicePackageTitleWidgetName="ServicePackageTitle" :availableVaps="availableVaps" />