79 lines
3 KiB
JavaScript
79 lines
3 KiB
JavaScript
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
|
|
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
|
|
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');
|
|
});
|
|
});
|
|
});
|