Skip to content

Commit 77769b3

Browse files
authored
Merge pull request #82 from theantichris/fix/rollover-tasks
fix: rollover tasks
2 parents 6d0e01f + 2262b2e commit 77769b3

File tree

2 files changed

+120
-6
lines changed

2 files changed

+120
-6
lines changed

internal/models/daily/items.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,10 @@ func GetItems() []Task {
5050
fmt.Println(err2.Error())
5151
}
5252

53-
tasks := make([]Task, 0)
54-
csvutil.Unmarshal(content, &tasks)
53+
allTasks := make([]Task, 0)
54+
csvutil.Unmarshal(content, &allTasks)
5555

56-
for k := range tasks {
57-
tasks[k].ID = k + 1
58-
tasks[k].Status = enums.Pending
59-
}
56+
tasks := filterRolloverTasks(allTasks)
6057

6158
data, err2 := csvutil.Marshal(tasks)
6259
if err2 != nil {
@@ -99,3 +96,15 @@ func GetYesterdayPath() string {
9996
yesterday := time.Now().AddDate(0, 0, -1).Format("2006-01-02")
10097
return filepath.Join(home, config.AppConfig.General.NotesDir, ".daily", yesterday)
10198
}
99+
100+
func filterRolloverTasks(tasks []Task) []Task {
101+
result := make([]Task, 0)
102+
for _, task := range tasks {
103+
if task.Status == enums.Complete || task.Status == enums.Abandoned {
104+
continue
105+
}
106+
107+
result = append(result, task)
108+
}
109+
return result
110+
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package daily
2+
3+
import (
4+
"testing"
5+
6+
"github.com/SourcewareLab/Toney/v2/internal/enums"
7+
)
8+
9+
func TestFilterRolloverTasks(t *testing.T) {
10+
tests := []struct {
11+
name string
12+
input []Task
13+
expected []Task
14+
}{
15+
{
16+
name: "empty slice",
17+
input: []Task{},
18+
expected: []Task{},
19+
},
20+
{
21+
name: "all pending",
22+
input: []Task{
23+
{TaskTitle: "task1", Status: enums.Pending},
24+
{TaskTitle: "task2", Status: enums.Pending},
25+
},
26+
expected: []Task{
27+
{TaskTitle: "task1", Status: enums.Pending},
28+
{TaskTitle: "task2", Status: enums.Pending},
29+
},
30+
},
31+
{
32+
name: "all started",
33+
input: []Task{
34+
{TaskTitle: "task1", Status: enums.Started},
35+
{TaskTitle: "task2", Status: enums.Started},
36+
},
37+
expected: []Task{
38+
{TaskTitle: "task1", Status: enums.Started},
39+
{TaskTitle: "task2", Status: enums.Started},
40+
},
41+
},
42+
{
43+
name: "all complete",
44+
input: []Task{
45+
{TaskTitle: "task1", Status: enums.Complete},
46+
{TaskTitle: "task2", Status: enums.Complete},
47+
},
48+
expected: []Task{},
49+
},
50+
{
51+
name: "all abandoned",
52+
input: []Task{
53+
{TaskTitle: "task1", Status: enums.Abandoned},
54+
{TaskTitle: "task2", Status: enums.Abandoned},
55+
},
56+
expected: []Task{},
57+
},
58+
{
59+
name: "mixed statuses",
60+
input: []Task{
61+
{TaskTitle: "pending", Status: enums.Pending},
62+
{TaskTitle: "started", Status: enums.Started},
63+
{TaskTitle: "complete", Status: enums.Complete},
64+
{TaskTitle: "abandoned", Status: enums.Abandoned},
65+
},
66+
expected: []Task{
67+
{TaskTitle: "pending", Status: enums.Pending},
68+
{TaskTitle: "started", Status: enums.Started},
69+
},
70+
},
71+
{
72+
name: "preserves fields",
73+
input: []Task{
74+
{TaskTitle: "my task", TaskDesc: "my description", Status: enums.Pending},
75+
},
76+
expected: []Task{
77+
{TaskTitle: "my task", TaskDesc: "my description", Status: enums.Pending},
78+
},
79+
},
80+
}
81+
82+
for _, tt := range tests {
83+
t.Run(tt.name, func(t *testing.T) {
84+
got := filterRolloverTasks(tt.input)
85+
86+
if len(got) != len(tt.expected) {
87+
t.Fatalf("filterRolloverTasks() length = %d, want %d", len(got), len(tt.expected))
88+
}
89+
90+
for i := range got {
91+
if got[i].TaskTitle != tt.expected[i].TaskTitle {
92+
t.Errorf("filterRolloverTasks() [%d].TaskTitle = %q, want %q", i, got[i].TaskTitle, tt.expected[i].TaskTitle)
93+
}
94+
95+
if got[i].TaskDesc != tt.expected[i].TaskDesc {
96+
t.Errorf("filterRolloverTasks() [%d].TaskDesc = %q, want %q", i, got[i].TaskDesc, tt.expected[i].TaskDesc)
97+
}
98+
99+
if got[i].Status != tt.expected[i].Status {
100+
t.Errorf("filterRolloverTasks() [%d].Status = %d, want %d", i, got[i].Status, tt.expected[i].Status)
101+
}
102+
}
103+
})
104+
}
105+
}

0 commit comments

Comments
 (0)