clone

fifteen puzzle games for the terminal, with daily puzzles, weekly ladders and xp, built on bubble tea

chore/app-model-decomp
puzzletea / app / markdown_style_test.go
markdown_style_test.go 2.5K
1package app23import (4 "testing"56 "github.com/FelineStateMachine/puzzletea/puzzle"7 "github.com/FelineStateMachine/puzzletea/registry"8 "github.com/FelineStateMachine/puzzletea/theme"9)1011func TestHelpMarkdownStyleUsesPaletteColors(t *testing.T) {12 if err := theme.Apply(""); err != nil {13 t.Fatalf("apply default theme: %v", err)14 }15 t.Cleanup(func() { _ = theme.Apply("") })1617 p := theme.Current()18 style := helpMarkdownStyle(p)1920 if got := *style.H1.Color; got != hexColor(p.Accent) {21 t.Fatalf("H1 color = %q, want %q", got, hexColor(p.Accent))22 }23 if got := *style.Code.StylePrimitive.BackgroundColor; got != hexColor(p.Surface) {24 t.Fatalf("inline code background = %q, want %q", got, hexColor(p.Surface))25 }26 if got := *style.Link.Color; got != hexColor(p.Highlight) {27 t.Fatalf("link color = %q, want %q", got, hexColor(p.Highlight))28 }29}3031func TestHelpMarkdownThemeKeyChangesWithTheme(t *testing.T) {32 if err := theme.Apply(""); err != nil {33 t.Fatalf("apply default theme: %v", err)34 }35 t.Cleanup(func() { _ = theme.Apply("") })3637 defaultKey := helpMarkdownThemeKey(theme.Current())3839 if err := theme.Apply("Dracula"); err != nil {40 t.Fatalf("apply Dracula theme: %v", err)41 }4243 draculaKey := helpMarkdownThemeKey(theme.Current())44 if draculaKey == defaultKey {45 t.Fatalf("theme key did not change across themes: %q", draculaKey)46 }47}4849func TestUpdateHelpDetailViewportRebuildsRendererAfterThemeChange(t *testing.T) {50 if err := theme.Apply(""); err != nil {51 t.Fatalf("apply default theme: %v", err)52 }53 t.Cleanup(func() { _ = theme.Apply("") })5455 m := model{56 width: 100,57 height: 30,58 help: helpState{59 category: registry.Entry{60 Definition: puzzle.Definition{Name: "Nonogram"},61 Help: "# Nonogram\n\n- clue\n",62 },63 },64 }6566 m = m.updateHelpDetailViewport()67 if m.help.renderer == nil {68 t.Fatal("expected initial help renderer")69 }7071 initialRenderer := m.help.renderer72 initialThemeKey := m.help.rendererTheme7374 m = m.updateHelpDetailViewport()75 if m.help.renderer != initialRenderer {76 t.Fatal("expected help renderer to be reused when width and theme are unchanged")77 }7879 if err := theme.Apply("Dracula"); err != nil {80 t.Fatalf("apply Dracula theme: %v", err)81 }8283 m = m.updateHelpDetailViewport()84 if m.help.renderer == nil {85 t.Fatal("expected help renderer after theme change")86 }87 if m.help.renderer == initialRenderer {88 t.Fatal("expected help renderer to rebuild after theme change")89 }90 if m.help.rendererTheme == initialThemeKey {91 t.Fatalf("renderer theme key = %q, want change from %q", m.help.rendererTheme, initialThemeKey)92 }93}