From 24966fdf643af15b4162d5e5616ace5d225e41ed Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Wed, 11 Sep 2024 12:34:42 -0400 Subject: [PATCH 1/3] Removing stuff --- src/helpers/line-items-helper.js | 11 --- src/helpers/line-items-helper.spec.js | 128 +------------------------- src/store/index.js | 11 +-- 3 files changed, 6 insertions(+), 144 deletions(-) diff --git a/src/helpers/line-items-helper.js b/src/helpers/line-items-helper.js index 143b22c2..9ad4bca3 100644 --- a/src/helpers/line-items-helper.js +++ b/src/helpers/line-items-helper.js @@ -6,14 +6,3 @@ export function getLineItemsFlattened(lineItems) { export function findLineItemIndex(lineItems, partNumber, startIndex = 0) { return lineItems.findIndex((li, index) => index >= startIndex && li.partNumber === partNumber); } - -// replaces partNumber, which is initially NAGS format, with the safelite part number -export function mapSafelitePartNumberToPartNumberIfExists(lineItems) { - return lineItems?.map(({ childParts, ...rest }) => ({ - ...rest, - partNumber: rest.safelitePartNumber || rest.partNumber, - childParts: childParts?.map((part) => ({ - partNumber: part.safelitePartNumber || part.partNumber - })) ?? [] - })) ?? []; -} diff --git a/src/helpers/line-items-helper.spec.js b/src/helpers/line-items-helper.spec.js index e92aa331..c5c2db6c 100644 --- a/src/helpers/line-items-helper.spec.js +++ b/src/helpers/line-items-helper.spec.js @@ -1,132 +1,6 @@ -import { getLineItemsFlattened, mapSafelitePartNumberToPartNumberIfExists } from '@/helpers/line-items-helper'; +import { getLineItemsFlattened } from '@/helpers/line-items-helper'; describe('getLineItemsFlattened', () => { - describe('mapSafelitePartNumberToPartNumberIfExists', () => { - test.each([null, undefined, []])('returns empty list when %p passed', (lineItems) => { - // Arrange - const expected = []; - - // Act - const result = mapSafelitePartNumberToPartNumberIfExists(lineItems); - - // Assert - expect(result).toMatchObject(expected); - }); - test('assigns partNumber to null when safelitePartNumber DNE', () => { - // Arrange - const lineItems = [ - { - apple: 'a', - partNumber: 111 - } - ]; - const expected = [ - { - apple: 'a', - partNumber: undefined, - childParts: [] - } - ]; - - // Act - const result = mapSafelitePartNumberToPartNumberIfExists(lineItems); - - // Assert - expect(result).toMatchObject(expected); - }); - test('assigns partNumber as expected when multiple line items passed', () => { - // Arrange - const lineItems = [ - { - apple: 'a', - banana: 'b', - partNumber: 111, - safelitePartNumber: 222, - childParts: [ - { - partNumber: 333, - safelitePartNumber: 444 - }, - { - partNumber: 555, - safelitePartNumber: 666 - } - ] - }, - { - apple: 'apple', - banana: 'banana', - partNumber: 123, - safelitePartNumber: 321 - } - ]; - const expected = [ - { - apple: 'a', - banana: 'b', - partNumber: 222, - childParts: [ - { - partNumber: 444 - }, - { - partNumber: 666 - } - ] - }, - { - apple: 'apple', - banana: 'banana', - partNumber: 321, - childParts: [] - } - ]; - - // Act - const result = mapSafelitePartNumberToPartNumberIfExists(lineItems); - - // Assert - expect(result).toMatchObject(expected); - }); - test.only('returns partNumber when no safelitePartNumber', () => { - // Arrange - const lineItems = [ - { - apple: 'a', - partNumber: 111, - childParts: [ - { - partNumber: 333 - }, - { - partNumber: 555, - safelitePartNumber: 666 - } - ] - } - ]; - const expected = [ - { - apple: 'a', - partNumber: 111, - childParts: [ - { - partNumber: 333 - }, - { - partNumber: 666 - } - ] - } - ]; - - // Act - const result = mapSafelitePartNumberToPartNumberIfExists(lineItems); - - // Assert - expect(result).toMatchObject(expected); - }); - }); describe('getLineItemsFlattened', () => { it('Returns empty array when null is passed', () => { // Arrange diff --git a/src/store/index.js b/src/store/index.js index ef16393a..7a8d0500 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -24,7 +24,7 @@ import partTypeStrings from '@/constants/part-type-strings'; import bailoutMessage from '@/constants/bailoutMessage'; import bailoutCode from '@/constants/bailoutCode'; import partNumberStrings from '@/constants/part-number-strings'; -import { findLineItemIndex, getLineItemsFlattened, mapSafelitePartNumberToPartNumberIfExists } from '@/helpers/line-items-helper'; +import { findLineItemIndex, getLineItemsFlattened } from '@/helpers/line-items-helper'; import { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString, getTaxLineItemQueryString } from '@/helpers/querystring-helper'; import coverageType from '@/constants/coverage-type'; import { getExperimentSettingValue, getFeatureTogglesQueryString } from '@/helpers/experiment-helper'; @@ -1082,7 +1082,6 @@ export const useMainStore = defineStore({ // NOTE: The endpoint requires that safelite part numbers be used!! async getITACPriceOrderItems(availableLineItems) { const { policy, vehicle, contactInfo, serviceLocation, insuranceCoverage } = this.order; - const lineItemsUsingSafelitePartNumber = mapSafelitePartNumberToPartNumberIfExists(availableLineItems); const response = await globalMethods .callHttpClient({ method: endpoints.GetITACPriceOrderItems.method, @@ -1092,7 +1091,7 @@ export const useMainStore = defineStore({ ReferralNumber: this.order.referralNumber, ReferralSequenceNumber: this.order.referralSequenceNumber, ReferralDate: `${this.order.referralDate}Z`, - lineItems: getLineItemsFlattened(lineItemsUsingSafelitePartNumber), + lineItems: getLineItemsFlattened(availableLineItems), ServerData: this.order.lineItems.serverData, ServiceZipCode: serviceLocation.zipCode, Customer: { @@ -1145,7 +1144,7 @@ export const useMainStore = defineStore({ } if (lineItems) { - const retAvailableLineItems = addPricesToLineItems(availableLineItems, lineItems, false); + const retAvailableLineItems = addPricesToLineItems(availableLineItems, lineItems); return retAvailableLineItems; } @@ -2770,9 +2769,9 @@ function convertGlassPieceNamingFromApi(glassArray) { } // Note this is used for both the insurance and the itac endpoints, so it needs to deal with safelite or nags part numbers -function addPricesToLineItems(lineItems, pricingLineItems, pricedPartNumberIsNags = true) { +function addPricesToLineItems(lineItems, pricingLineItems) { const partOffset = {}; - const partNumberPropertyToCompare = pricedPartNumberIsNags ? 'partNumber' : 'safelitePartNumber'; + const partNumberPropertyToCompare = 'partNumber'; lineItems.forEach((lineItem) => { if (lineItem.childParts) { From 2842011af612dd5daa2c0936877173431c568b70 Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Wed, 11 Sep 2024 12:42:12 -0400 Subject: [PATCH 2/3] Final reverts --- src/mixins/vehicle-questions-mixin.js | 1 - src/store/index.js | 9 +++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/mixins/vehicle-questions-mixin.js b/src/mixins/vehicle-questions-mixin.js index c5f59540..d60f9cd3 100644 --- a/src/mixins/vehicle-questions-mixin.js +++ b/src/mixins/vehicle-questions-mixin.js @@ -26,7 +26,6 @@ export default { if (singlePart) { reducedGlassParts.push({ partNumber: singlePart.partNumber, - safelitePartNumber: singlePart.safelitePartNumber, description: singlePart.description, color: singlePart.color, partType: singlePart.partType, diff --git a/src/store/index.js b/src/store/index.js index 7a8d0500..e4519ee1 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1079,7 +1079,6 @@ export const useMainStore = defineStore({ return availableLineItems; }, - // NOTE: The endpoint requires that safelite part numbers be used!! async getITACPriceOrderItems(availableLineItems) { const { policy, vehicle, contactInfo, serviceLocation, insuranceCoverage } = this.order; const response = await globalMethods @@ -2768,24 +2767,22 @@ function convertGlassPieceNamingFromApi(glassArray) { return glassArray; } -// Note this is used for both the insurance and the itac endpoints, so it needs to deal with safelite or nags part numbers function addPricesToLineItems(lineItems, pricingLineItems) { const partOffset = {}; - const partNumberPropertyToCompare = 'partNumber'; lineItems.forEach((lineItem) => { if (lineItem.childParts) { addPricesToLineItems(lineItem.childParts, pricingLineItems); } - const partNumberToCompare = lineItem[partNumberPropertyToCompare]; + const { partNumber } = lineItem; - const pricedIndex = findLineItemIndex(pricingLineItems, partNumberToCompare, partOffset[partNumberToCompare] ?? 0); + const pricedIndex = findLineItemIndex(pricingLineItems, partNumber, partOffset[partNumber] ?? 0); if (pricedIndex !== -1) { const pricedLineItem = pricingLineItems[pricedIndex]; lineItem.laborAmount = pricedLineItem.laborAmount; lineItem.sellingPrice = pricedLineItem.sellingPrice; lineItem.kitPrice = pricedLineItem.kitPrice; - partOffset[partNumberToCompare] = pricedIndex + 1; + partOffset[partNumber] = pricedIndex + 1; } }); return lineItems; From 3c0b3b721dea85ba4c642d05d54b976e334b9a34 Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Wed, 11 Sep 2024 13:00:58 -0400 Subject: [PATCH 3/3] Only update itac state if parts were priced --- src/store/index.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index e4519ee1..3aaedefb 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1122,18 +1122,20 @@ export const useMainStore = defineStore({ throw error; }); - const { lineItems, serverData, isItac, primaryBillToNumber } = response.data; + const { lineItems, serverData, isItac, primaryBillToNumber, partsWerePriced } = response.data; if (serverData) { this.order.lineItems.serverData = serverData; } - if (isItac) { - // if the ITAC Pricing API call returns isItac = true then we should switch to ITAC coverage type - this.updateCoverageType(coverageType.ITAC); - } else if (this.isITAC) { - // If the ITAC pricing API call returns isItac = false, and we are currently ITAC in the store then we should switch to deductible coverage type - this.updateCoverageType(coverageType.Deductible); + if (partsWerePriced) { + if (isItac) { + // if the ITAC Pricing API call returns isItac = true then we should switch to ITAC coverage type + this.updateCoverageType(coverageType.ITAC); + } else if (this.isITAC) { + // If the ITAC pricing API call returns isItac = false, and we are currently ITAC in the store then we should switch to deductible coverage type + this.updateCoverageType(coverageType.Deductible); + } } if (primaryBillToNumber && primaryBillToNumber.length !== 0) {