package ui import ( "strings" "testing" "silverpose/v2/internal/fall" "silverpose/v2/internal/source" ) func TestViewModelUsesCriticalOnlyForConfirmed(t *testing.T) { view := NewViewModel() view.Apply(fall.Normal, source.Connected) if view.Critical { t.Fatal("normal monitoring state is critical") } view.Apply(fall.Confirmed, source.Connected) if !view.Critical || !strings.Contains(view.StateText, "确认摔倒") { t.Fatalf("confirmed view = %#v", view) } view.Apply(fall.Normal, source.Retrying) if view.Critical || !strings.Contains(view.ConnectionText, "重连") { t.Fatalf("retrying view = %#v", view) } } func TestSettingsNeverExposeResolvedRTSPURL(t *testing.T) { view := NewViewModel() view.SetSourceReady("SILVER_POSE_RTSP_URL", true) if strings.Contains(view.SettingsSummary, "rtsp://") || strings.Contains(view.SettingsSummary, "secret") { t.Fatalf("settings leaked source: %q", view.SettingsSummary) } if !strings.Contains(view.SettingsSummary, "SILVER_POSE_RTSP_URL") { t.Fatalf("settings omitted source environment name: %q", view.SettingsSummary) } }