From cedd8c830ca3010eff9ecf049b2288f1383ddefa Mon Sep 17 00:00:00 2001 From: Igor Borysyuk Date: Tue, 27 Oct 2015 14:16:06 +0200 Subject: [PATCH 1/2] superagent has been replaced by isomorphic-fetch --- .gitignore | 3 +++ index.js | 38 +++++++++++++++----------------------- package.json | 11 ++++++----- readme.md | 3 +++ test.js | 41 ++++++++++++++--------------------------- 5 files changed, 41 insertions(+), 55 deletions(-) diff --git a/.gitignore b/.gitignore index 123ae94..dde8c5e 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,9 @@ lib-cov # Coverage directory used by tools like istanbul coverage +#WebShtorm ide +.idea + # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) .grunt diff --git a/index.js b/index.js index 97a08bc..d8b9daf 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,8 @@ var _ = require('underscore'); var csv = require('csv'); var Promise = require('bluebird'); -var request = require('superagent'); +require('es6-promise').polyfill(); +require('isomorphic-fetch'); var config = { backend: 'https://rawgit.com/dataprotocols/registry/master/registry.csv', @@ -10,46 +11,37 @@ var config = { function getCSVEndpoint(endpoint, objectwise) { - /** * Return data from an endpoint that is parsable as CSV */ return new Promise(function(resolve, reject) { - - request - .get(endpoint) - .end(function(error, response) { - - if (error) - reject('Failed to download registry file: ' + error); - - csv.parse(response.text, {columns: objectwise}, function(error, output) { - - if (error) - reject('Failed to parse registry file: ' + error); - - resolve(output); - + fetch(endpoint). + then(function(response) { + if (response.status != 200) { + reject("Bad response from server"); + } + return response.text(); + }).then(function(text){ + csv.parse(text, {columns: objectwise}, function(error, output) { + if (error) { + reject('Failed to parse registry file: ' + error); + } + resolve(output); + }); }); - }); - }); } function getRegistry(userConfig) { - /** * Return the DataPackage Registry as an array of objects */ // Replace default params with user config var customConfig = _.extend(config, userConfig); - - return getCSVEndpoint(customConfig.backend, customConfig.objectwise); - } diff --git a/package.json b/package.json index dc29a90..7210e0a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "datapackage-registry", - "version": "0.1.0", + "version": "0.2.0", "description": "An API wrapper for a Data Package registry.", "keywords": [ "data package", @@ -11,15 +11,16 @@ "main": "index.js", "dependencies": { "csv": "^0.4.1", - "superagent": "^1.2.0", - "underscore": "^1.8.3", - "bluebird": "~2.9.34" + "bluebird": "~2.9.34", + "es6-promise": "^3.0.2", + "isomorphic-fetch": "^2.2.0", + "underscore": "^1.8.3" }, "devDependencies": { "chai": "^3.0.0", "mocha": "^2.2.5", - "superagent-mock": "^1.2.0", "istanbul": "~0.3.19", + "fetch-mock": "^2.2.3", "coveralls": "~2.11.4" }, "scripts": { diff --git a/readme.md b/readme.md index a7e9d67..cdfa923 100644 --- a/readme.md +++ b/readme.md @@ -3,3 +3,6 @@ Data Package Registry [![Travis Build Status](https://travis-ci.org/okfn/datapackage-registry-js.svg?branch=master)](https://travis-ci.org/okfn/datapackage-registry-js) [![Coveralls](http://img.shields.io/coveralls/okfn/datapackage-registry-js.svg?branch=master)](https://coveralls.io/r/okfn/datapackage-registry-js?branch=master) + +Polyfills have been used: +es6-promise diff --git a/test.js b/test.js index f2ef293..4db7472 100644 --- a/test.js +++ b/test.js @@ -1,5 +1,5 @@ var _ = require('underscore'); -var request = require('superagent'); +var fetchMock = require('fetch-mock'); var assert = require('chai').assert; var Promise = require('bluebird'); var registry = require('./'); @@ -7,28 +7,26 @@ var should = require('chai').should(); describe('Data Package Registry', function(){ - var requestConfig = { - callback: function (match, data) { return {text: data}; }, - fixtures: function() { return ''; }, - - // datapackage-registry doesn't export registry URL - pattern: '.*' + var config = { + backend: 'https://rawgit.com/dataprotocols/registry/master/registry.csv', }; describe('get()', function(){ it('return Promise object', function(done, err){ if (err) done(err); - require('superagent-mock')(request, [requestConfig]); + fetchMock.restore(); + fetchMock.mock(config.backend, 'id,title,schema,specification'); + registry.get().should.be.an.instanceOf(Promise); + done(); }); it('resolve into non-empty array of objects when registry is not empty', function(done, err){ if (err) done(err); - require('superagent-mock')(request, [_.extend(requestConfig, { - fixtures: function(){ return 'id,title,schema,specification\n1,2,3,4'; } - })]); + fetchMock.restore(); + fetchMock.mock(config.backend, 'id,title,schema,specification\n1,2,3,4'); registry.get().then(function(data) { data.should.be.not.empty; @@ -39,31 +37,20 @@ describe('Data Package Registry', function(){ it('resolve into empty array when registry is empty', function(done, err){ if (err) done(err); - require('superagent-mock')(request, [_.extend(requestConfig, { - fixtures: function(){ return ' '; } - })]); + fetchMock.restore(); + fetchMock.mock(config.backend, 'id,title,schema,specification'); registry.get().then(function(data) { data.should.be.empty; - - require('superagent-mock')(request, [_.extend(requestConfig, { - fixtures: function(){ return 'id,title,schema,specification'; } - })]); - - // Feel lack of experience in async testing - registry.get().then(function(data) { - data.should.be.empty; - done(); - }); + done(); }); }); it('reject with a message when connection failed', function(done, err){ if (err) done(err); - require('superagent-mock')(request, [_.extend(requestConfig, { - callback: function(){ throw new Error(500); } - })]); + fetchMock.restore(); + fetchMock.mock(config.backend, 500); registry.get().catch(function(error) { error.should.be.a('string'); From e9bc519771359dafa20cdcdae450720f178e6c3b Mon Sep 17 00:00:00 2001 From: Igor Borysyuk Date: Tue, 27 Oct 2015 15:22:19 +0200 Subject: [PATCH 2/2] travis file has been changed --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 15ffb8a..c52c45c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,6 @@ language: node_js node_js: - - '0.12' - - '0.11' - - '0.10' + - "4.1.1" install: npm install script: npm run coverage after_script: npm run coveralls