Do not read in the "theme" setting at the project level (#3845)

* Do not read in the "theme" setting at the project level

* Add a couple unit tests
This commit is contained in:
Frank Noirot
2024-09-10 15:15:20 -04:00
committed by GitHub
parent 900bac999c
commit f9eef6397f
2 changed files with 68 additions and 1 deletions

View File

@ -0,0 +1,67 @@
import { DeepPartial } from 'lib/types'
import { Configuration } from 'wasm-lib/kcl/bindings/Configuration'
import {
configurationToSettingsPayload,
projectConfigurationToSettingsPayload,
setSettingsAtLevel,
} from './settingsUtils'
import { createSettings } from './initialSettings'
describe(`testing settings initialization`, () => {
it(`sets settings at the 'user' level`, () => {
let settings = createSettings()
const appConfiguration: DeepPartial<Configuration> = {
settings: {
app: {
appearance: {
theme: 'dark',
color: 190,
},
},
},
}
const appSettingsPayload = configurationToSettingsPayload(appConfiguration)
setSettingsAtLevel(settings, 'user', appSettingsPayload)
expect(settings.app.theme.current).toBe('dark')
expect(settings.app.themeColor.current).toBe('190')
})
it(`doesn't read theme from project settings`, () => {
let settings = createSettings()
const appConfiguration: DeepPartial<Configuration> = {
settings: {
app: {
appearance: {
theme: 'dark',
color: 190,
},
},
},
}
const projectConfiguration: DeepPartial<Configuration> = {
settings: {
app: {
appearance: {
theme: 'light',
color: 200,
},
},
},
}
const appSettingsPayload = configurationToSettingsPayload(appConfiguration)
const projectSettingsPayload =
projectConfigurationToSettingsPayload(projectConfiguration)
setSettingsAtLevel(settings, 'user', appSettingsPayload)
setSettingsAtLevel(settings, 'project', projectSettingsPayload)
// The 'project'-level for `theme` setting should be ignored completely
expect(settings.app.theme.current).toBe('dark')
// But the 'project'-level for `themeColor` setting should be applied
expect(settings.app.themeColor.current).toBe('200')
})
})

View File

@ -72,7 +72,7 @@ export function projectConfigurationToSettingsPayload(
): DeepPartial<SaveSettingsPayload> { ): DeepPartial<SaveSettingsPayload> {
return { return {
app: { app: {
theme: appThemeToTheme(configuration?.settings?.app?.appearance?.theme), // do not read in `theme`, because it is blocked on the project level
themeColor: configuration?.settings?.app?.appearance?.color themeColor: configuration?.settings?.app?.appearance?.color
? configuration?.settings?.app?.appearance?.color.toString() ? configuration?.settings?.app?.appearance?.color.toString()
: undefined, : undefined,