adding tests

This commit is contained in:
Michaela Brydon 2024-08-23 13:41:08 -04:00
parent 328aec39bd
commit c18b6bf8b9
3 changed files with 91 additions and 56 deletions

View file

@ -6,3 +6,14 @@ 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 mapSafelitePartNumberToPartNumber(lineItems) {
return lineItems?.map(({ safelitePartNumber, childParts, ...rest }) => ({
...rest,
partNumber: safelitePartNumber,
childParts: childParts?.map((part) => ({
partNumber: part.safelitePartNumber
})) ?? []
})) ?? [];
}

View file

@ -1,56 +1,93 @@
import { getLineItemsFlattened } from '@/helpers/line-items-helper';
import { getLineItemsFlattened, mapSafelitePartNumberToPartNumber } from '@/helpers/line-items-helper';
describe('getLineItemsFlattened', () => {
function mapLineItemsForGetITACPrice(lineItems) {
console.log(`before: ${JSON.stringify(lineItems)}`);
const x = lineItems.map(({ safelitePartNumber, childParts, ...rest }) => ({
...rest,
partNumber: safelitePartNumber,
childParts: childParts.map((part) => ({
partNumber: part.safelitePartNumber
}))
}));
console.log(`after: ${JSON.stringify(x)}`);
return x;
}
describe.only('test', () => {
// Arrange
const lineItems = [{
apple: 'a',
banana: 'b',
partNumber: 111,
safelitePartNumber: 222,
childParts: [
describe('mapSafelitePartNumberToPartNumber', () => {
test.each([null, undefined, []])('returns empty list when %p passed', (lineItems) => {
// Arrange
const expected = [];
// Act
const result = mapSafelitePartNumberToPartNumber(lineItems);
// Assert
expect(result).toMatchObject(expected);
});
test('assigns partNumber to null when safelitePartNumber DNE', () => {
// Arrange
const lineItems = [
{
partNumber: 333,
safelitePartNumber: 444
apple: 'a',
partNumber: 111
}
];
const expected = [
{
apple: 'a',
partNumber: undefined,
childParts: []
}
];
// Act
const result = mapSafelitePartNumberToPartNumber(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
}
]
},
{
partNumber: 555,
safelitePartNumber: 666
apple: 'apple',
banana: 'banana',
partNumber: 123,
safelitePartNumber: 321
}
]
}];
const expected = [{
apple: 'a',
banana: 'b',
partNumber: 222,
childParts: [
];
const expected = [
{
partNumber: 444
apple: 'a',
banana: 'b',
partNumber: 222,
childParts: [
{
partNumber: 444
},
{
partNumber: 666
}
]
},
{
partNumber: 666
apple: 'apple',
banana: 'banana',
partNumber: 321,
childParts: []
}
]
}];
];
// Act
const result = mapLineItemsForGetITACPrice(lineItems);
console.log(JSON.stringify(result));
// Act
const result = mapSafelitePartNumberToPartNumber(lineItems);
// Assert
expect(result).toMatchObject(expected);
// Assert
expect(result).toMatchObject(expected);
});
});
describe('getLineItemsFlattened', () => {
it('Returns empty array when null is passed', () => {

View file

@ -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 } from '@/helpers/line-items-helper';
import { findLineItemIndex, getLineItemsFlattened, mapSafelitePartNumberToPartNumber } 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';
@ -1076,23 +1076,10 @@ export const useMainStore = defineStore({
return availableLineItems;
},
// TODO move to helper
// replaces partNumber, which is NAGS with the safelite part number
mapLineItemsForGetITACPrice(lineItems) {
const x = lineItems.map(({ safelitePartNumber, childParts, ...rest }) => ({
...rest,
partNumber: safelitePartNumber,
childParts: childParts.map((part) => ({
partNumber: part.safelitePartNumber
}))
}));
return x;
},
// NOTE: The endpoint requires that safelite part numbers be used!!
async getITACPriceOrderItems(availableLineItems) {
const { policy, vehicle, contactInfo, serviceLocation, insuranceCoverage } = this.order;
const lineItemsUsingSafelitePartNumber = this.mapLineItemsForGetITACPrice(availableLineItems);
const lineItemsUsingSafelitePartNumber = mapSafelitePartNumberToPartNumber(availableLineItems);
const response = await globalMethods
.callHttpClient({
method: endpoints.GetITACPriceOrderItems.method,