ghpulls
Version:
Interact with the GitHub pull requests API
153 lines (133 loc) • 5.98 kB
JavaScript
const http = require('http')
, ghutils = require('ghutils/test-util')
, test = require('tape')
, xtend = require('xtend')
, bl = require('bl')
, ghpulls = require('./')
test('test list pulls', function (t) {
t.plan(10)
var auth = { user: 'authuser', token: 'authtoken' }
, org = 'testorg'
, repo = 'testrepo'
, testData = [
{
response : [ { test1: 'data1' }, { test2: 'data2' } ]
, headers : { link: '<https://api.github.com/repos/testorg/testrepo/pulls?page=2>; rel="next"' }
}
, { response: [] }
]
, server
server = ghutils.makeServer(testData)
.on('ready', function () {
ghpulls.list(xtend(auth), org, repo, ghutils.verifyData(t, testData[0].response))
})
.on('request', ghutils.verifyRequest(t, auth))
.on('get', ghutils.verifyUrl(t, [
'https://api.github.com/repos/testorg/testrepo/pulls?page=1'
, 'https://api.github.com/repos/testorg/testrepo/pulls?page=2'
]))
.on('close' , ghutils.verifyClose(t))
})
test('test list multi-page pulls', function (t) {
t.plan(13)
var auth = { user: 'authuser', token: 'authtoken' }
, org = 'testorg'
, repo = 'testrepo'
, testData = [
{
response : [ { test1: 'data1' }, { test2: 'data2' } ]
, headers : { link: '<https://api.github.com/repos/testorg/testrepo/pulls?page=2>; rel="next"' }
}
, {
response : [ { test1: 'data3' }, { test2: 'data4' } ]
, headers : { link: '<https://api.github.com/repos/testorg/testrepo/pulls?page=3>; rel="next"' }
}
, { response: [] }
]
, server
server = ghutils.makeServer(testData)
.on('ready', function () {
ghpulls.list(xtend(auth), org, repo, ghutils.verifyData(t, testData[0].response.concat(testData[1].response)))
})
.on('request', ghutils.verifyRequest(t, auth))
.on('get', ghutils.verifyUrl(t, [
'https://api.github.com/repos/testorg/testrepo/pulls?page=1'
, 'https://api.github.com/repos/testorg/testrepo/pulls?page=2'
, 'https://api.github.com/repos/testorg/testrepo/pulls?page=3'
]))
.on('close' , ghutils.verifyClose(t))
})
test('test list no pulls', function (t) {
t.plan(7)
var auth = { user: 'authuser', token: 'authtoken' }
, org = 'testorg'
, repo = 'testrepo'
, testData = [ [] ]
, server
server = ghutils.makeServer(testData)
.on('ready', function () {
ghpulls.list(xtend(auth), org, repo, ghutils.verifyData(t, []))
})
.on('request', ghutils.verifyRequest(t, auth))
.on('get', ghutils.verifyUrl(t, [
'https://api.github.com/repos/testorg/testrepo/pulls?page=1'
]))
.on('close' , ghutils.verifyClose(t))
})
test('test list multi-page pulls, options.afterDate includes all', function (t) {
t.plan(13)
var auth = { user: 'authuser', token: 'authtoken' }
, org = 'testorg'
, repo = 'testrepo'
, testData = [
{
response : [ { test1: 'data1', created_at: new Date('2015-12-14T05:58:14.421Z').toISOString() }, { test2: 'data2', created_at: new Date('2015-12-13T05:58:14.421Z').toISOString() } ]
, headers : { link: '<https://api.github.com/repos/testorg/testrepo/pulls?page=2>; rel="next"' }
}
, {
response : [ { test1: 'data3', created_at: new Date('2015-12-12T05:58:14.421Z').toISOString() }, { test2: 'data4', created_at: new Date('2015-12-11T05:58:14.421Z').toISOString() } ]
, headers : { link: '<https://api.github.com/repos/testorg/testrepo/pulls?page=3>; rel="next"' }
}
, { response: [] }
]
, server
server = ghutils.makeServer(testData)
.on('ready', function () {
ghpulls.list(xtend(auth), org, repo, { afterDate: new Date('2015-12-10T05:58:14.421Z') }, ghutils.verifyData(t, testData[0].response.concat(testData[1].response)))
})
.on('request', ghutils.verifyRequest(t, auth))
.on('get', ghutils.verifyUrl(t, [
'https://api.github.com/repos/testorg/testrepo/pulls?page=1'
, 'https://api.github.com/repos/testorg/testrepo/pulls?page=2'
, 'https://api.github.com/repos/testorg/testrepo/pulls?page=3'
]))
.on('close' , ghutils.verifyClose(t))
})
test('test list multi-page pulls, options.afterDate includes partial', function (t) {
t.plan(10)
var auth = { user: 'authuser', token: 'authtoken' }
, org = 'testorg'
, repo = 'testrepo'
, testData = [
{
response : [ { test1: 'data1', created_at: new Date('2015-12-14T05:58:14.421Z').toISOString() }, { test2: 'data2', created_at: new Date('2015-12-13T05:58:14.421Z').toISOString() } ]
, headers : { link: '<https://api.github.com/repos/testorg/testrepo/pulls?page=2>; rel="next"' }
}
, {
response : [ { test1: 'data3', created_at: new Date('2015-12-12T05:58:14.421Z').toISOString() }, { test2: 'data4', created_at: new Date('2015-12-11T05:58:14.421Z').toISOString() } ]
, headers : { link: '<https://api.github.com/repos/testorg/testrepo/pulls?page=3>; rel="next"' }
}
// also tests that we don't fetch any more beyond this point, i.e. only 2 requests needed
]
, server
server = ghutils.makeServer(testData)
.on('ready', function () {
ghpulls.list(xtend(auth), org, repo, { afterDate: new Date('2015-12-11T15:58:14.421Z') }, ghutils.verifyData(t, testData[0].response.concat([ testData[1].response[0] ])))
})
.on('request', ghutils.verifyRequest(t, auth))
.on('get', ghutils.verifyUrl(t, [
'https://api.github.com/repos/testorg/testrepo/pulls?page=1'
, 'https://api.github.com/repos/testorg/testrepo/pulls?page=2'
]))
.on('close' , ghutils.verifyClose(t))
})