diff --git a/src/layouts/payment-adyen/payment-adyen.spec.js b/src/layouts/payment-adyen/payment-adyen.spec.js index e13b468c7..7ace84b97 100644 --- a/src/layouts/payment-adyen/payment-adyen.spec.js +++ b/src/layouts/payment-adyen/payment-adyen.spec.js @@ -87,6 +87,10 @@ const createValidOrder = () => ({ workOrderNumber: "WO-123456", referralCorrelationId: "ref-123", referralSequenceNumber: 1, + damage: { isRepair: false }, + lineItems: { + glassParts: [{ id: "part1", partType: "WINDSHIELD" }], + }, }); describe("payment-adyen.vue", () => { @@ -160,6 +164,16 @@ describe("payment-adyen.vue", () => { expect(result).toBe(false); }); + test("returns false when glass parts or repair info is missing", () => { + store.getters.order.damage.isRepair = false; + store.getters.order.lineItems.glassParts = []; + const wrapper = setupMocks({}); + + const result = wrapper.vm.arePagePrerequisitesValid(); + + expect(result).toBe(false); + }); + test("returns true for mobile appointment type when address fields are present", () => { store.getters.order.serviceLocation.appointmentType = AppointmentTypeStrings.MOBILE; diff --git a/src/layouts/payment-adyen/payment-adyen.vue b/src/layouts/payment-adyen/payment-adyen.vue index 4193c024b..5ae3e25cc 100644 --- a/src/layouts/payment-adyen/payment-adyen.vue +++ b/src/layouts/payment-adyen/payment-adyen.vue @@ -90,6 +90,7 @@ import { hasSchedulingInfo, hasCustomerInfo, hasPaymentMethodInfo, + hasGlassPartsOrRepairInfo, } from "@/helpers/page-prerequisites-helper.js"; export default { @@ -150,7 +151,8 @@ export default { hasInsuranceInfo(order, logQueue) && hasSchedulingInfo(order, logQueue) && hasCustomerInfo(order, logQueue) && - hasPaymentMethodInfo(order, logQueue); + hasPaymentMethodInfo(order, logQueue) && + hasGlassPartsOrRepairInfo(order, logQueue); flushPagePrereqsLogs("payment-adyen.vue", result, logQueue); return result; }, diff --git a/src/layouts/payment-method/payment-method.spec.js b/src/layouts/payment-method/payment-method.spec.js index 353316427..f539017d4 100644 --- a/src/layouts/payment-method/payment-method.spec.js +++ b/src/layouts/payment-method/payment-method.spec.js @@ -43,7 +43,7 @@ const createValidOrderForPaymentMethod = () => ({ insuranceCoverage: { isVerified: true }, }, lineItems: { - glassParts: [], + glassParts: [{ id: "part1", partType: "WINDSHIELD" }], supportingItems: [], vaps: [], promos: [], @@ -157,6 +157,16 @@ describe("payment-method.vue", () => { expect(result).toBe(false); }); + + test("returns false when glass parts or repair info is missing", () => { + const { wrapper } = setupMocks(); + store.getters.order.damage.isRepair = false; + store.getters.order.lineItems.glassParts = []; + + const result = wrapper.vm.arePagePrerequisitesValid(); + + expect(result).toBe(false); + }); }); }); diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index e5eaab5d0..0ee3ad8ce 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -184,6 +184,7 @@ import { hasInsuranceInfo, hasSchedulingInfo, hasCustomerInfo, + hasGlassPartsOrRepairInfo, } from "@/helpers/page-prerequisites-helper.js"; import { ErrorMessage } from "vee-validate"; import { Field } from "vee-validate"; @@ -393,7 +394,8 @@ export default { hasServiceLocationInfo(order, logQueue) && hasInsuranceInfo(order, logQueue) && hasSchedulingInfo(order, logQueue) && - hasCustomerInfo(order, logQueue); + hasCustomerInfo(order, logQueue) && + hasGlassPartsOrRepairInfo(order, logQueue); flushPagePrereqsLogs("payment-method.vue", result, logQueue); return result; }, diff --git a/src/layouts/payment/payment.spec.js b/src/layouts/payment/payment.spec.js index ea5341eb0..6f655fa0a 100644 --- a/src/layouts/payment/payment.spec.js +++ b/src/layouts/payment/payment.spec.js @@ -294,6 +294,16 @@ describe("payment.vue", () => { expect(result).toBe(false); }); + test("Returns false when glass parts or repair info is missing", () => { + const wrapper = setupMocks({}); + store.getters.order.damage.isRepair = false; + store.getters.order.lineItems.glassParts = []; + + const result = wrapper.vm.arePagePrerequisitesValid(); + + expect(result).toBe(false); + }); + describe("Payment method cases", () => { test("Returns false if pia options are not valid", () => { // Arrange diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index 4b4f0c3a3..0fd452a9d 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -249,6 +249,7 @@ import { hasSchedulingInfo, hasCustomerInfo, hasPaymentMethodInfo, + hasGlassPartsOrRepairInfo, } from "@/helpers/page-prerequisites-helper.js"; import buttonQuestion from "@/digital-components/button-question/button-question"; import paymentMethodListButton from "@/layouts/payment-method/payment-method-question/payment-method-list-button/payment-method-list-button"; @@ -449,7 +450,8 @@ export default { hasInsuranceInfo(order, logQueue) && hasSchedulingInfo(order, logQueue) && hasCustomerInfo(order, logQueue) && - hasPaymentMethodInfo(order, logQueue); + hasPaymentMethodInfo(order, logQueue) && + hasGlassPartsOrRepairInfo(order, logQueue); flushPagePrereqsLogs("payment.vue", result, logQueue); return result; },