-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathcharm_theme_test.go
More file actions
118 lines (98 loc) · 3.49 KB
/
charm_theme_test.go
File metadata and controls
118 lines (98 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// Copyright 2022-2026 Salesforce, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package style
import (
"testing"
huh "charm.land/huh/v2"
lipgloss "charm.land/lipgloss/v2"
"github.com/stretchr/testify/assert"
)
// styles is a helper that resolves the ThemeSlack for testing (isDark=false).
func styles() *huh.Styles {
return ThemeSlack().Theme(false)
}
func TestThemeSlack(t *testing.T) {
t.Run("returns a non-nil theme", func(t *testing.T) {
s := styles()
assert.NotNil(t, s)
})
t.Run("focused title is bold", func(t *testing.T) {
s := styles()
assert.True(t, s.Focused.Title.GetBold())
})
t.Run("focused title uses aubergine foreground", func(t *testing.T) {
s := styles()
assert.Equal(t, slackAubergine, s.Focused.Title.GetForeground())
})
t.Run("focused select selector renders cursor", func(t *testing.T) {
s := styles()
rendered := s.Focused.SelectSelector.Render()
assert.Contains(t, rendered, "❱")
})
t.Run("focused multi-select selected prefix renders checkmark", func(t *testing.T) {
s := styles()
rendered := s.Focused.SelectedPrefix.Render()
assert.Contains(t, rendered, "✓")
})
t.Run("focused multi-select unselected prefix renders brackets", func(t *testing.T) {
s := styles()
rendered := s.Focused.UnselectedPrefix.Render()
assert.Contains(t, rendered, "[ ]")
})
t.Run("focused error message uses red foreground", func(t *testing.T) {
s := styles()
assert.Equal(t, slackRed, s.Focused.ErrorMessage.GetForeground())
})
t.Run("focused button uses aubergine background", func(t *testing.T) {
s := styles()
assert.Equal(t, slackAubergine, s.Focused.FocusedButton.GetBackground())
})
t.Run("focused button is bold", func(t *testing.T) {
s := styles()
assert.True(t, s.Focused.FocusedButton.GetBold())
})
t.Run("blurred select selector is blank", func(t *testing.T) {
s := styles()
rendered := s.Blurred.SelectSelector.Render()
assert.Contains(t, rendered, " ")
assert.NotContains(t, rendered, "❱")
})
t.Run("blurred multi-select selector is blank", func(t *testing.T) {
s := styles()
rendered := s.Blurred.MultiSelectSelector.Render()
assert.Contains(t, rendered, " ")
assert.NotContains(t, rendered, "❱")
})
t.Run("blurred border is hidden", func(t *testing.T) {
s := styles()
borderStyle := s.Blurred.Base.GetBorderStyle()
assert.Equal(t, lipgloss.HiddenBorder(), borderStyle)
})
t.Run("focused border uses aubergine", func(t *testing.T) {
s := styles()
assert.Equal(t, slackAubergine, s.Focused.Base.GetBorderLeftForeground())
})
t.Run("focused text input prompt uses blue", func(t *testing.T) {
s := styles()
assert.Equal(t, slackBlue, s.Focused.TextInput.Prompt.GetForeground())
})
t.Run("focused text input cursor uses yellow", func(t *testing.T) {
s := styles()
assert.Equal(t, slackYellow, s.Focused.TextInput.Cursor.GetForeground())
})
t.Run("focused selected option uses green", func(t *testing.T) {
s := styles()
assert.Equal(t, slackGreen, s.Focused.SelectedOption.GetForeground())
})
}