From eca50c0b84ac69ff73fc75dc998db3592873c28c Mon Sep 17 00:00:00 2001 From: jhnns Date: Fri, 4 Oct 2013 18:06:56 +0200 Subject: [PATCH 1/2] prefer first milestone with due date --- src/modules/milestones.coffee | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/milestones.coffee b/src/modules/milestones.coffee index d8e3808..67fade0 100644 --- a/src/modules/milestones.coffee +++ b/src/modules/milestones.coffee @@ -1,4 +1,5 @@ #!/usr/bin/env coffee +{ _ } = require 'lodash' request = require './request' module.exports = @@ -12,8 +13,10 @@ module.exports = return cb data.message if data.message # Empty warning? return cb null, 'No open milestones for repo' unless data.length - # The first milestone should be ending soonest. - m = data[0] + # Filter milestones without due date. + m = _.rest data, { 'due_on' : null } + # The first milestone should be ending soonest. Prefer milestones with due dates. + m = if m[0] then m[0] else data[0] # Empty milestone? return cb null, 'No issues for milestone' if m.open_issues + m.closed_issues is 0 From cc7cf05eb59e74c6507259ccd0a3068e775edc66 Mon Sep 17 00:00:00 2001 From: jhnns Date: Fri, 4 Oct 2013 18:19:38 +0200 Subject: [PATCH 2/2] add tests for milestones without due date --- test/milestones.coffee | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test/milestones.coffee b/test/milestones.coffee index eb4f17b..2aa9f64 100644 --- a/test/milestones.coffee +++ b/test/milestones.coffee @@ -25,6 +25,21 @@ module.exports = assert.equal milestone.number, 1 do done + 'milestones - get current from 1 when milestone has no due date': (done) -> + req.all_milestones = (opts, cb) -> + cb null, [ + { + 'number': 1 + 'created_at': '2013-01-01T00:00:00Z' + 'due_on': null + } + ] + + milestones.get_current {}, (err, warn, milestone) -> + assert.ifError err + assert.equal milestone.number, 1 + do done + # We always take from head because of request params. 'milestones - get current from > 1': (done) -> req.all_milestones = (opts, cb) -> @@ -51,6 +66,31 @@ module.exports = assert.equal milestone.number, 2 do done + 'milestones - get current from > 1 when there are milestones without due date': (done) -> + req.all_milestones = (opts, cb) -> + cb null, [ + { + 'number': 2 + 'created_at': '2013-01-01T00:00:00Z' + 'due_on': null + } + { + 'number': 1 + 'created_at': '2013-01-01T00:00:00Z' + 'due_on': '2013-02-01T00:00:00Z' + } + { + 'number': 3 + 'created_at': '2013-01-01T00:00:00Z' + 'due_on': '2013-02-15T00:00:00Z' + } + ] + + milestones.get_current {}, (err, warn, milestone) -> + assert.ifError err + assert.equal milestone.number, 1 + do done + 'milestones - get current when empty': (done) -> req.all_milestones = (opts, cb) -> cb null, []