burnchart/test/request.coffee

143 lines
3.6 KiB
CoffeeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

proxy = do require('proxyquire').noCallThru
assert = require 'assert'
path = require 'path'
class Sa
# How soon do we call back?
timeout: 1
# Save the uri.
get: (uri) ->
@params = { uri }
@
# Save the key-value pair.
set: (key, value) ->
@params[key] = value
@
# Call back with the response.
end: (cb) ->
setTimeout =>
cb null, @response
, @timeout
superagent = new Sa()
# Proxy the superagent lib.
request = proxy path.resolve(__dirname, '../src/modules/github/request.coffee'),
'superagent': superagent
# User is ready, make the requests.
user = require '../src/models/user.coffee'
user.set 'ready', yes
# Get config so we can fudge timeout.
config = require '../src/models/config.coffee'
module.exports =
'request - all milestones (ok)': (done) ->
superagent.response =
'statusType': 2
'error': no
'body': [ null ]
owner = 'radekstepan'
name = 'burnchart'
request.allMilestones { owner, name }, (err, data) ->
assert.ifError err
assert.deepEqual superagent.params,
'uri': 'https://api.github.com/repos/radekstepan/burnchart/milestones?state=open&sort=due_date&direction=asc'
'Content-Type': 'application/json',
'Accept': 'application/vnd.github.v3'
assert.deepEqual data, [ null ]
do done
'request - one milestone (ok)': (done) ->
superagent.response =
'statusType': 2
'error': no
'body': [ null ]
owner = 'radekstepan'
name = 'burnchart'
milestone = 1
request.oneMilestone { owner, name, milestone }, (err, data) ->
assert.ifError err
assert.deepEqual superagent.params,
'uri': 'https://api.github.com/repos/radekstepan/burnchart/milestones/1?state=open&sort=due_date&direction=asc'
'Content-Type': 'application/json',
'Accept': 'application/vnd.github.v3'
assert.deepEqual data, [ null ]
do done
'request - one milestone (404)': (done) ->
superagent.response =
'statusType': 4
'error': Error "cannot GET undefined (404)"
'body':
'documentation_url': "http://developer.github.com/v3"
'message': "Not Found"
owner = 'radekstepan'
name = 'burnchart'
milestone = 0
request.oneMilestone { owner, name, milestone }, (err) ->
assert.equal err, 'Not Found'
do done
'request - one milestone (500)': (done) ->
superagent.response =
'statusType': 5
'error': Error "Error"
'body': null
owner = 'radekstepan'
name = 'burnchart'
milestone = 0
request.oneMilestone { owner, name, milestone }, (err) ->
assert.equal err, 'Error'
do done
'request - all issues (ok)': (done) ->
superagent.response =
'statusType': 2
'error': no
'body': [ null ]
owner = 'radekstepan'
name = 'burnchart'
milestone = 0
request.allIssues { owner, name, milestone }, {}, (err, data) ->
assert.ifError err
assert.deepEqual superagent.params,
'uri': 'https://api.github.com/repos/radekstepan/burnchart/issues?milestone=0&per_page=100'
'Content-Type': 'application/json',
'Accept': 'application/vnd.github.v3'
assert.deepEqual data, [ null ]
do done
'request - timeout': (done) ->
# Run this last or reset timeout to default again...
config.set 'request.timeout', 10
superagent.timeout = 20
superagent.response =
'statusType': 2
'error': no
'body': [ null ]
owner = 'radekstepan'
name = 'burnchart'
milestone = 0
request.allIssues { owner, name, milestone }, {}, (err) ->
assert.equal err, 'Request has timed out'
do done