Skip to content

Commit 6d0e01f

Browse files
authored
Merge pull request #84 from theantichris/fix/issue-83/task-colors
fix: use enum values directly for task status color
2 parents d91ddcc + bb6c232 commit 6d0e01f

File tree

2 files changed

+74
-6
lines changed

2 files changed

+74
-6
lines changed

internal/models/taskPopup/select.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,21 @@ func (m *SelectStatus) View() string {
6161
}
6262

6363
func (m SelectStatus) GetText() string {
64-
text := ""
64+
var text strings.Builder
6565
style := lipgloss.NewStyle().Width(m.Width).Padding(0, 2).Foreground(colors.ColorPalette().Text)
6666

6767
for idx, val := range m.Opts {
68-
line := m.Opts[val]
68+
line := val
6969
if m.Selected == idx {
70-
text += style.Background(colors.ColorPalette().MenuSelectedBg).
70+
text.WriteString(style.Background(colors.ColorPalette().MenuSelectedBg).
7171
Foreground(colors.ColorPalette().MenuSelectedText).
72-
Render(m.TitleMap[line]) + "\n"
72+
Render(m.TitleMap[line]) + "\n")
7373

7474
continue
7575
}
7676

77-
text += style.Render(m.TitleMap[line]) + "\n"
77+
text.WriteString(style.Render(m.TitleMap[line]) + "\n")
7878
}
7979

80-
return strings.TrimSuffix(text, "\n")
80+
return strings.TrimSuffix(text.String(), "\n")
8181
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package taskpopup
2+
3+
import (
4+
"strings"
5+
"testing"
6+
7+
"github.com/SourcewareLab/Toney/v2/internal/enums"
8+
)
9+
10+
func TestGetText(t *testing.T) {
11+
titleMap := map[enums.TaskStatus]string{
12+
enums.Pending: "Pending",
13+
enums.Started: "Started",
14+
enums.Complete: "Complete",
15+
enums.Abandoned: "Abandoned",
16+
}
17+
18+
tests := []struct {
19+
name string
20+
opts []enums.TaskStatus
21+
selected int
22+
expectedLabels []string
23+
}{
24+
{
25+
name: "default order",
26+
opts: []enums.TaskStatus{enums.Pending, enums.Started, enums.Abandoned, enums.Complete},
27+
selected: 0,
28+
expectedLabels: []string{"Pending", "Started", "Abandoned", "Complete"},
29+
},
30+
{
31+
name: "non-default order",
32+
opts: []enums.TaskStatus{enums.Complete, enums.Started, enums.Pending, enums.Abandoned},
33+
selected: 0,
34+
expectedLabels: []string{"Complete", "Started", "Pending", "Abandoned"},
35+
},
36+
{
37+
name: "selected last item",
38+
opts: []enums.TaskStatus{enums.Pending, enums.Started, enums.Abandoned, enums.Complete},
39+
selected: 3,
40+
expectedLabels: []string{"Pending", "Started", "Abandoned", "Complete"},
41+
},
42+
}
43+
44+
for _, tt := range tests {
45+
t.Run(tt.name, func(t *testing.T) {
46+
s := SelectStatus{
47+
Width: 20,
48+
Height: 10,
49+
Opts: tt.opts,
50+
TitleMap: titleMap,
51+
Selected: tt.selected,
52+
}
53+
54+
got := s.GetText()
55+
lines := strings.Split(got, "\n")
56+
57+
if len(lines) != len(tt.expectedLabels) {
58+
t.Fatalf("GetText() returned %d lines, want %d", len(lines), len(tt.expectedLabels))
59+
}
60+
61+
for i, expected := range tt.expectedLabels {
62+
if !strings.Contains(lines[i], expected) {
63+
t.Errorf("GetText() line %d = %q, want it to contain %q", i, lines[i], expected)
64+
}
65+
}
66+
})
67+
}
68+
}

0 commit comments

Comments
 (0)