gte/internal/process/list_test.go

115 lines
2.5 KiB
Go
Raw Normal View History

2021-07-09 09:42:44 +02:00
package process_test
import (
"errors"
2021-08-25 06:52:48 +02:00
"sort"
2021-07-09 09:42:44 +02:00
"testing"
"git.ewintr.nl/go-kit/test"
"git.ewintr.nl/gte/internal/process"
"git.ewintr.nl/gte/internal/storage"
"git.ewintr.nl/gte/internal/task"
)
func TestListProcess(t *testing.T) {
date1 := task.NewDate(2021, 7, 9)
date2 := task.NewDate(2021, 7, 10)
date3 := task.NewDate(2021, 7, 11)
task1 := &task.Task{
Id: "id1",
Version: 1,
Action: "action1",
Folder: task.FOLDER_NEW,
2021-08-09 06:46:13 +02:00
Project: "project1",
2021-07-09 09:42:44 +02:00
}
task2 := &task.Task{
Id: "id2",
Version: 1,
Action: "action2",
Due: date1,
Folder: task.FOLDER_PLANNED,
2021-08-09 06:46:13 +02:00
Project: "project2",
2021-07-09 09:42:44 +02:00
}
task3 := &task.Task{
Id: "id3",
Version: 1,
Action: "action3",
Due: date2,
Folder: task.FOLDER_PLANNED,
2021-08-09 06:46:13 +02:00
Project: "project1",
2021-07-09 09:42:44 +02:00
}
task4 := &task.Task{
Id: "id4",
Version: 1,
Action: "action4",
Due: date3,
Folder: task.FOLDER_PLANNED,
2021-08-09 06:46:13 +02:00
Project: "project2",
2021-07-09 09:42:44 +02:00
}
allTasks := []*task.Task{task1, task2, task3, task4}
2021-08-25 06:52:48 +02:00
localTask2 := &task.LocalTask{Task: *task2, LocalUpdate: &task.LocalUpdate{}}
localTask3 := &task.LocalTask{Task: *task3, LocalUpdate: &task.LocalUpdate{}}
localTask4 := &task.LocalTask{Task: *task4, LocalUpdate: &task.LocalUpdate{}}
2021-07-09 09:42:44 +02:00
local := storage.NewMemory()
test.OK(t, local.SetTasks(allTasks))
t.Run("invalid reqs", func(t *testing.T) {
list := process.NewList(local, process.ListReqs{})
_, actErr := list.Process()
test.Assert(t, errors.Is(actErr, process.ErrInvalidReqs), "expected invalid reqs err")
})
for _, tc := range []struct {
name string
reqs process.ListReqs
2021-08-20 09:06:35 +02:00
exp []*task.LocalTask
2021-07-09 09:42:44 +02:00
}{
{
name: "due",
reqs: process.ListReqs{
Due: date2,
},
2021-08-20 09:06:35 +02:00
exp: []*task.LocalTask{localTask3},
2021-07-09 09:42:44 +02:00
},
{
name: "due and before",
reqs: process.ListReqs{
Due: date2,
IncludeBefore: true,
},
2021-08-20 09:06:35 +02:00
exp: []*task.LocalTask{localTask2, localTask3},
2021-07-09 09:42:44 +02:00
},
2021-08-09 06:46:13 +02:00
{
name: "folder",
reqs: process.ListReqs{
Folder: task.FOLDER_PLANNED,
},
2021-08-20 09:06:35 +02:00
exp: []*task.LocalTask{localTask2, localTask3, localTask4},
2021-08-09 06:46:13 +02:00
},
{
name: "project",
reqs: process.ListReqs{
Project: "project2",
},
2021-08-20 09:06:35 +02:00
exp: []*task.LocalTask{localTask2, localTask4},
2021-08-09 06:46:13 +02:00
},
2021-07-09 09:42:44 +02:00
} {
t.Run(tc.name, func(t *testing.T) {
list := process.NewList(local, tc.reqs)
2021-08-25 06:52:48 +02:00
actRes, err := list.Process()
2021-07-09 09:42:44 +02:00
test.OK(t, err)
2021-08-25 06:52:48 +02:00
act := actRes.Tasks
for _, a := range act {
a.LocalId = 0
}
sAct := task.ById(act)
sExp := task.ById(tc.exp)
sort.Sort(sAct)
sort.Sort(sExp)
test.Equals(t, sExp, sAct)
2021-07-09 09:42:44 +02:00
})
}
}