mirror of
https://github.com/status-im/burnchart.git
synced 2025-02-10 01:23:23 +00:00
238 lines
6.3 KiB
CoffeeScript
238 lines
6.3 KiB
CoffeeScript
{ assert } = require 'chai'
|
|
moment = require 'moment'
|
|
|
|
request = require '../src/modules/github/request.coffee'
|
|
issues = require '../src/modules/github/issues.coffee'
|
|
config = require '../src/models/config.coffee'
|
|
|
|
repo = { 'owner': 'asm-products', 'name': 'burnchart', 'milestone': 1 }
|
|
|
|
module.exports =
|
|
|
|
'issues - time format': (done) ->
|
|
json = require './fixtures/issues.json'
|
|
|
|
# ISO 8601 dates are in UTC timezone.
|
|
utc = do moment(json[0].created_at).toDate().toUTCString
|
|
assert utc, 'Fri, 22 Apr 2011 13:33:48 GMT'
|
|
|
|
do done
|
|
|
|
'issues - all empty': (done) ->
|
|
called = 0
|
|
request.allIssues = (repo, opts, cb) ->
|
|
called += 1
|
|
cb null, []
|
|
|
|
config.set 'chart.points', 'ONE_SIZE'
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert called, 2
|
|
assert.strictEqual open.size, 0
|
|
assert.strictEqual closed.size, 0
|
|
do done
|
|
|
|
'issues - open empty': (done) ->
|
|
called = 0
|
|
request.allIssues = (repo, opts, cb) ->
|
|
called += 1
|
|
cb null, if called is 1 then [] else [
|
|
{ number: 1 }
|
|
]
|
|
|
|
config.set 'chart.points', 'ONE_SIZE'
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert called, 2
|
|
assert.strictEqual open.size, 0
|
|
assert.strictEqual open.list.length, 0
|
|
assert closed.size, 1
|
|
assert closed.list.length, 1
|
|
do done
|
|
|
|
'issues - closed empty': (done) ->
|
|
called = 0
|
|
request.allIssues = (repo, opts, cb) ->
|
|
called += 1
|
|
cb null, if called is 2 then [] else [
|
|
{ number: 1 }
|
|
]
|
|
|
|
config.set 'chart.points', 'ONE_SIZE'
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert called, 2
|
|
assert open.size, 1
|
|
assert.strictEqual closed.size, 0
|
|
do done
|
|
|
|
'issues - both not empty': (done) ->
|
|
called = 0
|
|
request.allIssues = (repo, opts, cb) ->
|
|
called += 1
|
|
cb null, [ { number: 1 } ]
|
|
|
|
config.set 'chart.points', 'ONE_SIZE'
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert called, 2
|
|
assert open.size, 1
|
|
assert closed.size, 1
|
|
do done
|
|
|
|
'issues - 99 results on a page': (done) ->
|
|
called = 0
|
|
request.allIssues = (repo, opts, cb) ->
|
|
called += 1
|
|
cb null, ( { number: i } for i in [ 0...99 ] )
|
|
|
|
config.set 'chart.points', 'ONE_SIZE'
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert called, 2
|
|
assert open.size, 99
|
|
assert closed.size, 99
|
|
do done
|
|
|
|
'issues - 100 results on a page': (done) ->
|
|
called = 0
|
|
request.allIssues = (repo, opts, cb) ->
|
|
called += 1
|
|
assert opts.page in [ 1, 2 ]
|
|
cb null, if opts.page is 1 then ( { number: i } for i in [ 0...100 ] ) else []
|
|
|
|
config.set 'chart.points', 'ONE_SIZE'
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert called, 4
|
|
assert open.size, 100
|
|
assert closed.size, 100
|
|
do done
|
|
|
|
'issues - 101 total results': (done) ->
|
|
called = 0
|
|
request.allIssues = (repo, opts, cb) ->
|
|
called += 1
|
|
assert opts.page in [ 1, 2 ]
|
|
cb null, if opts.page is 1
|
|
( { number: i } for i in [ 0...100 ] )
|
|
else
|
|
[ { number: 100 } ]
|
|
|
|
config.set 'chart.points', 'ONE_SIZE'
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert called, 4
|
|
assert open.size, 101
|
|
assert closed.size, 101
|
|
assert.deepEqual open.list[100], { number: 100, size: 1 }
|
|
assert.deepEqual closed.list[100], { number: 100, size: 1 }
|
|
do done
|
|
|
|
'issues - 201 total results': (done) ->
|
|
called = 0
|
|
request.allIssues = (repo, opts, cb) ->
|
|
called += 1
|
|
assert opts.page in [ 1, 2, 3 ]
|
|
cb null, if opts.page in [ 1, 2 ]
|
|
( { number: i } for i in [ (h = 100 * (opts.page - 1))...h + 100 ] )
|
|
else
|
|
[ { number: 200 } ]
|
|
|
|
config.set 'chart.points', 'ONE_SIZE'
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert called, 6
|
|
assert open.size, 201
|
|
assert closed.size, 201
|
|
for { list } in [ open, closed ]
|
|
for j in [ 100, 200 ]
|
|
assert.deepEqual list[j], { number: j, size: 1 }
|
|
do done
|
|
|
|
'issues - get all when not found': (done) ->
|
|
called = 0
|
|
request.allIssues = (repo, opts, cb) ->
|
|
called += 1
|
|
cb 'Not Found'
|
|
|
|
config.set 'chart.points', 'ONE_SIZE'
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert err, 'Not Found'
|
|
assert called, 1
|
|
do done
|
|
|
|
'issues - size based on a label': (done) ->
|
|
config.set 'chart.points', 'LABELS'
|
|
|
|
request.allIssues = (repo, opts, cb) ->
|
|
cb null, [
|
|
{ labels: [ { name: 'size 2' } ] }
|
|
{ labels: [ { name: 'size 10' } ] }
|
|
{ labels: [ { name: 'size A' } ] }
|
|
]
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert open.size, 12
|
|
assert open.list[0].size, 2
|
|
do done
|
|
|
|
'issues - filter when no labels': (done) ->
|
|
config.set 'chart.points', 'LABELS'
|
|
|
|
request.allIssues = (repo, opts, cb) ->
|
|
cb null, [ { } ]
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert.strictEqual open.size, 0
|
|
do done
|
|
|
|
'issues - filter when empty labels': (done) ->
|
|
config.set 'chart.points', 'LABELS'
|
|
|
|
request.allIssues = (repo, opts, cb) ->
|
|
cb null, [ { labels: [] } ]
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert.strictEqual open.size, 0
|
|
do done
|
|
|
|
'issues - filter when not matching regex': (done) ->
|
|
config.set 'chart.points', 'LABELS'
|
|
|
|
request.allIssues = (repo, opts, cb) ->
|
|
cb null, [ { labels: [ { name: 'size 1A' } ] } ]
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert.strictEqual open.size, 0
|
|
do done
|
|
|
|
'issues - filter when multiple match the regex': (done) ->
|
|
config.set 'chart.points', 'LABELS'
|
|
|
|
request.allIssues = (repo, opts, cb) ->
|
|
cb null, [
|
|
{ labels: [ { name: 'size 1' }, { name: 'size 6' } ] }
|
|
{ labels: [ { name: 'size really big' }, { name: 'size 4' } ] }
|
|
]
|
|
|
|
issues.fetchAll repo, (err, { open, closed }) ->
|
|
assert.isNull err
|
|
assert open.size, 11
|
|
[ a, b ] = open.list
|
|
assert a.size, 7
|
|
assert b.size, 4
|
|
do done |