From 43d17de692a09eaa02cde24263b92ba33d58af5a Mon Sep 17 00:00:00 2001 From: Marko Novak Date: Wed, 27 Apr 2016 23:25:38 +0200 Subject: [PATCH] * Implemented the creation of categories. --- lib/categories.js | 4 +++ lib/rest_client.js | 26 ++++++++----------- .../categories.integration.test.js | 19 +++++++++++++- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/lib/categories.js b/lib/categories.js index b2e9a16..ccf2ef6 100644 --- a/lib/categories.js +++ b/lib/categories.js @@ -4,6 +4,10 @@ module.exports = function (restClient) { module.list = function () { return restClient.get('/categories'); } + + module.create = function (newCategory) { + return restClient.post('/categories', newCategory); + } return module; } diff --git a/lib/rest_client.js b/lib/rest_client.js index 2b75be3..88a1972 100644 --- a/lib/rest_client.js +++ b/lib/rest_client.js @@ -21,21 +21,22 @@ module.exports.RestClient = function (options) { secret: options.accessTokenSecret }; - function api_call(request_data) { + function apiCall(request_data) { logger.debug('Calling API endpoint: ' + request_data.method + ' ' + request_data.url); return new Promise(function (resolve, reject) { request({ url: request_data.url, method: request_data.method, headers: oauth.toHeader(oauth.authorize(request_data, token)), - form: request_data.data, + json: true, + body: request_data.body, }, function(error, response, body) { logger.debug('Response received.'); if (error) { logger.error('Error occured: ' + error); reject(error); } - resolve(JSON.parse(body)); + resolve(body); }); }); } @@ -43,27 +44,22 @@ module.exports.RestClient = function (options) { instance.get = function (resourceUrl) { var request_data = { url: createUrl(resourceUrl), - method: 'GET', - data: { - status: 'Hello Ladies + Gentlemen, a signed OAuth request!' - } + method: 'GET' }; - return api_call(request_data); + return apiCall(request_data); } function createUrl(resourceUrl) { return servelrUrl + '/' + apiVersion + resourceUrl; } - instance.post = function (resourceUrl) { + instance.post = function (resourceUrl, data) { var request_data = { url: createUrl(resourceUrl), method: 'POST', - data: { - status: 'Hello Ladies + Gentlemen, a signed OAuth request!' - } + body: data }; - return api_call(request_data); + return apiCall(request_data); } instance.put = function (resourceUrl) { @@ -74,7 +70,7 @@ module.exports.RestClient = function (options) { status: 'Hello Ladies + Gentlemen, a signed OAuth request!' } }; - return api_call(request_data); + return apiCall(request_data); } instance.delete = function (resourceUrl) { @@ -85,7 +81,7 @@ module.exports.RestClient = function (options) { status: 'Hello Ladies + Gentlemen, a signed OAuth request!' } }; - return api_call(request_data); + return apiCall(request_data); } return instance; diff --git a/test/integration/categories.integration.test.js b/test/integration/categories.integration.test.js index e03cbca..b5e82c0 100644 --- a/test/integration/categories.integration.test.js +++ b/test/integration/categories.integration.test.js @@ -9,10 +9,27 @@ suite('categories tests', function () { var client = Magento2Client(credentials); client.categories.list() .then(function (categories) { - assert.equal(categories, ''); + assert.equal(categories.parent_id, 1); }) .then(done, done); }); + + test('create category test', function (done) { + var client = Magento2Client(credentials); + var newCategory = { + category: { + parentId: 3, + name: 'Category from integratin test', + isActive: true, + includeInMenu: true, + } + }; + client.categories.create(newCategory) + .then(function (result) { + assert.equal(result.parent_id, 3); + }) + .then(done, done); + }) });