blob: d16f4a2a35a47b6c126886b64fd229442424f458 [file] [log] [blame]
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)
})
})