diff --git a/src/constants/experiments.js b/src/constants/experiments.js index 127440e19..c76b1ea1c 100644 --- a/src/constants/experiments.js +++ b/src/constants/experiments.js @@ -42,6 +42,7 @@ const experimentSettings = { OFFER_OEM: "OfferOem", USE_ADYEN_PAYMENT: "UseAdyenPayment", SHOW_UNVERIFIED_DEDUCT_ENTRY: "ShowUnverifiedDeducEntry", + SERVICE_PACKAGE_ORDER: "ServicePackageOrder", }; const experimentTriggers = { diff --git a/src/layouts/quote/service-package-question/service-package-question.spec.js b/src/layouts/quote/service-package-question/service-package-question.spec.js index a44dc463c..b3e4742e7 100644 --- a/src/layouts/quote/service-package-question/service-package-question.spec.js +++ b/src/layouts/quote/service-package-question/service-package-question.spec.js @@ -35,6 +35,11 @@ jest.mock("@/mixins/experiment-mixin.js", () => ({ return true; } }, + hasSetting(settingName) { + if (settingName === mockExperimentSettings.PROMO_ON_PACKAGE) { + return false; + } + }, hasSettingEqualTo(settingName, settingValue) { return false; }, diff --git a/src/layouts/quote/service-package-question/service-package-question.vue b/src/layouts/quote/service-package-question/service-package-question.vue index 436e98b24..72472e195 100644 --- a/src/layouts/quote/service-package-question/service-package-question.vue +++ b/src/layouts/quote/service-package-question/service-package-question.vue @@ -163,6 +163,16 @@ export default { })); this.$emit("currentNumberOfPackages", modifiedAnswers.length); + + if (this.experimentPackageOrder()) { + const orderedKeys = this.experimentPackageOrder() + .split(",") + .map((key) => key.trim()); + modifiedAnswers.sort( + (a, b) => orderedKeys.indexOf(a.value) - orderedKeys.indexOf(b.value) + ); + } + return modifiedAnswers; }, isDiscountOnOrder() { @@ -235,6 +245,11 @@ export default { ) ); }, + experimentPackageOrder() { + return experimentMixin.methods.hasSetting(experimentSettings.SERVICE_PACKAGE_ORDER) + ? experimentMixin.methods.getSettingValue(experimentSettings.SERVICE_PACKAGE_ORDER) + : false; + }, getButtonTypeObject() { if (this.isAfterpayBreakoutDisplay()) { return this.servicePackageRadioAfterpayExperiment;