feat(v2): implement operator monitoring window

This commit is contained in:
ila
2026-07-22 21:24:10 +08:00
parent 8e093acb9b
commit a98005e631
8 changed files with 335 additions and 58 deletions
+36
View File
@@ -0,0 +1,36 @@
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)
}
}