Files
MujicaUI/chat/message_header_test.go
T

58 lines
1.6 KiB
Go

package chat
import (
"testing"
"time"
"github.com/egoist/mygo/ui"
"github.com/ZacharyZhang-NY/MujicaUI/core"
)
func TestMessageHeaderFieldsAndStatus(t *testing.T) {
at := time.Date(2026, 3, 1, 14, 5, 0, 0, time.UTC)
for status, want := range map[MessageStatus]string{
MessageSending: "Sending", MessageStreaming: "Generating", MessageSent: "Sent", MessageFailed: "Failed",
} {
tt := ui.NewTester(func(c *ui.Context) {
core.Use(c, core.Settings{Locale: core.EnUS})
MessageHeader(c, MessageHeaderOptions{Model: "claude", Time: at, Status: status})
}, 400, 100)
for _, s := range []string{"claude", "14:05", want} {
if !tt.HasText(s) {
t.Errorf("status %v: missing %q in %q", status, s, tt.Texts())
}
}
}
tt := ui.NewTester(func(c *ui.Context) {
core.Use(c, core.Settings{})
MessageHeader(c, MessageHeaderOptions{})
}, 400, 100)
if len(tt.Texts()) != 0 {
t.Fatalf("zero header shows %q", tt.Texts())
}
}
func TestMessageHeaderUnknownStatus(t *testing.T) {
defer func() {
if recover() == nil {
t.Fatal("no panic for an unknown status")
}
}()
ui.NewTester(func(c *ui.Context) {
core.Use(c, core.Settings{})
MessageHeader(c, MessageHeaderOptions{Status: 99})
}, 100, 100)
}
func TestMessageHeaderSnapshot(t *testing.T) {
at := time.Date(2026, 3, 1, 21, 30, 0, 0, time.UTC)
snapshot(t, "message_header", 360, 150, func(c *ui.Context) {
ui.Column(c).Padding(16).Gap(12).Children(func() {
for _, s := range []MessageStatus{MessageSending, MessageStreaming, MessageSent, MessageFailed} {
MessageHeader(c, MessageHeaderOptions{Model: "herald-2", Time: at, Status: s})
}
})
})
}