Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix encodeURI issue
  • Loading branch information
pajaydev committed May 23, 2020
commit a4ac850cf3b14969b23ab92701985918a6b8be6b
14 changes: 1 addition & 13 deletions src/finding.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,8 @@ const findItemsByKeywords = function (options) {
throw new Error('INVALID_REQUEST_PARMS --> Keyword is missing, Keyword is required');
}
this.options.operationName = FIND_ITEMS_BY_KEYWORD;
this.options.param = 'keywords';
// support only keyword string.
if (!options.keywords) options = { keywords: options };
options.keywords = encodeURIComponent(options.keywords);
this.options.additionalParam = utils.constructAdditionalParams(options);
const url = urlObject.buildSearchUrl(this.options);
return getRequest(url).then((data) => {
Expand Down Expand Up @@ -46,9 +44,6 @@ const findItemsByCategory = function (categoryID) {
const findCompletedItems = function (options) {
if (!options) throw new Error('INVALID_REQUEST_PARMS --> Keyword or category ID are required.');
if (!options.keywords && !options.categoryId) throw new Error('Keyword or category ID are required.');
if (options.keywords) {
options.keywords = encodeURIComponent(options.keywords);
}
this.options.operationName = FIND_COMPLETED_ITEMS;
this.options.additionalParam = utils.constructAdditionalParams(options);
const url = urlObject.buildSearchUrl(this.options);
Expand All @@ -67,13 +62,9 @@ const findCompletedItems = function (options) {
*/
const findItemsAdvanced = function (options) {
if (!options) throw new Error('INVALID_REQUEST_PARMS --> check here for input fields https://developer.ebay.com/DevZone/finding/CallRef/findItemsAdvanced.html#Input');
if (options.keywords) {
options.keywords = encodeURIComponent(options.keywords);
}
this.options.operationName = FIND_ITEMS_ADV;
this.options.additionalParam = utils.constructAdditionalParams(options);
const url = urlObject.buildSearchUrl(this.options);
console.log(url);
return getRequest(url).then((data) => {
return JSON.parse(data).findItemsAdvancedResponse;
}, console.error // eslint-disable-line no-console
Expand All @@ -100,9 +91,7 @@ const findItemsByProduct = function (options) {
let type = options.type ? options.type : 'ReferenceID';
this.options.operationName = 'findItemsByProduct';
this.options.additionalParam = utils.constructAdditionalParams(options);
let url = urlObject.buildSearchUrl(this.options);
url = `${url}&productId.@type=${type}`;
console.log(url);
let url = `${urlObject.buildSearchUrl(this.options)}&productId.@type=${type}`;
return getRequest(url).then((data) => {
return JSON.parse(data).findItemsByProductResponse;

Expand All @@ -115,7 +104,6 @@ const findItemsIneBayStores = function (options) {
if (!options.storeName) throw new Error('INVALID_REQUEST_PARMS --> Store name is required.');
this.options.operationName = FIND_EBAY_STORES;
this.options.additionalParam = utils.constructAdditionalParams(options);
console.log(urlObject.buildSearchUrl(this.options));
return getRequest(urlObject.buildSearchUrl(this.options)).then((data) => {
return JSON.parse(data).findItemsIneBayStoresResponse;

Expand Down
63 changes: 62 additions & 1 deletion test/common.test.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';
const expect = require('chai').expect;
const should = require('chai').should();
const { parseObj } = require('../src/common-utils/index');
const { constructAdditionalParams } = require('../src/common-utils/index');

describe('test common util methods', () => {
it('test parse object to query params', () => {
Expand All @@ -16,4 +16,65 @@ describe('test common util methods', () => {
expect(parseObj(emptyOptions)).to.be.equal('');
expect(parseObj(options, 'userName=ebay')).to.be.equal(`userName=ebay${expectedParam}`);
});

describe('test constructAdditionalParams', () => {
it('test constructAdditionalParams with required params', () => {
let expectedParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest';
const options = {
keywords: 'iphone',
categoryId: '111',
sortOrder: 'PricePlusShippingLowest'
};
const emptyOptions = {};
expect(constructAdditionalParams(options)).to.be.equal(expectedParam);
expect(constructAdditionalParams(emptyOptions)).to.be.equal('');
});

it('test constructAdditionalParams with affiliate params', () => {
let expectedParamWithAffiliate = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest&affiliate.trackingId=1234567899&affiliate.networkId=123';
let expectedParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest';
const options = {
keywords: 'iphone',
categoryId: '111',
sortOrder: 'PricePlusShippingLowest',
affiliate: {
trackingId: 1234567899,
networkId: 123
}
};

const optionsWithNoAffiliate = {
keywords: 'iphone',
categoryId: '111',
sortOrder: 'PricePlusShippingLowest'
};
const emptyOptions = {};
expect(constructAdditionalParams(options)).to.be.equal(expectedParamWithAffiliate);
expect(constructAdditionalParams(optionsWithNoAffiliate)).to.be.equal(expectedParam);
expect(constructAdditionalParams(emptyOptions)).to.be.equal('');
});

it('test constructAdditionalParams with additional params', () => {
let 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';
let 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';
const options = {
keywords: 'iphone 6s',
categoryId: '111',
sortOrder: 'PricePlusShippingLowest',
Condition: 3000,
SoldItemsOnly: true,
storeName: 'addidas store'
};
const optionsWithPagination = {
keywords: 'iphone',
categoryId: '111',
sortOrder: 'PricePlusShippingLowest',
Condition: 3000,
SoldItemsOnly: true,
entriesPerPage: 2
};
expect(constructAdditionalParams(options)).to.be.equal(expectedParam);
expect(constructAdditionalParams(optionsWithPagination)).to.be.equal(expectedPaginationParam);
});
});
});
64 changes: 1 addition & 63 deletions test/finding.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
'use strict';
const expect = require('chai').expect;
const should = require('chai').should();
const nock = require('nock');
const Ebay = require('../src/index');
const { constructAdditionalParams } = require('../src/common-utils/index');
const nockFindingApi = nock('https://svcs.ebay.com/');

describe('test ebay finding Api', () => {
Expand All @@ -24,66 +22,6 @@ describe('test ebay finding Api', () => {
});
});

describe('test constructAdditionalParams', () => {
it('test constructAdditionalParams with required params', () => {
let expectedParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest';
const options = {
keywords: 'iphone',
categoryId: '111',
sortOrder: 'PricePlusShippingLowest'
};
const emptyOptions = {};
expect(constructAdditionalParams(options)).to.be.equal(expectedParam);
expect(constructAdditionalParams(emptyOptions)).to.be.equal('');
});

it('test constructAdditionalParams with affiliate params', () => {
let expectedParamWithAffiliate = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest&affiliate.trackingId=1234567899&affiliate.networkId=123';
let expectedParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest';
const options = {
keywords: 'iphone',
categoryId: '111',
sortOrder: 'PricePlusShippingLowest',
affiliate: {
trackingId: 1234567899,
networkId: 123
}
};

const optionsWithNoAffiliate = {
keywords: 'iphone',
categoryId: '111',
sortOrder: 'PricePlusShippingLowest'
};
const emptyOptions = {};
expect(constructAdditionalParams(options)).to.be.equal(expectedParamWithAffiliate);
expect(constructAdditionalParams(optionsWithNoAffiliate)).to.be.equal(expectedParam);
expect(constructAdditionalParams(emptyOptions)).to.be.equal('');
});

it('test constructAdditionalParams with additional params', () => {
let expectedParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true';
let 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';
const options = {
keywords: 'iphone',
categoryId: '111',
sortOrder: 'PricePlusShippingLowest',
Condition: 3000,
SoldItemsOnly: true
};
const optionsWithPagination = {
keywords: 'iphone',
categoryId: '111',
sortOrder: 'PricePlusShippingLowest',
Condition: 3000,
SoldItemsOnly: true,
entriesPerPage: 2
};
expect(constructAdditionalParams(options)).to.be.equal(expectedParam);
expect(constructAdditionalParams(optionsWithPagination)).to.be.equal(expectedPaginationParam);
});
});

describe('test all get apis', () => {
it('test findItemsAdvanced', () => {
let ebay = new Ebay({
Expand All @@ -98,7 +36,7 @@ describe('test ebay finding Api', () => {
}).then((data) => {
expect(data.findItemsAdvancedResponse).not.null;
}, (error) => {
console.log(error);
console.log(error); // eslint-disable-line no-console
});
});
});
Expand Down