SSR-1178. Fix WO not created when Pay at the time of service is selected. (#643)

This commit is contained in:
Johan Gunawan 2024-04-25 09:54:48 -04:00 committed by GitHub
parent 63219c7776
commit 9e6e91b98c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 44 additions and 5 deletions

View file

@ -10,6 +10,12 @@ import issPageValues from '@/router/router-constants/issPage-values';
import { paymentMethods } from '@/constants/payment-method-constants';
import queryStrings from '@/constants/query-strings';
import { experimentSettings } from '@/constants/experiments';
import { submitWorkOrder } from '@/helpers/order-helper.js';
// Mock so it can be used as an assertion
jest.mock('@/helpers/order-helper.js', () => ({
submitWorkOrder: jest.fn()
}));
function setupMocks({ customMountOptions = {}, queryString }, mainInitialState = {}, customMixin = null) {
const mountOptions = getMountOptions({
@ -251,4 +257,25 @@ describe('payment-method.vue', () => {
expect(result).toBeTruthy();
});
});
describe('forwardButtonAction', () => {
test('Pay at the time of service is selected, should call saveWorkOrder', async () => {
// Arrange
const store = {
order: {
payment: {
isPayInAdvance: false,
payInAdvanceType: null
}
}
};
const wrapper = setupMocks({}, store);
// Act
await wrapper.vm.forwardButtonAction();
// Assert
expect(submitWorkOrder).toHaveBeenCalledTimes(1);
});
});
});

View file

@ -88,6 +88,7 @@ import issPageValues from '@/router/router-constants/issPage-values';
import bailoutMessage from '@/constants/bailoutMessage';
import { AppointmentTypeStrings } from '@/constants/schedule-constants';
import VehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue';
import { submitWorkOrder } from '@/helpers/order-helper.js';
export default {
name: 'payment-method',
@ -296,10 +297,21 @@ export default {
await useMainStore().savePaymentMethodChoice(this.paymentMethod);
if (this.paymentMethod === paymentMethods.PAY_AT_TIME_OF_SERVICE) {
this.$router.navigate(
this.navigationScenarios.CLICKED_FORWARD,
this.$route
);
try {
await submitWorkOrder({
pageNameToLog: 'payment-method',
submitAfterSave: true
});
useMainStore().resetSubmittedOrder();
this.$router.navigate(
this.navigationScenarios.CLICKED_FORWARD,
this.$route
);
} catch (error) {
console.error(`error: response from submit work order:${error.message}`);
}
} else {
this.$router.navigate(
this.navigationScenarios.CLICKED_PAY_NOW,

View file

@ -421,7 +421,7 @@ export const useMainStore = defineStore({
experimentSettings: (state) => state.applicationUser.experiments
.map((x) => x.settings)
.reduce((r, c) => Object.assign(r, c), {}) ?? {},
submittedOrder: () => JSON.parse(window.sessionStorage.getItem('submittedOrder'))
submittedOrder: () => JSON.parse(window.sessionStorage.getItem(webStorageConstants.SUBMITTED_ORDER))
},
actions:
{