@@ -1,389 +1,195 @@
-"use strict";
+import nock from 'nock'
+import githubAPI from '../github'
-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+import allContributorsCliResponse from './github/all-contributors.response.json'
+import allContributorsCliTransformed from './github/all-contributors.transformed.json'
-var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
-
-var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
-
-var _nock = _interopRequireDefault(require("nock"));
-
-var _github = _interopRequireDefault(require("../github"));
-
-var _allContributorsResponse = _interopRequireDefault(require("./github/all-contributors.response.json"));
-
-var _allContributorsTransformed = _interopRequireDefault(require("./github/all-contributors.transformed.json"));
-
-var _reactNativeResponse = _interopRequireDefault(require("./github/react-native.response.1.json"));
-
-var _reactNativeResponse2 = _interopRequireDefault(require("./github/react-native.response.2.json"));
-
-var _reactNativeResponse3 = _interopRequireDefault(require("./github/react-native.response.3.json"));
-
-var _reactNativeResponse4 = _interopRequireDefault(require("./github/react-native.response.4.json"));
-
-var _reactNativeTransformed = _interopRequireDefault(require("./github/react-native.transformed.json"));
-
-var getUserInfo = _github.default.getUserInfo;
-var check = _github.default.getContributors;
-beforeAll(function () {
- (0, _nock.default)('https://api.github.com').persist().get('/repos/all-contributors/all-contributors-cli/contributors?per_page=100').reply(200, _allContributorsResponse.default).get('/repos/facebook/react-native/contributors?per_page=100').reply(200, _reactNativeResponse.default, {
- Link: '<https://api.github.com/repositories/29028775/contributors?per_page=100&page=2>; rel="next", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=4>; rel="last"'
- }).get('/repositories/29028775/contributors?per_page=100&page=2').reply(200, _reactNativeResponse2.default, {
- Link: '<https://api.github.com/repositories/29028775/contributors?per_page=100&page=3>; rel="next", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=4>; rel="last", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=1>; rel="first", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=1>; rel="prev"'
- }).get('/repositories/29028775/contributors?per_page=100&page=3').reply(200, _reactNativeResponse3.default, {
- Link: '<https://api.github.com/repositories/29028775/contributors?per_page=100&page=4>; rel="next", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=4>; rel="last", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=1>; rel="first", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=2>; rel="prev"'
- }).get('/repositories/29028775/contributors?per_page=100&page=4').reply(200, _reactNativeResponse4.default, {
- Link: '<https://api.github.com/repositories/29028775/contributors?per_page=100&page=1>; rel="first", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=3>; rel="prev"'
- });
-});
-test('Handle a single results page correctly',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee() {
- var transformed;
- return _regenerator.default.wrap(function (_context) {
- while (1) {
- switch (_context.prev = _context.next) {
- case 0:
- _context.next = 2;
- return check('all-contributors', 'all-contributors-cli');
-
- case 2:
- transformed = _context.sent;
- expect(transformed).toEqual(_allContributorsTransformed.default);
-
- case 4:
- case "end":
- return _context.stop();
- }
- }
- }, _callee);
-})));
-test('Handle multiple results pages correctly',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee2() {
- var transformed;
- return _regenerator.default.wrap(function (_context2) {
- while (1) {
- switch (_context2.prev = _context2.next) {
- case 0:
- _context2.next = 2;
- return check('facebook', 'react-native');
-
- case 2:
- transformed = _context2.sent;
- expect(transformed).toEqual(_reactNativeTransformed.default);
-
- case 4:
- case "end":
- return _context2.stop();
- }
- }
- }, _callee2);
-})));
-
-function rejects() {
- return _rejects.apply(this, arguments);
+import reactNativeResponse1 from './github/react-native.response.1.json'
+import reactNativeResponse2 from './github/react-native.response.2.json'
+import reactNativeResponse3 from './github/react-native.response.3.json'
+import reactNativeResponse4 from './github/react-native.response.4.json'
+import reactNativeTransformed from './github/react-native.transformed.json'
+
+const getUserInfo = githubAPI.getUserInfo
+const check = githubAPI.getContributors
+
+beforeAll(() => {
+ nock('https://api.github.com')
+ .persist()
+ .get(
+ '/repos/all-contributors/all-contributors-cli/contributors?per_page=100',
+ )
+ .reply(200, allContributorsCliResponse)
+ .get('/repos/facebook/react-native/contributors?per_page=100')
+ .reply(200, reactNativeResponse1, {
+ Link:
+ '<https://api.github.com/repositories/29028775/contributors?per_page=100&page=2>; rel="next", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=4>; rel="last"',
+ })
+ .get('/repositories/29028775/contributors?per_page=100&page=2')
+ .reply(200, reactNativeResponse2, {
+ Link:
+ '<https://api.github.com/repositories/29028775/contributors?per_page=100&page=3>; rel="next", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=4>; rel="last", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=1>; rel="first", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=1>; rel="prev"',
+ })
+ .get('/repositories/29028775/contributors?per_page=100&page=3')
+ .reply(200, reactNativeResponse3, {
+ Link:
+ '<https://api.github.com/repositories/29028775/contributors?per_page=100&page=4>; rel="next", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=4>; rel="last", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=1>; rel="first", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=2>; rel="prev"',
+ })
+ .get('/repositories/29028775/contributors?per_page=100&page=4')
+ .reply(200, reactNativeResponse4, {
+ Link:
+ '<https://api.github.com/repositories/29028775/contributors?per_page=100&page=1>; rel="first", <https://api.github.com/repositories/29028775/contributors?per_page=100&page=3>; rel="prev"',
+ })
+})
+
+test('Handle a single results page correctly', async () => {
+ const transformed = await check('all-contributors', 'all-contributors-cli')
+ expect(transformed).toEqual(allContributorsCliTransformed)
+})
+
+test('Handle multiple results pages correctly', async () => {
+ const transformed = await check('facebook', 'react-native')
+ expect(transformed).toEqual(reactNativeTransformed)
+})
+
+async function rejects(promise) {
+ const error = await promise.catch(e => e)
+ expect(error).toBeTruthy()
}
-function _rejects() {
- _rejects = (0, _asyncToGenerator2.default)(
- /*#__PURE__*/
- _regenerator.default.mark(function _callee13(promise) {
- var error;
- return _regenerator.default.wrap(function (_context13) {
- while (1) {
- switch (_context13.prev = _context13.next) {
- case 0:
- _context13.next = 2;
- return promise.catch(function (e) {
- return e;
- });
-
- case 2:
- error = _context13.sent;
- expect(error).toBeTruthy();
-
- case 4:
- case "end":
- return _context13.stop();
- }
- }
- }, _callee13);
- }));
- return _rejects.apply(this, arguments);
-}
-
-test('handle errors',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee3() {
- return _regenerator.default.wrap(function (_context3) {
- while (1) {
- switch (_context3.prev = _context3.next) {
- case 0:
- (0, _nock.default)('https://api.github.com').get('/users/nodisplayname').replyWithError(404);
- _context3.next = 3;
- return rejects(getUserInfo('nodisplayname'));
-
- case 3:
- case "end":
- return _context3.stop();
- }
- }
- }, _callee3);
-})));
-test('Throw error when no username is provided', function () {
- expect(getUserInfo).toThrow('No login when adding a contributor. Please specify a username.');
-});
-test('Throw error when non existent username is provided',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee4() {
- var username;
- return _regenerator.default.wrap(function (_context4) {
- while (1) {
- switch (_context4.prev = _context4.next) {
- case 0:
- username = 'thisusernamedoesntexist';
- (0, _nock.default)('https://api.github.com').get(`/users/${username}`).reply(404, {
+test('handle errors', async () => {
+ nock('https://api.github.com')
+ .get('/users/nodisplayname')
+ .replyWithError(404)
+
+ await rejects(getUserInfo('nodisplayname'))
+})
+
+test('Throw error when no username is provided', () => {
+ expect(getUserInfo).toThrow(
+ 'No login when adding a contributor. Please specify a username.',
+ )
+})
+
+test('Throw error when non existent username is provided', async () => {
+ const username = 'thisusernamedoesntexist'
+ nock('https://api.github.com')
+ .get(`/users/${username}`)
+ .reply(404, {
message: 'Not Found',
- documentation_url: 'https://developer.github.com/v3/users/#get-a-single-user'
- });
- _context4.prev = 2;
- _context4.next = 5;
- return getUserInfo(username);
-
- case 5:
- _context4.next = 10;
- break;
-
- case 7:
- _context4.prev = 7;
- _context4.t0 = _context4["catch"](2);
- expect(_context4.t0.message).toEqual(`Login not found when adding a contributor for username - ${username}.`);
-
- case 10:
- case "end":
- return _context4.stop();
- }
- }
- }, _callee4, null, [[2, 7]]);
-})));
-test('handle github errors',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee5() {
- return _regenerator.default.wrap(function (_context5) {
- while (1) {
- switch (_context5.prev = _context5.next) {
- case 0:
- (0, _nock.default)('https://api.github.com').get('/users/nodisplayname').reply(200, {
- message: "API rate limit exceeded for 0.0.0.0. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)",
- documentation_url: 'https://developer.github.com/v3/#rate-limiting'
- });
- _context5.next = 3;
- return rejects(getUserInfo('nodisplayname'));
-
- case 3:
- case "end":
- return _context5.stop();
- }
- }
- }, _callee5);
-})));
-test('fill in the name when null is returned',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee6() {
- var info;
- return _regenerator.default.wrap(function (_context6) {
- while (1) {
- switch (_context6.prev = _context6.next) {
- case 0:
- (0, _nock.default)('https://api.github.com').get('/users/nodisplayname').reply(200, {
+ documentation_url:
+ 'https://developer.github.com/v3/users/#get-a-single-user',
+ })
+ try {
+ await getUserInfo(username)
+ } catch (error) {
+ expect(error.message).toEqual(
+ `Login not found when adding a contributor for username - ${username}.`,
+ )
+ }
+})
+
+test('handle github errors', async () => {
+ nock('https://api.github.com')
+ .get('/users/nodisplayname')
+ .reply(200, {
+ message:
+ "API rate limit exceeded for 0.0.0.0. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)",
+ documentation_url: 'https://developer.github.com/v3/#rate-limiting',
+ })
+
+ await rejects(getUserInfo('nodisplayname'))
+})
+
+test('fill in the name when null is returned', async () => {
+ 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'
- });
- _context6.next = 3;
- return getUserInfo('nodisplayname');
-
- case 3:
- info = _context6.sent;
- expect(info.name).toBe('nodisplayname');
-
- case 5:
- case "end":
- return _context6.stop();
- }
- }
- }, _callee6);
-})));
-test('attaches token when supplied',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee7() {
- var mockAuthToken;
- return _regenerator.default.wrap(function (_context7) {
- while (1) {
- switch (_context7.prev = _context7.next) {
- case 0:
- mockAuthToken = 'myMock-token-adaskjda';
- (0, _nock.default)('https://api.github.com').matchHeader('authorization', `token ${mockAuthToken}`).get('/users/test-token').reply(200, {
- html_url: 'test-token'
- });
- _context7.next = 4;
- return getUserInfo('test-token', 'https://github.com', mockAuthToken);
-
- case 4:
- case "end":
- return _context7.stop();
- }
- }
- }, _callee7);
-})));
-test('attaches no token when supplied empty',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee8() {
- return _regenerator.default.wrap(function (_context8) {
- while (1) {
- switch (_context8.prev = _context8.next) {
- case 0:
- (0, _nock.default)('https://api.github.com').matchHeader('authorization', '').get('/users/test-token').reply(200, {
- html_url: 'test-token'
- });
- _context8.next = 3;
- return getUserInfo('test-token', 'https://github.com', '');
-
- case 3:
- case "end":
- return _context8.stop();
- }
- }
- }, _callee8);
-})));
-test('attaches no token when not supplied',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee9() {
- return _regenerator.default.wrap(function (_context9) {
- while (1) {
- switch (_context9.prev = _context9.next) {
- case 0:
- (0, _nock.default)('https://api.github.com').matchHeader('authorization', '').get('/users/test-token').reply(200, {
- html_url: 'test-token'
- });
- _context9.next = 3;
- return getUserInfo('test-token');
-
- case 3:
- case "end":
- return _context9.stop();
- }
- }
- }, _callee9);
-})));
-test('fill in the name when an empty string is returned',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee10() {
- var info;
- return _regenerator.default.wrap(function (_context10) {
- while (1) {
- switch (_context10.prev = _context10.next) {
- case 0:
- (0, _nock.default)('https://api.github.com').get('/users/nodisplayname').reply(200, {
+ html_url: 'https://github.com/nodisplayname',
+ })
+
+ const info = await getUserInfo('nodisplayname')
+ expect(info.name).toBe('nodisplayname')
+})
+
+test('attaches token when supplied', async () => {
+ const mockAuthToken = 'myMock-token-adaskjda'
+ nock('https://api.github.com')
+ .matchHeader('authorization', `token ${mockAuthToken}`)
+ .get('/users/test-token')
+ .reply(200, {
+ html_url: 'test-token',
+ })
+
+ await getUserInfo('test-token', 'https://github.com', mockAuthToken)
+})
+
+test('attaches no token when supplied empty', async () => {
+ nock('https://api.github.com')
+ .matchHeader('authorization', '')
+ .get('/users/test-token')
+ .reply(200, {
+ html_url: 'test-token',
+ })
+
+ await getUserInfo('test-token', 'https://github.com', '')
+})
+
+test('attaches no token when not supplied', async () => {
+ nock('https://api.github.com')
+ .matchHeader('authorization', '')
+ .get('/users/test-token')
+ .reply(200, {
+ html_url: 'test-token',
+ })
+
+ await getUserInfo('test-token')
+})
+
+test('fill in the name when an empty string is returned', async () => {
+ 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'
- });
- _context10.next = 3;
- return getUserInfo('nodisplayname');
-
- case 3:
- info = _context10.sent;
- expect(info.name).toBe('nodisplayname');
-
- case 5:
- case "end":
- return _context10.stop();
- }
- }
- }, _callee10);
-})));
-test('append http when no absolute link is provided',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee11() {
- var info;
- return _regenerator.default.wrap(function (_context11) {
- while (1) {
- switch (_context11.prev = _context11.next) {
- case 0:
- (0, _nock.default)('https://api.github.com').get('/users/nodisplayname').reply(200, {
+ html_url: 'https://github.com/nodisplayname',
+ })
+
+ const info = await getUserInfo('nodisplayname')
+ expect(info.name).toBe('nodisplayname')
+})
+
+test('append http when no absolute link is provided', async () => {
+ 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: 'www.github.com/nodisplayname'
- });
- _context11.next = 3;
- return getUserInfo('nodisplayname');
-
- case 3:
- info = _context11.sent;
- expect(info.profile).toBe('http://www.github.com/nodisplayname');
-
- case 5:
- case "end":
- return _context11.stop();
- }
- }
- }, _callee11);
-})));
-test('retrieve user from a different github registry',
-/*#__PURE__*/
-(0, _asyncToGenerator2.default)(
-/*#__PURE__*/
-_regenerator.default.mark(function _callee12() {
- var info;
- return _regenerator.default.wrap(function (_context12) {
- while (1) {
- switch (_context12.prev = _context12.next) {
- case 0:
- (0, _nock.default)('http://api.github.myhost.com:3000').get('/users/nodisplayname').reply(200, {
+ html_url: 'www.github.com/nodisplayname',
+ })
+
+ const info = await getUserInfo('nodisplayname')
+ expect(info.profile).toBe('http://www.github.com/nodisplayname')
+})
+
+test('retrieve user from a different github registry', async () => {
+ nock('http://api.github.myhost.com:3000')
+ .get('/users/nodisplayname')
+ .reply(200, {
login: 'nodisplayname',
name: 'No Display Name',
avatar_url: 'https://avatars2.githubusercontent.com/u/3869412?v=3&s=400',
- html_url: 'http://github.myhost.com:3000/nodisplayname'
- });
- _context12.next = 3;
- return getUserInfo('nodisplayname', 'http://github.myhost.com:3000');
-
- case 3:
- info = _context12.sent;
- expect(info.name).toBe('No Display Name');
-
- case 5:
- case "end":
- return _context12.stop();
- }
- }
- }, _callee12);
-})));
\ No newline at end of file
+ html_url: 'http://github.myhost.com:3000/nodisplayname',
+ })
+
+ const info = await getUserInfo(
+ 'nodisplayname',
+ 'http://github.myhost.com:3000',
+ )
+ expect(info.name).toBe('No Display Name')
+})