DigitalConsumer.ISS/src/layouts/provider-preference/provider-preference.spec.js

83 lines
2.7 KiB
JavaScript

import ProviderPreference from '@/layouts/provider-preference/provider-preference.vue';
import { shallowMount } from '@vue/test-utils';
import { settleAllPromises } from '@/helpers/layout-helper.js';
import { fetchCmsContentForPage } from '@/helpers/cms-content-helper';
import { getMountOptions } from '@/helpers/unit-test-helper.js';
import { useMainStore } from '@/store';
import navigationScenarios from '@/router/router-constants/navigation-scenarios';
// Mock our module for promises.
jest.mock('@/helpers/layout-helper.js', () => ({
settleAllPromises: jest.fn()
}));
// Mock fetchCmsContentForPage
jest.mock('@/helpers/cms-content-helper', () => ({
fetchCmsContentForPage: jest.fn(),
setupModalLinks: jest.fn()
}));
/** @ignore */
function setupMocks(mockApiResponses) {
const mountOptions = getMountOptions({
router: {
navigate: jest.fn()
},
route: 'provider-preference'
});
const wrapper = shallowMount(ProviderPreference,
mountOptions);
useMainStore().getCoveragePolicyInfo = jest.fn().mockImplementation(() => Promise.resolve({
data: {}
}));
const apiResponses = mockApiResponses;
settleAllPromises.mockImplementation(() => apiResponses);
fetchCmsContentForPage.mockImplementation(() => { });
return { wrapper };
}
describe('provider-preference.vue', () => {
test('Should navigate to safelite flow when safelite selected', () => {
// Arrange
const { wrapper } = setupMocks();
// Act
wrapper.vm.selectedProvider = 'SafeliteOption';
wrapper.vm.forwardButtonAction();
// Test
expect(wrapper.vm.$router.navigate).toBeCalledWith(navigationScenarios.CLICKED_FORWARD_WITH_SAFELITE, 'provider-preference');
});
test('Should navigate to tpa flow when TPAOption selected and TPA Flow Enabled', () => {
// Arrange
const { wrapper } = setupMocks();
// Act
wrapper.vm.selectedProvider = 'TPAOption';
useMainStore().issConfig.enableTPAFlow = true;
wrapper.vm.forwardButtonAction();
// Test
expect(wrapper.vm.$router.navigate).toBeCalledWith(navigationScenarios.CLICKED_FORWARD_WITH_TPA_ENABLED, 'provider-preference');
});
test('Should navigate to tpa disabled route page when TPAOption selected and TPA Flow disabled', () => {
// Arrange
const { wrapper } = setupMocks();
// Act
wrapper.vm.selectedProvider = 'TPAOption';
useMainStore().issConfig.enableTPAFlow = false;
wrapper.vm.forwardButtonAction();
// Test
expect(wrapper.vm.$router.navigate).toBeCalledWith(navigationScenarios.CLICKED_FORWARD_WITH_TPA_DISABLED, 'provider-preference');
});
});