Fixing supporting items does not have safelitePartNumbre
This commit is contained in:
parent
81cfcd9120
commit
0779e8fc6c
3 changed files with 55 additions and 15 deletions
|
|
@ -8,12 +8,14 @@ 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 }) => ({
|
const x = 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
|
||||||
})) ?? []
|
})) ?? []
|
||||||
})) ?? [];
|
})) ?? [];
|
||||||
|
console.log(JSON.stringify(x));
|
||||||
|
return x;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue