Merge pull request #699 from Safelite/feature/richardson/SSR-1207

get sales tax from tax api
This commit is contained in:
brich1212safe 2024-05-09 16:33:54 -04:00 committed by GitHub
commit 6a5bda1829
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 46 additions and 3 deletions

View file

@ -28,3 +28,12 @@ export function getLineItemQueryString(lineItems, parameterName) {
`${parameterName}[${index}].partNumber=${lineItem.partNumber}`).join('&');
return queryString.length !== 0 ? `&${queryString}` : '';
}
export function getTaxLineItemQueryString(lineItems, parameterName) {
const queryString = getLineItemsFlattened(lineItems).map((lineItem, index) =>
`${parameterName}[${index}].partNumber=${lineItem.partNumber}`
+ `&${parameterName}[${index}].laborAmount=${lineItem.laborAmount}`
+ `&${parameterName}[${index}].sellingPrice=${lineItem.sellingPrice}`
+ `&${parameterName}[${index}].kitPrice=${lineItem.kitPrice}`).join('&');
return queryString.length !== 0 ? `&${queryString}` : '';
}

View file

@ -1,4 +1,8 @@
import { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString } from '@/helpers/querystring-helper';
import {
buildQueryStringParameterFromArrayOfComplexObjects,
getLineItemQueryString,
getTaxLineItemQueryString
} from '@/helpers/querystring-helper';
describe('querystring-helper', () => {
describe('buildQueryStringParameterFromArrayOfComplexObjects', () => {
@ -44,4 +48,34 @@ describe('querystring-helper', () => {
expect(result).toBe('&param[0].partNumber=a&param[1].partNumber=b&param[2].partNumber=c&param[3].partNumber=d&param[4].partNumber=e');
});
});
describe('getTaxLineItemQueryString', () => {
it('returns empty query string from empty line items', () => {
// Arrange
const lineItems = [];
// Act
const result = getTaxLineItemQueryString(lineItems, 'param');
// Assert
expect(result).toBe('');
});
it('returns a query string from line items', () => {
// Arrange
const a = { partNumber: 'a', laborAmount: 0, sellingPrice: 10, kitPrice: 10 };
const c = { partNumber: 'c', laborAmount: 5, sellingPrice: 5, kitPrice: 5 };
const b = { partNumber: 'b', laborAmount: 10, sellingPrice: 10, kitPrice: 0, childParts: [c] };
const d = { partNumber: 'd', laborAmount: 10, sellingPrice: 10, kitPrice: 10 };
const lineItems = [a, b, d];
// Act
const result = getTaxLineItemQueryString(lineItems, 'param');
// Assert
// eslint-disable-next-line max-len
expect(result).toBe('&param[0].partNumber=a&param[0].laborAmount=0&param[0].sellingPrice=10&param[0].kitPrice=10&param[1].partNumber=b&param[1].laborAmount=10&param[1].sellingPrice=10&param[1].kitPrice=0&param[2].partNumber=c&param[2].laborAmount=5&param[2].sellingPrice=5&param[2].kitPrice=5&param[3].partNumber=d&param[3].laborAmount=10&param[3].sellingPrice=10&param[3].kitPrice=10');
});
});
});

View file

@ -26,7 +26,7 @@ import bailoutMessage from '@/constants/bailoutMessage';
import bailoutCode from '@/constants/bailoutCode';
import partNumberStrings from '@/constants/part-number-strings';
import { getLineItemsFlattened } from '@/helpers/line-items-helper';
import { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString } from '@/helpers/querystring-helper';
import { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString, getTaxLineItemQueryString } from '@/helpers/querystring-helper';
const storeId = 'main';
@ -2021,7 +2021,7 @@ export const useMainStore = defineStore({
const serviceLocationState = serviceLocation.state;
const serviceLocationZipCode = serviceLocation.zipCode;
const lineItemsQueryString = getLineItemQueryString(pricedLineItems, 'lineItems');
const lineItemsQueryString = getTaxLineItemQueryString(pricedLineItems, 'lineItems');
let queryString = '';
if (appointmentType === AppointmentTypeStrings.MOBILE