Files
stufflog3/usecases/sprints/burndown_test.go
T
gisle a70bb4bb23
continuous-integration/drone/push Build is passing
add burndown stats to sprint API.
2022-07-28 18:33:48 +02:00

73 lines
1.6 KiB
Go

package sprints
import (
"git.aiterp.net/stufflog3/stufflog3/models"
"github.com/go-playground/assert/v2"
"testing"
"time"
)
func TestBurndownGenerator_Add(t *testing.T) {
bg := burndownGenerator{}
// This is too early on the second, and counts as the first.
bg.Add(td(3, 2, 20), 14)
assert.Equal(t, bg.Points, []BurndownDataPoint{
{Date: d(2), Value: 14},
})
// Add some more data points in order
bg.Add(td(3, 14, 11), 4)
bg.Add(td(4, 6, 44), 3)
bg.Add(td(21, 11, 24), 20)
assert.Equal(t, bg.Points, []BurndownDataPoint{
{Date: d(2), Value: 14},
{Date: d(3), Value: 18},
{Date: d(4), Value: 21},
{Date: d(21), Value: 41},
})
// Add ones out of order.
bg.Add(td(7, 21, 12), 2)
bg.Add(td(2, 15, 22), 1)
assert.Equal(t, bg.Points, []BurndownDataPoint{
{Date: d(2), Value: 15},
{Date: d(3), Value: 19},
{Date: d(4), Value: 22},
{Date: d(7), Value: 24},
{Date: d(21), Value: 44},
})
// Add one at the start
bg.Add(td(1, 11, 16), 1)
assert.Equal(t, bg.Points, []BurndownDataPoint{
{Date: d(1), Value: 1},
{Date: d(2), Value: 16},
{Date: d(3), Value: 20},
{Date: d(4), Value: 23},
{Date: d(7), Value: 25},
{Date: d(21), Value: 45},
})
// Add one more in the middle for good measure
bg.Add(td(5, 14, 33), 10)
assert.Equal(t, bg.Points, []BurndownDataPoint{
{Date: d(1), Value: 1},
{Date: d(2), Value: 16},
{Date: d(3), Value: 20},
{Date: d(4), Value: 23},
{Date: d(5), Value: 33},
{Date: d(7), Value: 35},
{Date: d(21), Value: 55},
})
}
func d(dd int) models.Date {
return models.Date{2022, 7, dd}
}
func td(dd, hh, mm int) time.Time {
return time.Date(2022, time.July, dd, hh, mm, 17, 0, time.UTC)
}