INSR-9940: Add/fix tests for cart-dropdown

This commit is contained in:
Alex Humphries 2026-06-11 09:25:46 -04:00
parent 1a7cfbf388
commit 19b870dc7c
2 changed files with 156 additions and 8 deletions

View file

@ -13,6 +13,7 @@ import { getPriceOfLineItems } from '@/helpers/price-calculator.js';
import coverageStatuses from '@/constants/coverage-statuses';
import coverageType from '@/constants/coverage-type';
import * as cartHelper from '@/helpers/cart-helper';
import { experimentSettings } from '@/constants/experiments';
const VERIFYING_COVERAGE = 'Verifying coverage';
@ -30,7 +31,7 @@ jest.mock('@/helpers/service-package-helper', () => ({
getPackageContents: jest.fn()
}));
function getMountedComponent(mainInitialState = {}, initialData = {}, propsData = {}) {
function getMountedComponent(mainInitialState = {}, initialData = {}, propsData = {}, experimentMockFunction = jest.fn(() => 'false')) {
const mountOptions = getMountOptions({
router: {
navigate: jest.fn()
@ -44,7 +45,7 @@ function getMountedComponent(mainInitialState = {}, initialData = {}, propsData
});
useMainStore(testingPinia);
mountOptions.global.mixins[0].methods.getSettingValue = jest.fn(() => 'false');
mountOptions.global.mixins[0].methods.getSettingValue = experimentMockFunction;
mountOptions.global.plugins = [testingPinia];
mountOptions.data = () => (initialData);
mountOptions.propsData = propsData;
@ -804,12 +805,16 @@ describe('cart-dropdown component', () => {
partType: partTypeStrings.REPLACE_FEE
}));
});
test('when mobileFee, includes mobile fee', () => {
test('when mobile fee should be included, includes mobile fee', () => {
// Arrange
const storeData = {
order: {
lineItems: {
feeItems: [{ partType: partTypeStrings.MOBILE_FEE }]
feeItems: [{ partType: partTypeStrings.MOBILE_FEE, sellingPrice: 123}]
},
insuranceCoverage: {
coverageStatus: coverageStatuses.VERIFIED,
coverageType: coverageType.NO_COMP
}
}
};
@ -977,6 +982,153 @@ describe('cart-dropdown component', () => {
expect(result.name).toBe(expectedName);
});
});
describe('includeMobileFeeInCart', () => {
test('returns false with no mobile fee', () => {
// Arrange
const storeData = {
order: {
lineItems: {
feeItems: []
}
}
};
const { wrapper } = getMountedComponent(storeData);
// Act
const result = wrapper.vm.includeMobileFeeInCart;
// Assert
expect(result).toBe(false);
});
test('returns false with a mobile fee with no price', () => {
// Arrange
const storeData = {
order: {
lineItems: {
feeItems: [{ partType: partTypeStrings.MOBILE_FEE, price: 0 }]
}
}
};
const { wrapper } = getMountedComponent(storeData);
// Act
const result = wrapper.vm.includeMobileFeeInCart;
// Assert
expect(result).toBe(false);
});
test('returns true for priced mobile fee for No Comp', () => {
// Arrange
const storeData = {
order: {
lineItems: {
feeItems: [{ partType: partTypeStrings.MOBILE_FEE, price: 100 }]
},
insuranceCoverage: {
coverageStatus: coverageStatuses.VERIFIED,
coverageType: coverageType.NO_COMP
}
}
};
const { wrapper } = getMountedComponent(storeData);
// Act
const result = wrapper.vm.includeMobileFeeInCart;
// Assert
expect(result).toBe(true);
});
test('returns true for priced mobile fee for ITAC', () => {
// Arrange
const storeData = {
order: {
lineItems: {
feeItems: [{ partType: partTypeStrings.MOBILE_FEE, price: 100 }]
},
insuranceCoverage: {
coverageStatus: coverageStatuses.VERIFIED,
coverageType: coverageType.ITAC
}
}
};
const { wrapper } = getMountedComponent(storeData);
// Act
const result = wrapper.vm.includeMobileFeeInCart;
// Assert
expect(result).toBe(true);
});
test('returns false for priced mobile fee for Deductible without Split Pay', () => {
// Arrange
const storeData = {
order: {
lineItems: {
feeItems: [{ partType: partTypeStrings.MOBILE_FEE, price: 100 }]
},
insuranceCoverage: {
coverageStatus: coverageStatuses.VERIFIED,
coverageType: coverageType.Deductible
}
}
};
const { wrapper } = getMountedComponent(storeData);
// Act
const result = wrapper.vm.includeMobileFeeInCart;
// Assert
expect(result).toBe(false);
});
test('returns false for priced mobile fee for Deductible with Split Pay and isInsurable=true', () => {
// Arrange
const storeData = {
order: {
lineItems: {
feeItems: [{ partType: partTypeStrings.MOBILE_FEE, price: 100, isInsurable: true }]
},
insuranceCoverage: {
coverageStatus: coverageStatuses.VERIFIED,
coverageType: coverageType.Deductible
}
}
};
const { wrapper } = getMountedComponent(storeData, {}, {}, (settingName) => (settingName === experimentSettings.MSR_SPLIT_PAY_ENABLED).toString());
// Act
const result = wrapper.vm.includeMobileFeeInCart;
// Assert
expect(result).toBe(false);
});
test('returns true for priced mobile fee for Deductible with Split Pay and isInsurable=false', () => {
// Arrange
const storeData = {
order: {
lineItems: {
feeItems: [{ partType: partTypeStrings.MOBILE_FEE, price: 100, isInsurable: false }]
},
insuranceCoverage: {
coverageStatus: coverageStatuses.VERIFIED,
coverageType: coverageType.Deductible
}
}
};
const { wrapper } = getMountedComponent(storeData, {}, {}, (settingName) => (settingName === experimentSettings.MSR_SPLIT_PAY_ENABLED).toString());
// Act
const result = wrapper.vm.includeMobileFeeInCart;
// Assert
expect(result).toBe(true);
});
});
});
describe('method', () => {
const dollarAmount = '$84.00';

View file

@ -399,10 +399,6 @@ export default {
return true;
}
if (!this.hasMSRPart) {
return false;
}
const isSplitPayEnabled = this.getSettingValue(experimentSettings.MSR_SPLIT_PAY_ENABLED) === 'true';
if (!isSplitPayEnabled) {
return false;