gte/internal/task/localtask_test.go

170 lines
4.1 KiB
Go
Raw Normal View History

2021-08-22 13:29:04 +02:00
package task_test
import (
"testing"
2021-09-19 11:59:26 +02:00
"ewintr.nl/go-kit/test"
"ewintr.nl/gte/internal/task"
2021-08-22 13:29:04 +02:00
)
func TestLocalTaskApply(t *testing.T) {
for _, tc := range []struct {
name string
input *task.LocalTask
exp *task.LocalTask
}{
{
name: "empty",
input: &task.LocalTask{
Task: task.Task{
Action: "action",
Project: "project",
Due: task.NewDate(2021, 8, 22),
},
LocalUpdate: &task.LocalUpdate{},
},
exp: &task.LocalTask{
Task: task.Task{
Action: "action",
Project: "project",
Due: task.NewDate(2021, 8, 22),
},
LocalUpdate: &task.LocalUpdate{},
},
},
{
name: "all",
input: &task.LocalTask{
Task: task.Task{
Version: 3,
},
LocalUpdate: &task.LocalUpdate{
ForVersion: 3,
Fields: []string{task.FIELD_ACTION, task.FIELD_PROJECT, task.FIELD_DUE, task.FIELD_DONE},
Action: "action",
Project: "project",
Due: task.NewDate(2021, 8, 22),
Done: true,
},
},
exp: &task.LocalTask{
Task: task.Task{
Version: 3,
Action: "action",
Project: "project",
Due: task.NewDate(2021, 8, 22),
Done: true,
},
LocalUpdate: &task.LocalUpdate{},
},
},
} {
t.Run(tc.name, func(t *testing.T) {
tc.input.ApplyUpdate()
test.Equals(t, tc.exp, tc.input)
})
}
}
2021-08-22 16:45:03 +02:00
func TestLocalUpdateAdd(t *testing.T) {
for _, tc := range []struct {
name string
start *task.LocalUpdate
add *task.LocalUpdate
exp *task.LocalUpdate
}{
{
name: "empty",
start: &task.LocalUpdate{},
add: &task.LocalUpdate{},
exp: &task.LocalUpdate{},
},
{
name: "empty add",
start: &task.LocalUpdate{
ForVersion: 2,
Fields: []string{task.FIELD_ACTION, task.FIELD_PROJECT, task.FIELD_DUE, task.FIELD_RECUR, task.FIELD_DONE},
Action: "action",
Project: "project",
Due: task.NewDate(2021, 8, 22),
Recur: task.NewRecurrer("today, daily"),
Done: true,
},
add: &task.LocalUpdate{},
exp: &task.LocalUpdate{
ForVersion: 2,
Fields: []string{task.FIELD_ACTION, task.FIELD_PROJECT, task.FIELD_DUE, task.FIELD_RECUR, task.FIELD_DONE},
Action: "action",
Project: "project",
Due: task.NewDate(2021, 8, 22),
Recur: task.NewRecurrer("today, daily"),
Done: true,
},
},
{
name: "empty start",
start: &task.LocalUpdate{},
add: &task.LocalUpdate{
ForVersion: 2,
Fields: []string{task.FIELD_ACTION, task.FIELD_PROJECT, task.FIELD_PROJECT, task.FIELD_DUE, task.FIELD_RECUR, task.FIELD_DONE},
Action: "action",
Project: "project",
Due: task.NewDate(2021, 8, 22),
Recur: task.NewRecurrer("today, daily"),
Done: true,
},
exp: &task.LocalUpdate{
ForVersion: 2,
Fields: []string{task.FIELD_ACTION, task.FIELD_PROJECT, task.FIELD_DUE, task.FIELD_RECUR, task.FIELD_DONE},
Action: "action",
Project: "project",
Due: task.NewDate(2021, 8, 22),
Recur: task.NewRecurrer("today, daily"),
Done: true,
},
},
{
name: "too old",
start: &task.LocalUpdate{
ForVersion: 3,
Fields: []string{},
},
add: &task.LocalUpdate{
ForVersion: 2,
Fields: []string{task.FIELD_ACTION},
},
exp: &task.LocalUpdate{
ForVersion: 3,
Fields: []string{},
},
},
{
name: "adding fields",
start: &task.LocalUpdate{
ForVersion: 3,
Fields: []string{task.FIELD_ACTION, task.FIELD_PROJECT},
Action: "action-1",
Project: "project-1",
},
add: &task.LocalUpdate{
ForVersion: 3,
Fields: []string{task.FIELD_PROJECT, task.FIELD_DUE},
Project: "project-2",
Due: task.NewDate(2021, 8, 22),
},
exp: &task.LocalUpdate{
ForVersion: 3,
Fields: []string{task.FIELD_ACTION, task.FIELD_PROJECT, task.FIELD_DUE},
Action: "action-1",
Project: "project-2",
Due: task.NewDate(2021, 8, 22),
},
},
} {
t.Run(tc.name, func(t *testing.T) {
tc.start.Add(tc.add)
test.Equals(t, tc.exp, tc.start)
})
}
}