gte/internal/task/date_test.go

172 lines
3.1 KiB
Go
Raw Normal View History

2021-01-30 11:20:12 +01:00
package task_test
import (
"testing"
"git.sr.ht/~ewintr/go-kit/test"
"git.sr.ht/~ewintr/gte/internal/task"
)
2021-01-30 15:25:25 +01:00
func TestNewDateFromString(t *testing.T) {
task.Today = task.NewDate(2021, 1, 30)
for _, tc := range []struct {
name string
input string
exp task.Date
}{
{
name: "empty",
exp: task.Date{},
},
{
name: "no date",
input: "no date",
exp: task.Date{},
},
{
name: "normal",
input: "2021-01-30 (saturday)",
exp: task.NewDate(2021, 1, 30),
},
{
name: "short",
input: "2021-01-30",
exp: task.NewDate(2021, 1, 30),
},
{
name: "english dayname lowercase",
input: "monday",
exp: task.NewDate(2021, 2, 1),
},
{
name: "english dayname capitalized",
input: "Monday",
exp: task.NewDate(2021, 2, 1),
},
{
2021-02-01 15:34:56 +01:00
name: "dutch dayname lowercase",
2021-01-30 15:25:25 +01:00
input: "maandag",
exp: task.NewDate(2021, 2, 1),
},
2021-02-01 07:20:21 +01:00
{
name: "today english",
input: "today",
exp: task.NewDate(2021, 1, 30),
},
{
name: "today dutch",
input: "vandaag",
exp: task.NewDate(2021, 1, 30),
},
{
name: "tomorrow english",
input: "tomorrow",
exp: task.NewDate(2021, 1, 31),
},
{
name: "tomorrow dutch",
input: "morgen",
exp: task.NewDate(2021, 1, 31),
},
2021-02-01 15:34:56 +01:00
{
name: "day after tomorrow english",
input: "day after tomorrow",
exp: task.NewDate(2021, 2, 1),
},
{
name: "day after tomorrow dutch",
input: "overmorgen",
exp: task.NewDate(2021, 2, 1),
},
{
name: "this week english",
input: "this week",
exp: task.NewDate(2021, 2, 5),
},
{
name: "this week dutch",
input: "deze week",
exp: task.NewDate(2021, 2, 5),
},
{
name: "next week english",
input: "next week",
exp: task.NewDate(2021, 2, 12),
},
{
name: "next week dutch",
input: "volgende week",
exp: task.NewDate(2021, 2, 12),
},
{
name: "this sprint english",
input: "this sprint",
exp: task.NewDate(2021, 2, 11),
},
{
name: "this sprint dutch",
input: "deze sprint",
exp: task.NewDate(2021, 2, 11),
},
2021-01-30 15:25:25 +01:00
} {
t.Run(tc.name, func(t *testing.T) {
test.Equals(t, tc.exp, task.NewDateFromString(tc.input))
})
}
}
2021-01-30 11:20:12 +01:00
func TestDateString(t *testing.T) {
for _, tc := range []struct {
name string
2021-01-30 15:25:25 +01:00
date task.Date
2021-01-30 11:20:12 +01:00
exp string
}{
{
name: "zero",
date: task.NewDate(0, 0, 0),
exp: "no date",
},
{
name: "normal",
date: task.NewDate(2021, 1, 30),
2021-01-30 15:25:25 +01:00
exp: "2021-01-30 (saturday)",
2021-01-30 11:20:12 +01:00
},
{
name: "normalize",
date: task.NewDate(2021, 1, 32),
2021-01-30 15:25:25 +01:00
exp: "2021-02-01 (monday)",
2021-01-30 11:20:12 +01:00
},
} {
t.Run(tc.name, func(t *testing.T) {
test.Equals(t, tc.exp, tc.date.String())
})
}
}
2021-01-31 12:11:02 +01:00
func TestDateAfter(t *testing.T) {
day := task.NewDate(2021, 1, 31)
for _, tc := range []struct {
name string
tDay task.Date
exp bool
}{
{
name: "after",
tDay: task.NewDate(2021, 1, 30),
exp: true,
},
{
name: "on",
tDay: day,
},
{
name: "before",
tDay: task.NewDate(2021, 2, 1),
},
} {
t.Run(tc.name, func(t *testing.T) {
test.Equals(t, tc.exp, day.After(tc.tDay))
})
}
}