Skip to content

Commit cfc2bc3

Browse files
Group filter parameters (#147)
* Group filter parameters This fixes an API error caused by any other parameter in between filter parameters. Reference: https://forums.developer.ebay.com/questions/14689/error-value-is-required-for-item-filter-listing-ty.html > Error: Value is required for item filter > You're putting sortOrder in between two itemFilter parameters. Put the item filters together, in order. Move sortOrder to a different position. * update expected test results, due to change
1 parent 361b40e commit cfc2bc3

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

src/common-utils/index.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const isString = (value)=>{
1616
* @param {Object} options
1717
*/
1818
function constructAdditionalParams(options){
19-
let params = '';
19+
let params = '', filterParams = '';
2020
let count = 0;
2121
let currencyKey = this ? this.options.globalID : 'EBAY-US';
2222

@@ -38,23 +38,24 @@ function constructAdditionalParams(options){
3838
}
3939
}
4040
else {
41-
params += `itemFilter(${count}).name=${key}&`;
41+
filterParams += `itemFilter(${count}).name=${key}&`;
4242
if (!Array.isArray(value)) {
43-
params += `itemFilter(${count}).value=${value}&`;
43+
filterParams += `itemFilter(${count}).value=${value}&`;
4444
} else {
4545
for (let innerKey in value) {
46-
params += `itemFilter(${count}).value(${innerKey})=${value[innerKey]}&`;
46+
filterParams += `itemFilter(${count}).value(${innerKey})=${value[innerKey]}&`;
4747
}
4848
}
4949
if(key === "MinPrice" || key === "MaxPrice"){
50-
params += `itemFilter(${count}).paramName=Currency&
50+
filterParams += `itemFilter(${count}).paramName=Currency&
5151
itemFilter(${count}).paramValue=${currency[currencyKey]}&`;
5252
}
5353

5454
count++;
5555
}
5656

5757
}
58+
params += filterParams;
5859
// replace extra space
5960
params = params.replace(/\s/g, '');
6061
return params.substring(0, params.length - 1);

test/common.test.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ describe('test common util methods', () => {
5656
});
5757

5858
it('test constructAdditionalParams with additional params', () => {
59-
const expectedParam = 'keywords=iphone%206s&categoryId=111&sortOrder=PricePlusShippingLowest&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true&storeName=addidas%20store';
60-
const expectedPaginationParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true&paginationInput.entriesPerPage=2';
59+
const expectedParam = 'keywords=iphone%206s&categoryId=111&sortOrder=PricePlusShippingLowest&storeName=addidas%20store&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true';
60+
const expectedPaginationParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest&paginationInput.entriesPerPage=2&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true';
6161
const options = {
6262
keywords: 'iphone 6s',
6363
categoryId: '111',
@@ -79,7 +79,7 @@ describe('test common util methods', () => {
7979
});
8080

8181
it('test constructAdditionalParams with Maxprice and Minprice params', () => {
82-
const expectedParam = 'keywords=iphone%206s&categoryId=111&sortOrder=PricePlusShippingLowest&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true&storeName=addidas%20store&itemFilter(2).name=MinPrice&itemFilter(2).value=100.00&itemFilter(2).paramName=Currency&itemFilter(2).paramValue=USD&itemFilter(3).name=MaxPrice&itemFilter(3).value=200.00&itemFilter(3).paramName=Currency&itemFilter(3).paramValue=USD';
82+
const expectedParam = 'keywords=iphone%206s&categoryId=111&sortOrder=PricePlusShippingLowest&storeName=addidas%20store&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true&itemFilter(2).name=MinPrice&itemFilter(2).value=100.00&itemFilter(2).paramName=Currency&itemFilter(2).paramValue=USD&itemFilter(3).name=MaxPrice&itemFilter(3).value=200.00&itemFilter(3).paramName=Currency&itemFilter(3).paramValue=USD';
8383
const options = {
8484
keywords: 'iphone 6s',
8585
categoryId: '111',
@@ -94,7 +94,7 @@ describe('test common util methods', () => {
9494
});
9595

9696
it('test constructAdditionalParams with Maxprice and Minprice params with diff site', () => {
97-
const expectedParam = 'keywords=iphone%206s&categoryId=111&sortOrder=PricePlusShippingLowest&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true&storeName=addidas%20store&itemFilter(2).name=MinPrice&itemFilter(2).value=100.00&itemFilter(2).paramName=Currency&itemFilter(2).paramValue=GBP&itemFilter(3).name=MaxPrice&itemFilter(3).value=200.00&itemFilter(3).paramName=Currency&itemFilter(3).paramValue=GBP';
97+
const expectedParam = 'keywords=iphone%206s&categoryId=111&sortOrder=PricePlusShippingLowest&storeName=addidas%20store&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true&itemFilter(2).name=MinPrice&itemFilter(2).value=100.00&itemFilter(2).paramName=Currency&itemFilter(2).paramValue=GBP&itemFilter(3).name=MaxPrice&itemFilter(3).value=200.00&itemFilter(3).paramName=Currency&itemFilter(3).paramValue=GBP';
9898
const options = {
9999
keywords: 'iphone 6s',
100100
categoryId: '111',

0 commit comments

Comments
 (0)