use Moment for dates
This commit is contained in:
parent
b1dacbd3e6
commit
68813df07f
|
@ -45,3 +45,5 @@ When developing in LESS, be aware that [LESS Hat](http://lesshat.madebysource.co
|
||||||
##Tests
|
##Tests
|
||||||
|
|
||||||
Tests run via Mocha and [Blanket](http://blanketjs.org/) for coverage. You can use [proxyquire](https://github.com/thlorenz/proxyquire) to override requires, but results in incorrect test coverage when used with Blanket.
|
Tests run via Mocha and [Blanket](http://blanketjs.org/) for coverage. You can use [proxyquire](https://github.com/thlorenz/proxyquire) to override requires, but results in incorrect test coverage when used with Blanket.
|
||||||
|
|
||||||
|
The `test/fixtures` folder contains example responses from GitHub.
|
File diff suppressed because one or more lines are too long
|
@ -23,18 +23,18 @@ module.exports = (milestone) ->
|
||||||
# Milestones with no due date are always on track.
|
# Milestones with no due date are always on track.
|
||||||
return { isOverdue, isOnTime, isDone, isEmpty, 'progress': { points } } unless milestone.due_on?
|
return { isOverdue, isOnTime, isDone, isEmpty, 'progress': { points } } unless milestone.due_on?
|
||||||
|
|
||||||
a = +new Date milestone.created_at
|
a = moment milestone.created_at
|
||||||
b = +new Date
|
b = do moment.utc
|
||||||
c = +new Date milestone.due_on
|
c = moment milestone.due_on
|
||||||
|
|
||||||
# Overdue?
|
# Overdue?
|
||||||
isOverdue = yes if b > c
|
isOverdue = yes if b.isAfter c
|
||||||
|
|
||||||
# Progress in time.
|
# Progress in time.
|
||||||
time = progress b - a, c - b
|
time = progress b.diff(a), c.diff(b)
|
||||||
|
|
||||||
# How many days is 1% of the time?
|
# How many days is 1% of the time?
|
||||||
days = (moment(b).diff(moment(a), 'days')) / 100
|
days = (b.diff(a, 'days')) / 100
|
||||||
|
|
||||||
# Are we on time?
|
# Are we on time?
|
||||||
isOnTime = points > time
|
isOnTime = points > time
|
||||||
|
|
|
@ -6,7 +6,7 @@ module.exports =
|
||||||
|
|
||||||
# Time from now.
|
# Time from now.
|
||||||
fromNow: _.memoize (jsonDate) ->
|
fromNow: _.memoize (jsonDate) ->
|
||||||
moment(new Date(jsonDate)).fromNow()
|
do moment(jsonDate).fromNow
|
||||||
|
|
||||||
# When is a milestone due?
|
# When is a milestone due?
|
||||||
due: (jsonDate) ->
|
due: (jsonDate) ->
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World/issues/1347",
|
||||||
|
"html_url": "https://github.com/octocat/Hello-World/issues/1347",
|
||||||
|
"number": 1347,
|
||||||
|
"state": "open",
|
||||||
|
"title": "Found a bug",
|
||||||
|
"body": "I'm having a problem with this.",
|
||||||
|
"user": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"labels": [
|
||||||
|
{
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World/labels/bug",
|
||||||
|
"name": "bug",
|
||||||
|
"color": "f29513"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"assignee": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"milestone": {
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World/milestones/1",
|
||||||
|
"number": 1,
|
||||||
|
"state": "open",
|
||||||
|
"title": "v1.0",
|
||||||
|
"description": "",
|
||||||
|
"creator": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"open_issues": 4,
|
||||||
|
"closed_issues": 8,
|
||||||
|
"created_at": "2011-04-10T20:09:31Z",
|
||||||
|
"updated_at": "2014-03-03T18:58:10Z",
|
||||||
|
"due_on": null
|
||||||
|
},
|
||||||
|
"comments": 0,
|
||||||
|
"pull_request": {
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347",
|
||||||
|
"html_url": "https://github.com/octocat/Hello-World/pull/1347",
|
||||||
|
"diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff",
|
||||||
|
"patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch"
|
||||||
|
},
|
||||||
|
"closed_at": null,
|
||||||
|
"created_at": "2011-04-22T13:33:48Z",
|
||||||
|
"updated_at": "2011-04-22T13:33:48Z"
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World/milestones/1",
|
||||||
|
"number": 1,
|
||||||
|
"state": "open",
|
||||||
|
"title": "v1.0",
|
||||||
|
"description": "",
|
||||||
|
"creator": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"open_issues": 4,
|
||||||
|
"closed_issues": 8,
|
||||||
|
"created_at": "2011-04-10T20:09:31Z",
|
||||||
|
"updated_at": "2014-03-03T18:58:10Z",
|
||||||
|
"due_on": null
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World/milestones/1",
|
||||||
|
"number": 1,
|
||||||
|
"state": "open",
|
||||||
|
"title": "v1.0",
|
||||||
|
"description": "",
|
||||||
|
"creator": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"open_issues": 4,
|
||||||
|
"closed_issues": 8,
|
||||||
|
"created_at": "2011-04-10T20:09:31Z",
|
||||||
|
"updated_at": "2014-03-03T18:58:10Z",
|
||||||
|
"due_on": null
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,56 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 1296269,
|
||||||
|
"owner": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"name": "Hello-World",
|
||||||
|
"full_name": "octocat/Hello-World",
|
||||||
|
"description": "This your first repo!",
|
||||||
|
"private": false,
|
||||||
|
"fork": false,
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World",
|
||||||
|
"html_url": "https://github.com/octocat/Hello-World",
|
||||||
|
"clone_url": "https://github.com/octocat/Hello-World.git",
|
||||||
|
"git_url": "git://github.com/octocat/Hello-World.git",
|
||||||
|
"ssh_url": "git@github.com:octocat/Hello-World.git",
|
||||||
|
"svn_url": "https://svn.github.com/octocat/Hello-World",
|
||||||
|
"mirror_url": "git://git.example.com/octocat/Hello-World",
|
||||||
|
"homepage": "https://github.com",
|
||||||
|
"language": null,
|
||||||
|
"forks_count": 9,
|
||||||
|
"stargazers_count": 80,
|
||||||
|
"watchers_count": 80,
|
||||||
|
"size": 108,
|
||||||
|
"default_branch": "master",
|
||||||
|
"open_issues_count": 0,
|
||||||
|
"has_issues": true,
|
||||||
|
"has_wiki": true,
|
||||||
|
"has_pages": false,
|
||||||
|
"has_downloads": true,
|
||||||
|
"pushed_at": "2011-01-26T19:06:43Z",
|
||||||
|
"created_at": "2011-01-26T19:01:12Z",
|
||||||
|
"updated_at": "2011-01-26T19:14:43Z",
|
||||||
|
"permissions": {
|
||||||
|
"admin": false,
|
||||||
|
"push": false,
|
||||||
|
"pull": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
|
@ -1,4 +1,5 @@
|
||||||
assert = require 'assert'
|
assert = require 'assert'
|
||||||
|
moment = require 'moment'
|
||||||
|
|
||||||
request = require '../src/modules/github/request.coffee'
|
request = require '../src/modules/github/request.coffee'
|
||||||
issues = require '../src/modules/github/issues.coffee'
|
issues = require '../src/modules/github/issues.coffee'
|
||||||
|
@ -8,6 +9,15 @@ repo = { 'owner': 'asm-products', 'name': 'burnchart', 'milestone': 1 }
|
||||||
|
|
||||||
module.exports =
|
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.equal utc, 'Fri, 22 Apr 2011 13:33:48 GMT'
|
||||||
|
|
||||||
|
do done
|
||||||
|
|
||||||
'issues - all empty': (done) ->
|
'issues - all empty': (done) ->
|
||||||
called = 0
|
called = 0
|
||||||
request.allIssues = (repo, opts, cb) ->
|
request.allIssues = (repo, opts, cb) ->
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
assert = require 'assert'
|
||||||
|
moment = require 'moment'
|
||||||
|
|
||||||
|
module.exports =
|
||||||
|
|
||||||
|
'milestones - time format': (done) ->
|
||||||
|
json = require './fixtures/milestones.json'
|
||||||
|
|
||||||
|
# ISO 8601 dates are in UTC timezone.
|
||||||
|
utc = do moment(json[0].created_at).toDate().toUTCString
|
||||||
|
assert.equal utc, 'Sun, 10 Apr 2011 20:09:31 GMT'
|
||||||
|
|
||||||
|
do done
|
Loading…
Reference in New Issue