package services import ( "database/sql" "testing" ) func newTestStore(t *testing.T) *SuiStore { t.Helper() db, err := sql.Open("sqlite", ":memory:") if err != nil { t.Fatalf("open sqlite: %v", err) } t.Cleanup(func() { _ = db.Close() }) if err := Migrate(db); err != nil { t.Fatalf("migrate: %v", err) } return &SuiStore{DB: db} } func TestMigrateCreatesDefaultDataOnce(t *testing.T) { store := newTestStore(t) if err := Migrate(store.DB); err != nil { t.Fatalf("second migrate: %v", err) } var hotkeyCount int if err := store.DB.QueryRow("SELECT COUNT(*) FROM hotkeys").Scan(&hotkeyCount); err != nil { t.Fatalf("count hotkeys: %v", err) } if hotkeyCount != 2 { t.Fatalf("hotkey count = %d, want 2", hotkeyCount) } var lang string if err := store.DB.QueryRow("SELECT value FROM appconfig WHERE key = 'language'").Scan(&lang); err != nil { t.Fatalf("query language: %v", err) } if lang != "zh" { t.Fatalf("language = %q, want zh", lang) } } func TestAppConfigServiceLanguage(t *testing.T) { store := newTestStore(t) service := NewAppConfigService(store) if got := service.GetLanguage(); got != "zh" { t.Fatalf("default language = %q, want zh", got) } if err := service.SetLanguage("en"); err != nil { t.Fatalf("set language: %v", err) } if got := service.GetLanguage(); got != "en" { t.Fatalf("updated language = %q, want en", got) } }