Files

94 lines
2.3 KiB
Go

package plugin
import (
"testing"
)
func TestResolveThemeFromStorage(t *testing.T) {
tests := []struct {
name string
storageJSON string
wantTheme string
wantResolved string
}{
{
name: "zustand dark theme",
storageJSON: `{"state":{"theme":"dark","resolvedTheme":"dark"},"version":0}`,
wantTheme: "dark",
wantResolved: "dark",
},
{
name: "zustand white theme",
storageJSON: `{"state":{"theme":"white","resolvedTheme":"light"},"version":0}`,
wantTheme: "white",
wantResolved: "light",
},
{
name: "zustand light theme",
storageJSON: `{"state":{"theme":"light","resolvedTheme":"light"},"version":0}`,
wantTheme: "light",
wantResolved: "light",
},
{
name: "zustand auto theme with resolved dark",
storageJSON: `{"state":{"theme":"auto","resolvedTheme":"dark"},"version":0}`,
wantTheme: "auto",
wantResolved: "dark",
},
{
name: "zustand auto theme with resolved light",
storageJSON: `{"state":{"theme":"auto","resolvedTheme":"light"},"version":0}`,
wantTheme: "auto",
wantResolved: "light",
},
{
name: "simple json dark",
storageJSON: `{"theme":"dark"}`,
wantTheme: "dark",
wantResolved: "dark",
},
{
name: "simple json white",
storageJSON: `{"theme":"white"}`,
wantTheme: "white",
wantResolved: "light",
},
{
name: "raw string dark",
storageJSON: `"dark"`,
wantTheme: "dark",
wantResolved: "dark",
},
{
name: "raw string white",
storageJSON: `white`,
wantTheme: "white",
wantResolved: "white",
},
{
name: "empty string defaults to auto/light",
storageJSON: "",
wantTheme: "auto",
wantResolved: "light",
},
{
name: "invalid json defaults to auto/light",
storageJSON: `{not-valid-json`,
wantTheme: "auto",
wantResolved: "light",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
gotTheme, gotResolved := ResolveThemeFromStorage(tt.storageJSON)
if gotTheme != tt.wantTheme {
t.Errorf("theme = %q, want %q", gotTheme, tt.wantTheme)
}
if gotResolved != tt.wantResolved {
t.Errorf("resolved = %q, want %q", gotResolved, tt.wantResolved)
}
})
}
}