import { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString, getTaxLineItemQueryString } from '@/helpers/querystring-helper'; describe('querystring-helper', () => { describe('buildQueryStringParameterFromArrayOfComplexObjects', () => { it('returns a query string from a complex object', () => { // Arrange const object = [{ a: 'a', val: 24 }, { a: 'b', val: '52' }]; // Act const result = buildQueryStringParameterFromArrayOfComplexObjects(object, 'param'); // Assert expect(result).toBe('param[0].a=a¶m[0].val=24¶m[1].a=b¶m[1].val=52'); }); }); describe('getLineItemQueryString', () => { it('returns empty query string from empty line items', () => { // Arrange const lineItems = []; // Act const result = getLineItemQueryString(lineItems, 'param'); // Assert expect(result).toBe(''); }); it('returns a query string from line items', () => { // Arrange const a = { partNumber: 'a' }; const c = { partNumber: 'c' }; const d = { partNumber: 'd' }; const b = { partNumber: 'b', childParts: [c, d] }; const e = { partNumber: 'e' }; const lineItems = [a, b, e]; // Act const result = getLineItemQueryString(lineItems, 'param'); // Assert // eslint-disable-next-line max-len expect(result).toBe('¶m[0].partNumber=a¶m[1].partNumber=b¶m[2].partNumber=c¶m[3].partNumber=d¶m[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('¶m[0].partNumber=a¶m[0].laborAmount=0¶m[0].sellingPrice=10¶m[0].kitPrice=10¶m[1].partNumber=b¶m[1].laborAmount=10¶m[1].sellingPrice=10¶m[1].kitPrice=0¶m[2].partNumber=c¶m[2].laborAmount=5¶m[2].sellingPrice=5¶m[2].kitPrice=5¶m[3].partNumber=d¶m[3].laborAmount=10¶m[3].sellingPrice=10¶m[3].kitPrice=10'); }); }); });