Updated unit tests to make sure new logic is being hit.
This commit is contained in:
parent
c6def1fd8a
commit
ff391733f0
2 changed files with 125 additions and 13 deletions
|
|
@ -13,6 +13,7 @@ import settleAllPromises from '@/helpers/layout-helper.js';
|
||||||
import { fetchCmsContentForPage } from '@/helpers/cms-content-helper';
|
import { fetchCmsContentForPage } from '@/helpers/cms-content-helper';
|
||||||
import coverageStatuses from '@/constants/coverage-statuses';
|
import coverageStatuses from '@/constants/coverage-statuses';
|
||||||
import coverageType from '@/constants/coverage-type';
|
import coverageType from '@/constants/coverage-type';
|
||||||
|
import { saveSession } from '@/helpers/order-helper';
|
||||||
|
|
||||||
// Mock fetchCmsContentForPage
|
// Mock fetchCmsContentForPage
|
||||||
jest.mock('@/helpers/cms-content-helper', () => ({
|
jest.mock('@/helpers/cms-content-helper', () => ({
|
||||||
|
|
@ -22,6 +23,9 @@ jest.mock('@/helpers/cms-content-helper', () => ({
|
||||||
|
|
||||||
// Mock our module for promises.
|
// Mock our module for promises.
|
||||||
jest.mock('@/helpers/layout-helper.js', () => jest.fn());
|
jest.mock('@/helpers/layout-helper.js', () => jest.fn());
|
||||||
|
jest.mock('@/helpers/order-helper', () => ({
|
||||||
|
saveSession: jest.fn().mockResolvedValue({})
|
||||||
|
}));
|
||||||
|
|
||||||
function getMountedComponent(mainInitialState = {}, initialData = {}, methodToRunAfterInitializingStore = () => {}) {
|
function getMountedComponent(mainInitialState = {}, initialData = {}, methodToRunAfterInitializingStore = () => {}) {
|
||||||
const mountOptions = getMountOptions({
|
const mountOptions = getMountOptions({
|
||||||
|
|
@ -278,6 +282,33 @@ describe('duplicateCheck.vue', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('forwardButtonAction', () => {
|
describe('forwardButtonAction', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
jest.clearAllMocks();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('No selected duplicate => calls saveSession and getCoveragePolicyInfo, not loadSessionFromDuplicate', async () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = getMountedComponent({
|
||||||
|
applicationUser: {
|
||||||
|
duplicateOrders: [
|
||||||
|
{
|
||||||
|
referralNumber: getRandomString(6, 6),
|
||||||
|
correlationId: getRandomString(6, 6)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
wrapper.vm.mainStore.loadSessionFromDuplicate = jest.fn().mockResolvedValue({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await wrapper.vm.forwardButtonAction();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(saveSession).toHaveBeenCalledTimes(1);
|
||||||
|
expect(wrapper.vm.mainStore.loadSessionFromDuplicate).not.toHaveBeenCalled();
|
||||||
|
expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
|
||||||
test('Selected duplicate => load session called', async () => {
|
test('Selected duplicate => load session called', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
const selectedAnswer = getRandomString(6, 6);
|
const selectedAnswer = getRandomString(6, 6);
|
||||||
|
|
@ -296,17 +327,48 @@ describe('duplicateCheck.vue', () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
wrapper.setData({ selectedAnswer });
|
await wrapper.setData({ selectedAnswer });
|
||||||
useMainStore().loadSessionFromDuplicate = jest.fn().mockImplementation(() => Promise.resolve({}));
|
wrapper.vm.mainStore.loadSessionFromDuplicate = jest.fn().mockResolvedValue({});
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
await wrapper.vm.forwardButtonAction();
|
await wrapper.vm.forwardButtonAction();
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(wrapper.vm.mainStore.loadSessionFromDuplicate).toHaveBeenCalledTimes(1);
|
expect(wrapper.vm.mainStore.loadSessionFromDuplicate).toHaveBeenCalledTimes(1);
|
||||||
|
expect(saveSession).not.toHaveBeenCalled();
|
||||||
|
expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(1);
|
||||||
expect(wrapper.vm.$router.navigate).toHaveBeenCalledTimes(1);
|
expect(wrapper.vm.$router.navigate).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
test('Selected new order => load session not called', async () => {
|
test('Selected NewClaim => calls saveSession, not loadSessionFromDuplicate', async () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = getMountedComponent({
|
||||||
|
applicationUser: {
|
||||||
|
duplicateOrders: [
|
||||||
|
{
|
||||||
|
vehicleYear: 'YEAR',
|
||||||
|
vehicleMake: 'make',
|
||||||
|
vehicleModel: 'MoDel',
|
||||||
|
responseDate: '2018-03-01T01:12:34',
|
||||||
|
referralNumber: getRandomString(6, 6),
|
||||||
|
correlationId: getRandomString(6, 6)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await wrapper.setData({ selectedAnswer: 'NewClaim' });
|
||||||
|
wrapper.vm.mainStore.loadSessionFromDuplicate = jest.fn().mockResolvedValue({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await wrapper.vm.forwardButtonAction();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(saveSession).toHaveBeenCalledTimes(1);
|
||||||
|
expect(wrapper.vm.mainStore.loadSessionFromDuplicate).toHaveBeenCalledTimes(0);
|
||||||
|
expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(1);
|
||||||
|
expect(wrapper.vm.$router.navigate).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
test('Unmatched selection => does not call saveSession or loadSessionFromDuplicate', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
const newOrderSelectionName = getRandomString(6, 6);
|
const newOrderSelectionName = getRandomString(6, 6);
|
||||||
const { wrapper } = getMountedComponent({
|
const { wrapper } = getMountedComponent({
|
||||||
|
|
@ -324,14 +386,16 @@ describe('duplicateCheck.vue', () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
wrapper.setData({ selectedAnswer: newOrderSelectionName });
|
await wrapper.setData({ selectedAnswer: newOrderSelectionName });
|
||||||
useMainStore().loadSessionFromDuplicate = jest.fn().mockImplementation(() => Promise.resolve({}));
|
wrapper.vm.mainStore.loadSessionFromDuplicate = jest.fn().mockResolvedValue({});
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
await wrapper.vm.forwardButtonAction();
|
await wrapper.vm.forwardButtonAction();
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
|
expect(saveSession).toHaveBeenCalledTimes(0);
|
||||||
expect(wrapper.vm.mainStore.loadSessionFromDuplicate).toHaveBeenCalledTimes(0);
|
expect(wrapper.vm.mainStore.loadSessionFromDuplicate).toHaveBeenCalledTimes(0);
|
||||||
|
expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(1);
|
||||||
expect(wrapper.vm.$router.navigate).toHaveBeenCalledTimes(1);
|
expect(wrapper.vm.$router.navigate).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
test('Load session throws error => still navigate forward', async () => {
|
test('Load session throws error => still navigate forward', async () => {
|
||||||
|
|
@ -352,20 +416,18 @@ describe('duplicateCheck.vue', () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
wrapper.setData({ selectedAnswer });
|
await wrapper.setData({ selectedAnswer });
|
||||||
const error = 'load session error';
|
const error = 'load session error';
|
||||||
useMainStore().loadSessionFromDuplicate = jest.fn().mockImplementation(() => Promise.reject(error));
|
wrapper.vm.mainStore.loadSessionFromDuplicate = jest.fn().mockImplementation(() => Promise.reject(error));
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
await wrapper.vm.forwardButtonAction();
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect.assertions(2);
|
|
||||||
try {
|
|
||||||
await wrapper.vm.forwardButtonAction();
|
|
||||||
} catch (e) {
|
|
||||||
expect(e).toMatch(error);
|
|
||||||
}
|
|
||||||
expect(wrapper.vm.mainStore.loadSessionFromDuplicate).toHaveBeenCalledTimes(1);
|
expect(wrapper.vm.mainStore.loadSessionFromDuplicate).toHaveBeenCalledTimes(1);
|
||||||
|
expect(saveSession).not.toHaveBeenCalled();
|
||||||
|
expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(0);
|
||||||
|
expect(wrapper.vm.$router.navigate).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
test('coverageType deductible and policy vehicles returned => CLICKED_FORWARD_POLICY_VERIFIED_WITH_VEHICLES', async () => {
|
test('coverageType deductible and policy vehicles returned => CLICKED_FORWARD_POLICY_VERIFIED_WITH_VEHICLES', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import { useMainStore } from '@/store';
|
||||||
import navigationScenarios from '@/router/router-constants/navigation-scenarios';
|
import navigationScenarios from '@/router/router-constants/navigation-scenarios';
|
||||||
import routerParams from '@/router/router-constants/router-params';
|
import routerParams from '@/router/router-constants/router-params';
|
||||||
import coverageType from '@/constants/coverage-type';
|
import coverageType from '@/constants/coverage-type';
|
||||||
|
import { saveSession } from '@/helpers/order-helper';
|
||||||
|
|
||||||
// Mock our module for promises.
|
// Mock our module for promises.
|
||||||
jest.mock('@/helpers/layout-helper.js', () => jest.fn());
|
jest.mock('@/helpers/layout-helper.js', () => jest.fn());
|
||||||
|
|
@ -23,6 +24,9 @@ jest.mock('@/helpers/cms-content-helper', () => ({
|
||||||
jest.mock('@/global-methods', () => ({
|
jest.mock('@/global-methods', () => ({
|
||||||
callHttpClient: jest.fn()
|
callHttpClient: jest.fn()
|
||||||
}));
|
}));
|
||||||
|
jest.mock('@/helpers/order-helper', () => ({
|
||||||
|
saveSession: jest.fn().mockResolvedValue({})
|
||||||
|
}));
|
||||||
|
|
||||||
/** @ignore */
|
/** @ignore */
|
||||||
function setupMocks({
|
function setupMocks({
|
||||||
|
|
@ -133,6 +137,10 @@ describe('welcome-page.vue', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('navigation', () => {
|
describe('navigation', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
jest.clearAllMocks();
|
||||||
|
});
|
||||||
|
|
||||||
describe('When zip code check fails', () => {
|
describe('When zip code check fails', () => {
|
||||||
test('Navigation should not happen', async () => {
|
test('Navigation should not happen', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
|
|
@ -255,6 +263,48 @@ describe('navigation', () => {
|
||||||
{ [routerParams.SKIP_SAVE_SESSION]: true }
|
{ [routerParams.SKIP_SAVE_SESSION]: true }
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
test('if no duplicates, calls saveSession and getCoveragePolicyInfo', async () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({}));
|
||||||
|
useMainStore().applicationUser.duplicateOrders = [];
|
||||||
|
useMainStore().order.loadedFromCookie = false;
|
||||||
|
useMainStore().order.visitedDuplicateCheckPage = false;
|
||||||
|
|
||||||
|
wrapper.vm.mainStore.validateZip = jest.fn().mockImplementation(() => Promise.resolve({
|
||||||
|
data: {
|
||||||
|
isValid: true
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await wrapper.vm.forwardButtonAction();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(saveSession).toHaveBeenCalledTimes(1);
|
||||||
|
expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
test('if duplicates found, does not call saveSession or getCoveragePolicyInfo', async () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({}));
|
||||||
|
useMainStore().applicationUser.duplicateOrders = [{ test: 'duplicate-order' }];
|
||||||
|
useMainStore().order.loadedFromCookie = false;
|
||||||
|
useMainStore().order.visitedDuplicateCheckPage = false;
|
||||||
|
|
||||||
|
wrapper.vm.mainStore.validateZip = jest.fn().mockImplementation(() => Promise.resolve({
|
||||||
|
data: {
|
||||||
|
isValid: true
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await wrapper.vm.forwardButtonAction();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(saveSession).not.toHaveBeenCalled();
|
||||||
|
expect(wrapper.vm.mainStore.getCoveragePolicyInfo).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
test('if policy is found, but no vehicles and no duplicates, navigate to vehicle-selection page', async () => {
|
test('if policy is found, but no vehicles and no duplicates, navigate to vehicle-selection page', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
const { wrapper } = setupMocks({});
|
const { wrapper } = setupMocks({});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue