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': '; rel="next", ; rel="first", ; 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': '; 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) }) })