diff --git a/lib/contributors/github.js b/lib/contributors/github.js index 06471bc..3b04847 100644 --- a/lib/contributors/github.js +++ b/lib/contributors/github.js @@ -15,7 +15,7 @@ module.exports = function getUserInfo(username, cb) { var body = JSON.parse(res.body); var user = { login: body.login, - name: body.name, + name: body.name || username, avatar_url: body.avatar_url, profile: body.blog || body.html_url }; diff --git a/lib/contributors/github.test.js b/lib/contributors/github.test.js new file mode 100644 index 0000000..cafb2f6 --- /dev/null +++ b/lib/contributors/github.test.js @@ -0,0 +1,48 @@ +import test from 'ava'; +import nock from 'nock'; +import getUserInfo from './github'; + +test.cb('should handle errors', function (t) { + nock('https://api.github.com') + .get('/users/nodisplayname') + .replyWithError(404); + + getUserInfo('nodisplayname', function (err) { + t.truthy(err); + t.end(); + }); +}); + +test.cb('should fill in the name when null is returned', function (t) { + nock('https://api.github.com') + .get('/users/nodisplayname') + .reply(200, { + login: 'nodisplayname', + name: null, + avatar_url: 'https://avatars2.githubusercontent.com/u/3869412?v=3&s=400', + html_url: 'https://github.com/nodisplayname' + }); + + getUserInfo('nodisplayname', function (err, info) { + t.falsy(err); + t.is(info.name, 'nodisplayname'); + t.end(); + }); +}); + +test.cb('should fill in the name when an empty string is returned', function (t) { + nock('https://api.github.com') + .get('/users/nodisplayname') + .reply(200, { + login: 'nodisplayname', + name: '', + avatar_url: 'https://avatars2.githubusercontent.com/u/3869412?v=3&s=400', + html_url: 'https://github.com/nodisplayname' + }); + + getUserInfo('nodisplayname', function (err, info) { + t.falsy(err); + t.is(info.name, 'nodisplayname'); + t.end(); + }); +}); diff --git a/package.json b/package.json index 8198fbd..c7d9421 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ }, "devDependencies": { "ava": "^0.14.0", + "nock": "^8.0.0", "nyc": "^6.4.2", "xo": "^0.15.0" },