| const test = require('tap').test |
| const nock = require('nock') |
| |
| const Octokit = require('@octokit/rest') |
| .plugin(require('.')) |
| |
| test('@octokit/pagination-methods', (t) => { |
| nock('https://api.github.com', { |
| reqheaders: { |
| authorization: 'token secrettoken123' |
| } |
| }) |
| .get('/organizations') |
| .query({ page: 3, per_page: 1 }) |
| .reply(200, [{}], { |
| 'Link': '<https://api.github.com/organizations?page=4&per_page=1>; rel="next", <https://api.github.com/organizations?page=1&per_page=1>; rel="first", <https://api.github.com/organizations?page=2&per_page=1>; rel="prev"', |
| 'X-GitHub-Media-Type': 'octokit.v3; format=json' |
| }) |
| .get('/organizations') |
| .query({ page: 1, per_page: 1 }) |
| .reply(200, [{}]) |
| .get('/organizations') |
| .query({ page: 2, per_page: 1 }) |
| .reply(200, [{}]) |
| .get('/organizations') |
| .query({ page: 4, per_page: 1 }) |
| .reply(404, {}) |
| |
| const octokit = new Octokit() |
| |
| octokit.authenticate({ |
| type: 'token', |
| token: 'secrettoken123' |
| }) |
| |
| return octokit.orgs.getAll({ |
| page: 3, |
| per_page: 1 |
| }) |
| |
| .then((response) => { |
| t.ok(octokit.hasNextPage(response)) |
| t.ok(octokit.hasPreviousPage(response)) |
| t.ok(octokit.hasFirstPage(response)) |
| t.notOk(octokit.hasLastPage(response)) |
| |
| const noop = () => {} |
| |
| return Promise.all([ |
| octokit.getFirstPage(response) |
| .then(response => { |
| t.doesNotThrow(() => { |
| octokit.hasPreviousPage(response) |
| }) |
| t.notOk(octokit.hasPreviousPage(response)) |
| }), |
| octokit.getPreviousPage(response, { foo: 'bar', accept: 'application/vnd.octokit.v3+json' }), |
| octokit.getNextPage(response).catch(noop), |
| octokit.getLastPage(response, { foo: 'bar' }) |
| .catch(error => { |
| t.equals(error.code, 404) |
| }), |
| // test error with promise |
| octokit.getLastPage(response).catch(noop) |
| ]) |
| }) |
| |
| .catch(t.error) |
| }) |
| |
| test('carries accept header correctly', () => { |
| nock('https://api.github.com', { |
| reqheaders: { |
| accept: 'application/vnd.github.hellcat-preview+json' |
| } |
| }) |
| .get('/user/teams') |
| .query({ per_page: 1 }) |
| .reply(200, [{}], { |
| 'Link': '<https://api.github.com/user/teams?page=2&per_page=1>; rel="next"', |
| 'X-GitHub-Media-Type': 'github; param=hellcat-preview; format=json' |
| }) |
| .get('/user/teams') |
| .query({ page: 2, per_page: 1 }) |
| .reply(200, []) |
| |
| const octokit = new Octokit() |
| |
| return octokit.users.getTeams({ per_page: 1 }) |
| .then(response => { |
| return octokit.getNextPage(response) |
| }) |
| }) |