Merge pull request #828 from Safelite/bug/brydon/SSR-1384.3

Fixing supporting items does not have safelitePartNumber
This commit is contained in:
michaela-brydon-safelite 2024-08-28 14:54:49 -04:00 committed by GitHub
commit 0ef22657fb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 53 additions and 15 deletions

View file

@ -8,12 +8,12 @@ export function findLineItemIndex(lineItems, partNumber, startIndex = 0) {
} }
// replaces partNumber, which is initially NAGS format, with the safelite part number // replaces partNumber, which is initially NAGS format, with the safelite part number
export function mapSafelitePartNumberToPartNumber(lineItems) { export function mapSafelitePartNumberToPartNumberIfExists(lineItems) {
return lineItems?.map(({ safelitePartNumber, childParts, ...rest }) => ({ return lineItems?.map(({ childParts, ...rest }) => ({
...rest, ...rest,
partNumber: safelitePartNumber, partNumber: rest.safelitePartNumber || rest.partNumber,
childParts: childParts?.map((part) => ({ childParts: childParts?.map((part) => ({
partNumber: part.safelitePartNumber partNumber: part.safelitePartNumber || part.partNumber
})) ?? [] })) ?? []
})) ?? []; })) ?? [];
} }

View file

@ -1,13 +1,13 @@
import { getLineItemsFlattened, mapSafelitePartNumberToPartNumber } from '@/helpers/line-items-helper'; import { getLineItemsFlattened, mapSafelitePartNumberToPartNumberIfExists } from '@/helpers/line-items-helper';
describe('getLineItemsFlattened', () => { describe('getLineItemsFlattened', () => {
describe('mapSafelitePartNumberToPartNumber', () => { describe('mapSafelitePartNumberToPartNumberIfExists', () => {
test.each([null, undefined, []])('returns empty list when %p passed', (lineItems) => { test.each([null, undefined, []])('returns empty list when %p passed', (lineItems) => {
// Arrange // Arrange
const expected = []; const expected = [];
// Act // Act
const result = mapSafelitePartNumberToPartNumber(lineItems); const result = mapSafelitePartNumberToPartNumberIfExists(lineItems);
// Assert // Assert
expect(result).toMatchObject(expected); expect(result).toMatchObject(expected);
@ -29,7 +29,7 @@ describe('getLineItemsFlattened', () => {
]; ];
// Act // Act
const result = mapSafelitePartNumberToPartNumber(lineItems); const result = mapSafelitePartNumberToPartNumberIfExists(lineItems);
// Assert // Assert
expect(result).toMatchObject(expected); expect(result).toMatchObject(expected);
@ -83,7 +83,45 @@ describe('getLineItemsFlattened', () => {
]; ];
// Act // Act
const result = mapSafelitePartNumberToPartNumber(lineItems); 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 // Assert
expect(result).toMatchObject(expected); expect(result).toMatchObject(expected);
@ -97,7 +135,7 @@ describe('getLineItemsFlattened', () => {
const result = getLineItemsFlattened(lineItems); const result = getLineItemsFlattened(lineItems);
// Assert // Assert
expect(result).not.null; expect(result).not.toBeNull();
expect(result).toStrictEqual([]); expect(result).toStrictEqual([]);
}); });
@ -108,7 +146,7 @@ describe('getLineItemsFlattened', () => {
const result = getLineItemsFlattened(lineItems); const result = getLineItemsFlattened(lineItems);
// Assert // Assert
expect(result).not.null; expect(result).not.toBeNull();
expect(result).toStrictEqual([]); expect(result).toStrictEqual([]);
}); });
@ -119,7 +157,7 @@ describe('getLineItemsFlattened', () => {
const result = getLineItemsFlattened(lineItems); const result = getLineItemsFlattened(lineItems);
// Assert // Assert
expect(result).not.null; expect(result).not.toBeNull();
expect(result).toStrictEqual(lineItems); expect(result).toStrictEqual(lineItems);
}); });
@ -136,7 +174,7 @@ describe('getLineItemsFlattened', () => {
const result = getLineItemsFlattened(lineItems); const result = getLineItemsFlattened(lineItems);
// Assert // Assert
expect(result).not.null; expect(result).not.toBeNull();
expect(result).toStrictEqual([a, b, c, d, e]); expect(result).toStrictEqual([a, b, c, d, e]);
}); });
}); });

View file

@ -24,7 +24,7 @@ import partTypeStrings from '@/constants/part-type-strings';
import bailoutMessage from '@/constants/bailoutMessage'; import bailoutMessage from '@/constants/bailoutMessage';
import bailoutCode from '@/constants/bailoutCode'; import bailoutCode from '@/constants/bailoutCode';
import partNumberStrings from '@/constants/part-number-strings'; import partNumberStrings from '@/constants/part-number-strings';
import { findLineItemIndex, getLineItemsFlattened, mapSafelitePartNumberToPartNumber } from '@/helpers/line-items-helper'; import { findLineItemIndex, getLineItemsFlattened, mapSafelitePartNumberToPartNumberIfExists } from '@/helpers/line-items-helper';
import { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString, getTaxLineItemQueryString } from '@/helpers/querystring-helper'; import { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString, getTaxLineItemQueryString } from '@/helpers/querystring-helper';
import coverageType from '@/constants/coverage-type'; import coverageType from '@/constants/coverage-type';
import { getExperimentSettingValue, getFeatureTogglesQueryString } from '@/helpers/experiment-helper'; import { getExperimentSettingValue, getFeatureTogglesQueryString } from '@/helpers/experiment-helper';
@ -1082,7 +1082,7 @@ export const useMainStore = defineStore({
// NOTE: The endpoint requires that safelite part numbers be used!! // NOTE: The endpoint requires that safelite part numbers be used!!
async getITACPriceOrderItems(availableLineItems) { async getITACPriceOrderItems(availableLineItems) {
const { policy, vehicle, contactInfo, serviceLocation, insuranceCoverage } = this.order; const { policy, vehicle, contactInfo, serviceLocation, insuranceCoverage } = this.order;
const lineItemsUsingSafelitePartNumber = mapSafelitePartNumberToPartNumber(availableLineItems); const lineItemsUsingSafelitePartNumber = mapSafelitePartNumberToPartNumberIfExists(availableLineItems);
const response = await globalMethods const response = await globalMethods
.callHttpClient({ .callHttpClient({
method: endpoints.GetITACPriceOrderItems.method, method: endpoints.GetITACPriceOrderItems.method,