preReq Tests
This commit is contained in:
parent
c4de9fd601
commit
037ff1eb2a
1 changed files with 184 additions and 0 deletions
184
src/layouts/schedule-page/schedule-page.spec.js
Normal file
184
src/layouts/schedule-page/schedule-page.spec.js
Normal file
|
|
@ -0,0 +1,184 @@
|
||||||
|
// Components
|
||||||
|
import schedule from '@/layouts/schedule-page/schedule-page.vue';
|
||||||
|
|
||||||
|
// Supporting Files
|
||||||
|
import { createTestingPinia } from '@pinia/testing';
|
||||||
|
import { shallowMount } from '@vue/test-utils';
|
||||||
|
import { getMountOptions } from '@/helpers/unit-test-helper.js';
|
||||||
|
import { useMainStore } from '@/store/index.js';
|
||||||
|
|
||||||
|
const mockMixin = {
|
||||||
|
methods: {
|
||||||
|
getCmsContent: jest.fn().mockImplementation(() => ''),
|
||||||
|
setCmsContent: jest.fn()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const footerStub = {
|
||||||
|
render: () => {},
|
||||||
|
methods: {
|
||||||
|
updateButtonText: jest.fn()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const loadingModalStub = {
|
||||||
|
render: () => {},
|
||||||
|
methods: {
|
||||||
|
showModal: jest.fn(),
|
||||||
|
hideModal: jest.fn()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function getShallowMountedComponent(initialData = {}, methodToRun = () => {}) {
|
||||||
|
const mountOptions = getMountOptions({
|
||||||
|
router: {
|
||||||
|
navigate: jest.fn()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// mountOptions.global.mocks["$store"] = store;
|
||||||
|
|
||||||
|
mountOptions.global.stubs = {
|
||||||
|
siteFooter: footerStub,
|
||||||
|
siteHeader: true,
|
||||||
|
recalModal: true,
|
||||||
|
contentGroupModal: true,
|
||||||
|
alert: true,
|
||||||
|
loadingModal: loadingModalStub
|
||||||
|
};
|
||||||
|
|
||||||
|
methodToRun();
|
||||||
|
|
||||||
|
mountOptions.mixins = [mockMixin];
|
||||||
|
mountOptions.data = () => (
|
||||||
|
initialData
|
||||||
|
);
|
||||||
|
|
||||||
|
const wrapper = shallowMount(schedule, mountOptions);
|
||||||
|
return { wrapper };
|
||||||
|
}
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
const testingPinia = createTestingPinia({
|
||||||
|
initialState: {
|
||||||
|
main: {
|
||||||
|
order: {
|
||||||
|
schedule: {
|
||||||
|
date: '2019-01-01',
|
||||||
|
startTime: '09:00',
|
||||||
|
endTime: '10:00',
|
||||||
|
routeCode: '000'
|
||||||
|
},
|
||||||
|
lineItems: {
|
||||||
|
glassParts: [
|
||||||
|
{
|
||||||
|
partNumber: 'ABC123'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
supportingItems: []
|
||||||
|
},
|
||||||
|
serviceLocation: {
|
||||||
|
appointmentType: 'Inshop',
|
||||||
|
zipCode: '12345',
|
||||||
|
zipCodeCtu: '01234',
|
||||||
|
provider: {
|
||||||
|
providerNumber: '123'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
damage: {
|
||||||
|
isRepair: false
|
||||||
|
},
|
||||||
|
referralNumber: '1234567'
|
||||||
|
},
|
||||||
|
payment: {
|
||||||
|
isInsurance: true
|
||||||
|
},
|
||||||
|
lineItems: {
|
||||||
|
glassParts: [],
|
||||||
|
supportingItems: []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
useMainStore(testingPinia);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('schedule-page.vue', () => {
|
||||||
|
describe('Initial Load', () => {
|
||||||
|
test('Should pass arePagePrerequisitesValid with a mobile order and no providerNumber', () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = getShallowMountedComponent();
|
||||||
|
wrapper.vm.mainStore.order.serviceLocation.appointmentType = 'Mobile';
|
||||||
|
wrapper.vm.mainStore.order.serviceLocation.provider = null;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(arePagePrerequisitesValid).toBe(true);
|
||||||
|
});
|
||||||
|
test('Should pass arePagePrerequisitesValid with an inshop order and providerNumber', () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = getShallowMountedComponent();
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(arePagePrerequisitesValid).toBe(true);
|
||||||
|
});
|
||||||
|
test('Should fail arePagePrerequisitesValid with an inshop order and no providerNumber', () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = getShallowMountedComponent();
|
||||||
|
wrapper.vm.mainStore.order.serviceLocation.provider.providerNumber = null;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(arePagePrerequisitesValid).toBeFalsy();
|
||||||
|
});
|
||||||
|
test('Should fail arePagePrerequisitesValid without isInsurance', () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = getShallowMountedComponent();
|
||||||
|
wrapper.vm.mainStore.payment.isInsurance = null;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(arePagePrerequisitesValid).toBe(false);
|
||||||
|
});
|
||||||
|
test('Should fail arePagePrerequisitesValid if supportingItems is null', async () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = getShallowMountedComponent();
|
||||||
|
wrapper.vm.mainStore.order.lineItems.supportingItems = null;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(arePagePrerequisitesValid).toBe(false);
|
||||||
|
});
|
||||||
|
test('Should fail arePagePrerequisitesValid with an replace with no glass parts', async () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = getShallowMountedComponent();
|
||||||
|
wrapper.vm.mainStore.order.lineItems.glassParts = [];
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(arePagePrerequisitesValid).toBe(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe('Rendering', () => {
|
||||||
|
test('Schedule page loads', () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = getShallowMountedComponent();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(wrapper).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
Reference in a new issue