Merge pull request #785 from Safelite/feature/richardson/SSR-1280
Check if fees are hidden and hide cart row
This commit is contained in:
commit
f57fc69e51
6 changed files with 42 additions and 7 deletions
|
|
@ -4,7 +4,11 @@ const experimentUniverses = Object.freeze({
|
|||
|
||||
const experimentSettings = Object.freeze({
|
||||
GOOGLE_CUSTOM_DIMENSION_INDEX: 'Google Custom Dimension Index',
|
||||
ISS_DISPLAY_PAY_IN_ADVANCE: 'DisplayPIAInsurance'
|
||||
ISS_DISPLAY_PAY_IN_ADVANCE: 'DisplayPIAInsurance',
|
||||
ISS_FEATURE_TOGGLE_IS_MOBILE_FEE_HIDDEN: 'HideMobileFee',
|
||||
ISS_FEATURE_TOGGLE_IS_MOBILE_FEE_OVERRIDDEN: 'OverrideMobileFee',
|
||||
ISS_FEATURE_TOGGLE_IS_RECYCLE_FEE_HIDDEN: 'HideRecycleFee',
|
||||
ISS_FEATURE_TOGGLE_IS_RECYCLE_FEE_OVERRIDDEN: 'OverrideRecycleFee'
|
||||
});
|
||||
|
||||
const experimentTriggers = Object.freeze({
|
||||
|
|
|
|||
24
src/helpers/experiment-helper.js
Normal file
24
src/helpers/experiment-helper.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
/* eslint-disable max-len */
|
||||
import { experimentSettings } from '@/constants/experiments';
|
||||
|
||||
export function hasExperimentSetting(storeExperimentSettings, settingName) {
|
||||
return Object.hasOwn(storeExperimentSettings, settingName);
|
||||
}
|
||||
|
||||
export function getExperimentSettingValue(storeExperimentSettings, settingName) {
|
||||
return hasExperimentSetting(storeExperimentSettings, settingName)
|
||||
? storeExperimentSettings[settingName]
|
||||
: null;
|
||||
}
|
||||
|
||||
export function getFeatureTogglesQueryString(storeExperimentSettings) {
|
||||
const isMobileFeeHidden = getExperimentSettingValue(storeExperimentSettings, experimentSettings.ISS_FEATURE_TOGGLE_IS_MOBILE_FEE_HIDDEN) === 'true';
|
||||
const isMobileFeeOverridden = getExperimentSettingValue(storeExperimentSettings, experimentSettings.ISS_FEATURE_TOGGLE_IS_MOBILE_FEE_OVERRIDDEN) === 'true';
|
||||
const isRecycleFeeHidden = getExperimentSettingValue(storeExperimentSettings, experimentSettings.ISS_FEATURE_TOGGLE_IS_RECYCLE_FEE_HIDDEN) === 'true';
|
||||
const isRecycleFeeOverridden = getExperimentSettingValue(storeExperimentSettings, experimentSettings.ISS_FEATURE_TOGGLE_IS_RECYCLE_FEE_OVERRIDDEN) === 'true';
|
||||
|
||||
return `FeatureToggles.IsMobileFeeHidden=${isMobileFeeHidden}`
|
||||
+ `&FeatureToggles.IsMobileFeeOverridden=${isMobileFeeOverridden}`
|
||||
+ `&FeatureToggles.IsRecycleFeeHidden=${isRecycleFeeHidden}`
|
||||
+ `&FeatureToggles.IsRecycleFeeOverridden=${isRecycleFeeOverridden}`;
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@ import { createTestingPinia } from '@pinia/testing';
|
|||
import cartDropdown from '@/iss-components/cart-dropdown/cart-dropdown.vue';
|
||||
|
||||
// Supporting Files
|
||||
import {getEnumName, getMountOptions} from '@/helpers/unit-test-helper.js';
|
||||
import { getEnumName, getMountOptions } from '@/helpers/unit-test-helper.js';
|
||||
import { useMainStore, getDefaultState } from '@/store';
|
||||
import { formatAmountInDollars } from '@/helpers/text-helper.js';
|
||||
import partTypeStrings from '@/constants/part-type-strings';
|
||||
|
|
@ -43,6 +43,7 @@ function getMountedComponent(mainInitialState = {}, initialData = {}, propsData
|
|||
});
|
||||
useMainStore(testingPinia);
|
||||
|
||||
mountOptions.global.mixins[0].methods.getSettingValue = jest.fn(() => 'false');
|
||||
mountOptions.global.plugins = [testingPinia];
|
||||
mountOptions.data = () => (initialData);
|
||||
mountOptions.propsData = propsData;
|
||||
|
|
@ -1338,7 +1339,6 @@ describe('cart-dropdown component', () => {
|
|||
const { wrapper } = getMountedComponent(storeData);
|
||||
formatAmountInDollars.mockReturnValueOnce(dollarAmount);
|
||||
|
||||
|
||||
// Act
|
||||
const result = wrapper.vm.getDisplayed(0);
|
||||
|
||||
|
|
|
|||
|
|
@ -163,6 +163,7 @@ import { formatAmountInDollars } from '@/helpers/text-helper.js';
|
|||
import { getHighestFullySatisfiedTier, getPackageContents } from '@/helpers/service-package-helper.js';
|
||||
|
||||
// Constants
|
||||
import { experimentSettings } from '@/constants/experiments';
|
||||
import partTypeStrings from '@/constants/part-type-strings.js';
|
||||
import cartItemType from '@/constants/cart-item-type.js';
|
||||
import widgetFields from '@/constants/cms-widget-fields.js';
|
||||
|
|
@ -322,10 +323,12 @@ export default {
|
|||
}
|
||||
});
|
||||
const items = vapsCartItemsNotInPackage.filter((item) => item != null);
|
||||
if (this.recycleFeeCartItem) {
|
||||
const isRecycleFeeHidden = this.getSettingValue(experimentSettings.ISS_FEATURE_TOGGLE_IS_RECYCLE_FEE_HIDDEN) === 'true';
|
||||
const isMobileFeeHidden = this.getSettingValue(experimentSettings.ISS_FEATURE_TOGGLE_IS_MOBILE_FEE_HIDDEN) === 'true';
|
||||
if (this.recycleFeeCartItem && !isRecycleFeeHidden) {
|
||||
items.push(this.recycleFeeCartItem);
|
||||
}
|
||||
if (this.mobileFeeCartItem) {
|
||||
if (this.mobileFeeCartItem && !isMobileFeeHidden) {
|
||||
items.push(this.mobileFeeCartItem);
|
||||
}
|
||||
return items;
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ import { fetchCmsContentForPage } from '@/helpers/cms-content-helper';
|
|||
import { mount } from '@vue/test-utils';
|
||||
import { createTestingPinia } from '@pinia/testing';
|
||||
import { nextTick } from 'vue';
|
||||
import coverageStatuses from "@/constants/coverage-statuses";
|
||||
import coverageType from "@/constants/coverage-type";
|
||||
import coverageStatuses from '@/constants/coverage-statuses';
|
||||
import coverageType from '@/constants/coverage-type';
|
||||
|
||||
jest.mock('@/helpers/layout-helper.js', () => jest.fn());
|
||||
|
||||
|
|
@ -173,6 +173,7 @@ function getMountedComponent(mainInitialState = {}, initialData = {}, methodToRu
|
|||
useMainStore(testingPinia);
|
||||
methodToRun();
|
||||
|
||||
mountOptions.global.mixins[0].methods.getSettingValue = jest.fn(() => 'false');
|
||||
mountOptions.global.plugins = [testingPinia];
|
||||
mountOptions.mixins = [mockMixin];
|
||||
mountOptions.data = () => (
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import partNumberStrings from '@/constants/part-number-strings';
|
|||
import { getLineItemsFlattened } from '@/helpers/line-items-helper';
|
||||
import { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString, getTaxLineItemQueryString } from '@/helpers/querystring-helper';
|
||||
import coverageType from '@/constants/coverage-type';
|
||||
import { getFeatureTogglesQueryString } from '@/helpers/experiment-helper';
|
||||
|
||||
const storeId = 'main';
|
||||
|
||||
|
|
@ -1034,6 +1035,7 @@ export const useMainStore = defineStore({
|
|||
async getInsurancePriceOrderItems(availableLineItems) {
|
||||
const { serviceLocation, currentDeductible } = this.order;
|
||||
const lineItemsQueryString = getLineItemQueryString(availableLineItems, 'lineItems');
|
||||
const featureTogglesQueryString = getFeatureTogglesQueryString(this.experimentSettings);
|
||||
|
||||
let queryString =
|
||||
`ParentAccountNumber=${this.order.parentAccountNumber}`
|
||||
|
|
@ -1041,6 +1043,7 @@ export const useMainStore = defineStore({
|
|||
+ `&CTU=${serviceLocation.zipCodeCtu}`
|
||||
+ `&Deductible=${currentDeductible ?? 0}`
|
||||
+ `&ZipCode=${serviceLocation.zipCode}`
|
||||
+ `&${featureTogglesQueryString}`
|
||||
+ `${lineItemsQueryString}`;
|
||||
|
||||
const lineItemServerData = this.order.lineItems?.serverData;
|
||||
|
|
|
|||
Loading…
Reference in a new issue