Skip to content

Commit b6dde83

Browse files
fixes go linter issue, doc build issue, and frontend test issue
Signed-off-by: Guillaume BERNARD <guillaume.bernard@live.fr>
1 parent aa4b6ee commit b6dde83

File tree

5 files changed

+117
-122
lines changed

5 files changed

+117
-122
lines changed

backend/pkg/config/config_theme_test.go

Lines changed: 105 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

frontend/src/components/App/Layout.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import AlertNotification from '../common/AlertNotification';
4444
import DetailsDrawer from '../common/Resource/DetailsDrawer';
4545
import Sidebar, { NavigationTabs } from '../Sidebar';
4646
import RouteSwitcher from './RouteSwitcher';
47-
import themeSlice from './themeSlice';
47+
import { applyBackendThemeConfig } from './themeSlice';
4848
import TopBar from './TopBar';
4949
import VersionDialog from './VersionDialog';
5050

@@ -171,7 +171,7 @@ const fetchConfig = (dispatch: Dispatch<UnknownAction>) => {
171171
// Apply backend theme configuration if provided
172172
if (config?.defaultLightTheme || config?.defaultDarkTheme || config?.forceTheme) {
173173
dispatch(
174-
themeSlice.actions.applyBackendThemeConfig({
174+
applyBackendThemeConfig({
175175
defaultLightTheme: config.defaultLightTheme,
176176
defaultDarkTheme: config.defaultDarkTheme,
177177
forceTheme: config.forceTheme,

frontend/src/components/App/Settings/__snapshots__/Settings.General.stories.storyshot

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@
431431
class="MuiBox-root css-exrnj3"
432432
>
433433
<div
434-
class="MuiBox-root css-1a2ne5x"
434+
class="MuiBox-root css-1smd7c5"
435435
>
436436
<div
437437
class="MuiBox-root css-1yhz2ch"

frontend/src/components/App/themeSlice.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,11 @@ export const useCurrentAppTheme = () => {
132132
return currentTheme ?? defaultAppThemes[0];
133133
};
134134

135-
export const { setBrandingAppLogoComponent, setTheme } = themeSlice.actions;
135+
export const {
136+
setBrandingAppLogoComponent,
137+
setTheme,
138+
applyBackendThemeConfig,
139+
ensureValidThemeName,
140+
} = themeSlice.actions;
136141
export { themeSlice };
137142
export default themeSlice.reducer;

frontend/src/plugin/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import * as Recharts from 'recharts';
3737
import semver from 'semver';
3838
import { Activity } from '../components/activity/Activity';
3939
import { runCommand } from '../components/App/runCommand';
40-
import { themeSlice } from '../components/App/themeSlice';
40+
import { applyBackendThemeConfig, ensureValidThemeName } from '../components/App/themeSlice';
4141
import * as CommonComponents from '../components/common';
4242
import { addBackstageAuthHeaders } from '../helpers/addBackstageAuthHeaders';
4343
import { getAppUrl } from '../helpers/getAppUrl';
@@ -704,7 +704,7 @@ async function afterPluginsRun(
704704
);
705705

706706
// Refresh theme name if the theme that was used from a plugin was deleted
707-
store.dispatch(themeSlice.actions.ensureValidThemeName());
707+
store.dispatch(ensureValidThemeName());
708708

709709
// Reapply backend theme configuration now that plugins (which may provide themes) are loaded
710710
const backendThemeConfig = store.getState().config;
@@ -714,7 +714,7 @@ async function afterPluginsRun(
714714
backendThemeConfig?.forceTheme
715715
) {
716716
store.dispatch(
717-
themeSlice.actions.applyBackendThemeConfig({
717+
applyBackendThemeConfig({
718718
defaultLightTheme: backendThemeConfig.defaultLightTheme,
719719
defaultDarkTheme: backendThemeConfig.defaultDarkTheme,
720720
forceTheme: backendThemeConfig.forceTheme,

0 commit comments

Comments
 (0)