Skip to content

Commit

Permalink
Merge pull request #8 from okfn/feature/IE9-compatible-request-library
Browse files Browse the repository at this point in the history
superagent has been replaced by isomorphic-fetch
  • Loading branch information
pwalsh committed Oct 27, 2015
2 parents d187796 + e9bc519 commit 5f7bbcd
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 58 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
4 changes: 1 addition & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
38 changes: 15 additions & 23 deletions index.js
Original file line number Diff line number Diff line change
@@ -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',
Expand All @@ -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);

}


Expand Down
11 changes: 6 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand All @@ -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": {
Expand Down
3 changes: 3 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
41 changes: 14 additions & 27 deletions test.js
Original file line number Diff line number Diff line change
@@ -1,34 +1,32 @@
var _ = require('underscore');
var request = require('superagent');
var fetchMock = require('fetch-mock');
var assert = require('chai').assert;
var Promise = require('bluebird');
var registry = require('./');
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;
Expand All @@ -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');
Expand Down

0 comments on commit 5f7bbcd

Please sign in to comment.