@@ -9,119 +9,109 @@ import (
99 "github.com/stretchr/testify/require"
1010)
1111
12- func TestParseThemeConfiguration (t * testing.T ) {
13- tests := []struct {
14- name string
15- args []string
16- env map [string ]string
17- verify func (* testing.T , * config.Config )
18- }{
19- {
20- name : "default_light_theme_from_args" ,
21- args : []string {"go run ./cmd" , "--default-light-theme=corporate-light" },
22- verify : func (t * testing.T , conf * config.Config ) {
23- assert .Equal (t , "corporate-light" , conf .DefaultLightTheme )
24- assert .Equal (t , "" , conf .DefaultDarkTheme )
25- assert .Equal (t , "" , conf .ForceTheme )
26- },
27- },
28- {
29- name : "default_dark_theme_from_args" ,
30- args : []string {"go run ./cmd" , "--default-dark-theme=corporate-dark" },
31- verify : func (t * testing.T , conf * config.Config ) {
32- assert .Equal (t , "" , conf .DefaultLightTheme )
33- assert .Equal (t , "corporate-dark" , conf .DefaultDarkTheme )
34- assert .Equal (t , "" , conf .ForceTheme )
35- },
36- },
37- {
38- name : "both_default_themes_from_args" ,
39- args : []string {"go run ./cmd" , "--default-light-theme=corporate-light" , "--default-dark-theme=corporate-dark" },
40- verify : func (t * testing.T , conf * config.Config ) {
41- assert .Equal (t , "corporate-light" , conf .DefaultLightTheme )
42- assert .Equal (t , "corporate-dark" , conf .DefaultDarkTheme )
43- assert .Equal (t , "" , conf .ForceTheme )
44- },
45- },
46- {
47- name : "force_theme_from_args" ,
48- args : []string {"go run ./cmd" , "--force-theme=corporate-branded" },
49- verify : func (t * testing.T , conf * config.Config ) {
50- assert .Equal (t , "" , conf .DefaultLightTheme )
51- assert .Equal (t , "" , conf .DefaultDarkTheme )
52- assert .Equal (t , "corporate-branded" , conf .ForceTheme )
53- },
54- },
55- {
56- name : "force_theme_with_defaults" ,
57- args : []string {"go run ./cmd" , "--default-light-theme=light" , "--default-dark-theme=dark" , "--force-theme=corporate" },
58- verify : func (t * testing.T , conf * config.Config ) {
59- assert .Equal (t , "light" , conf .DefaultLightTheme )
60- assert .Equal (t , "dark" , conf .DefaultDarkTheme )
61- assert .Equal (t , "corporate" , conf .ForceTheme )
62- },
63- },
64- {
65- name : "theme_from_env" ,
66- args : []string {"go run ./cmd" },
67- env : map [string ]string {
68- "HEADLAMP_CONFIG_DEFAULT_LIGHT_THEME" : "env-light" ,
69- "HEADLAMP_CONFIG_DEFAULT_DARK_THEME" : "env-dark" ,
70- },
71- verify : func (t * testing.T , conf * config.Config ) {
72- assert .Equal (t , "env-light" , conf .DefaultLightTheme )
73- assert .Equal (t , "env-dark" , conf .DefaultDarkTheme )
74- },
75- },
76- {
77- name : "force_theme_from_env" ,
78- args : []string {"go run ./cmd" },
79- env : map [string ]string {
80- "HEADLAMP_CONFIG_FORCE_THEME" : "env-forced" ,
81- },
82- verify : func (t * testing.T , conf * config.Config ) {
83- assert .Equal (t , "env-forced" , conf .ForceTheme )
84- },
85- },
86- {
87- name : "args_override_env" ,
88- args : []string {"go run ./cmd" , "--default-light-theme=arg-theme" },
89- env : map [string ]string {
90- "HEADLAMP_CONFIG_DEFAULT_LIGHT_THEME" : "env-theme" ,
91- },
92- verify : func (t * testing.T , conf * config.Config ) {
93- assert .Equal (t , "arg-theme" , conf .DefaultLightTheme )
94- },
95- },
96- {
97- name : "no_theme_config" ,
98- args : []string {"go run ./cmd" },
99- verify : func (t * testing.T , conf * config.Config ) {
100- assert .Equal (t , "" , conf .DefaultLightTheme )
101- assert .Equal (t , "" , conf .DefaultDarkTheme )
102- assert .Equal (t , "" , conf .ForceTheme )
103- },
104- },
105- }
106-
107- for _ , tt := range tests {
108- t .Run (tt .name , func (t * testing.T ) {
109- if tt .env != nil {
110- for key , value := range tt .env {
111- os .Setenv (key , value )
112- }
113- defer func (env map [string ]string ) {
114- for key := range env {
115- os .Unsetenv (key )
116- }
117- }(tt .env )
118- }
119-
120- conf , err := config .Parse (tt .args )
121- require .NoError (t , err )
122- require .NotNil (t , conf )
123-
124- tt .verify (t , conf )
125- })
126- }
12+ func TestParseThemeConfiguration_DefaultLightTheme (t * testing.T ) {
13+ conf , err := config .Parse ([]string {"go run ./cmd" , "--default-light-theme=corporate-light" })
14+ require .NoError (t , err )
15+ require .NotNil (t , conf )
16+
17+ assert .Equal (t , "corporate-light" , conf .DefaultLightTheme )
18+ assert .Equal (t , "" , conf .DefaultDarkTheme )
19+ assert .Equal (t , "" , conf .ForceTheme )
20+ }
21+
22+ func TestParseThemeConfiguration_DefaultDarkTheme (t * testing.T ) {
23+ conf , err := config .Parse ([]string {"go run ./cmd" , "--default-dark-theme=corporate-dark" })
24+ require .NoError (t , err )
25+ require .NotNil (t , conf )
26+
27+ assert .Equal (t , "" , conf .DefaultLightTheme )
28+ assert .Equal (t , "corporate-dark" , conf .DefaultDarkTheme )
29+ assert .Equal (t , "" , conf .ForceTheme )
30+ }
31+
32+ func TestParseThemeConfiguration_BothDefaults (t * testing.T ) {
33+ conf , err := config .Parse ([]string {
34+ "go run ./cmd" ,
35+ "--default-light-theme=corporate-light" ,
36+ "--default-dark-theme=corporate-dark" ,
37+ })
38+ require .NoError (t , err )
39+ require .NotNil (t , conf )
40+
41+ assert .Equal (t , "corporate-light" , conf .DefaultLightTheme )
42+ assert .Equal (t , "corporate-dark" , conf .DefaultDarkTheme )
43+ assert .Equal (t , "" , conf .ForceTheme )
44+ }
45+
46+ func TestParseThemeConfiguration_ForceTheme (t * testing.T ) {
47+ conf , err := config .Parse ([]string {"go run ./cmd" , "--force-theme=corporate-branded" })
48+ require .NoError (t , err )
49+ require .NotNil (t , conf )
50+
51+ assert .Equal (t , "" , conf .DefaultLightTheme )
52+ assert .Equal (t , "" , conf .DefaultDarkTheme )
53+ assert .Equal (t , "corporate-branded" , conf .ForceTheme )
54+ }
55+
56+ func TestParseThemeConfiguration_ForceWithDefaults (t * testing.T ) {
57+ conf , err := config .Parse ([]string {
58+ "go run ./cmd" ,
59+ "--default-light-theme=light" ,
60+ "--default-dark-theme=dark" ,
61+ "--force-theme=corporate" ,
62+ })
63+ require .NoError (t , err )
64+ require .NotNil (t , conf )
65+
66+ assert .Equal (t , "light" , conf .DefaultLightTheme )
67+ assert .Equal (t , "dark" , conf .DefaultDarkTheme )
68+ assert .Equal (t , "corporate" , conf .ForceTheme )
69+ }
70+
71+ func TestParseThemeConfiguration_FromEnv (t * testing.T ) {
72+ os .Setenv ("HEADLAMP_CONFIG_DEFAULT_LIGHT_THEME" , "env-light" )
73+ os .Setenv ("HEADLAMP_CONFIG_DEFAULT_DARK_THEME" , "env-dark" )
74+ defer func () {
75+ os .Unsetenv ("HEADLAMP_CONFIG_DEFAULT_LIGHT_THEME" )
76+ os .Unsetenv ("HEADLAMP_CONFIG_DEFAULT_DARK_THEME" )
77+ }()
78+
79+ conf , err := config .Parse ([]string {"go run ./cmd" })
80+ require .NoError (t , err )
81+ require .NotNil (t , conf )
82+
83+ assert .Equal (t , "env-light" , conf .DefaultLightTheme )
84+ assert .Equal (t , "env-dark" , conf .DefaultDarkTheme )
85+ }
86+
87+ func TestParseThemeConfiguration_ForceFromEnv (t * testing.T ) {
88+ os .Setenv ("HEADLAMP_CONFIG_FORCE_THEME" , "env-forced" )
89+ defer os .Unsetenv ("HEADLAMP_CONFIG_FORCE_THEME" )
90+
91+ conf , err := config .Parse ([]string {"go run ./cmd" })
92+ require .NoError (t , err )
93+ require .NotNil (t , conf )
94+
95+ assert .Equal (t , "env-forced" , conf .ForceTheme )
96+ }
97+
98+ func TestParseThemeConfiguration_ArgsOverrideEnv (t * testing.T ) {
99+ os .Setenv ("HEADLAMP_CONFIG_DEFAULT_LIGHT_THEME" , "env-theme" )
100+ defer os .Unsetenv ("HEADLAMP_CONFIG_DEFAULT_LIGHT_THEME" )
101+
102+ conf , err := config .Parse ([]string {"go run ./cmd" , "--default-light-theme=arg-theme" })
103+ require .NoError (t , err )
104+ require .NotNil (t , conf )
105+
106+ assert .Equal (t , "arg-theme" , conf .DefaultLightTheme )
107+ }
108+
109+ func TestParseThemeConfiguration_NoConfig (t * testing.T ) {
110+ conf , err := config .Parse ([]string {"go run ./cmd" })
111+ require .NoError (t , err )
112+ require .NotNil (t , conf )
113+
114+ assert .Equal (t , "" , conf .DefaultLightTheme )
115+ assert .Equal (t , "" , conf .DefaultDarkTheme )
116+ assert .Equal (t , "" , conf .ForceTheme )
127117}
0 commit comments