11
This commit is contained in:
commit
e6f1776d4f
264 files changed
+54215
No files matched your search
@@ -0,0 +1,97 @@
|
||||
package tui
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"superwork-tui/internal/logging"
|
||||
)
|
||||
|
||||
func TestLogs_OpenSetsState(t *testing.T) {
|
||||
m := New()
|
||||
m2, _ := m.openLogs()
|
||||
if m2.state != stateLogs {
|
||||
t.Errorf("state = %v, want stateLogs", m2.state)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogs_EscReturnsToBoard(t *testing.T) {
|
||||
m := New()
|
||||
m.state = stateLogs
|
||||
|
||||
result, _ := m.handleLogsKey(keyMsg("esc"))
|
||||
m2 := result.(Model)
|
||||
if m2.state != stateLoaded {
|
||||
t.Errorf("expected stateLoaded, got %v", m2.state)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogs_SnapshotRendered(t *testing.T) {
|
||||
// Populate a fresh logger
|
||||
lg := logging.NewLogger()
|
||||
lg.Info("webhook", "server started on :8080")
|
||||
lg.Warn("tui", "something odd")
|
||||
lg.Error("gitea", "API error 404")
|
||||
|
||||
entries := lg.Snapshot()
|
||||
|
||||
m := New()
|
||||
m.state = stateLogs
|
||||
m.logEntries = entries
|
||||
|
||||
out := m.logsView()
|
||||
|
||||
for _, want := range []string{"webhook", "server started", "something odd", "API error 404", "INFO", "WARN", "ERROR"} {
|
||||
if !strings.Contains(out, want) {
|
||||
t.Errorf("logsView missing %q", want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogs_EmptyShowsPlaceholder(t *testing.T) {
|
||||
m := New()
|
||||
m.state = stateLogs
|
||||
m.logEntries = nil
|
||||
|
||||
out := m.logsView()
|
||||
if !strings.Contains(out, "暂无日志") {
|
||||
t.Errorf("logsView should show empty placeholder, got %q", out)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogs_SnapshotMsg_UpdatesEntries(t *testing.T) {
|
||||
entries := []logging.Entry{
|
||||
{Ts: 1000, Level: logging.LevelInfo, Source: "tui", Message: "hello"},
|
||||
}
|
||||
m := New()
|
||||
m.state = stateLogs
|
||||
|
||||
result, _ := m.Update(logsSnapshotMsg{entries: entries})
|
||||
m2 := result.(Model)
|
||||
if len(m2.logEntries) != 1 {
|
||||
t.Errorf("logEntries = %d, want 1", len(m2.logEntries))
|
||||
}
|
||||
if m2.logEntries[0].Message != "hello" {
|
||||
t.Errorf("logEntries[0].Message = %q, want hello", m2.logEntries[0].Message)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogs_Tick_ReschedulesWhenStateLogs(t *testing.T) {
|
||||
m := New()
|
||||
m.state = stateLogs
|
||||
|
||||
_, cmd := m.Update(logsTickMsg{})
|
||||
if cmd == nil {
|
||||
t.Error("logsTickMsg when stateLogs should return a reschedule cmd")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogs_Tick_NoopWhenNotStateLogs(t *testing.T) {
|
||||
m := New()
|
||||
m.state = stateLoaded
|
||||
|
||||
_, cmd := m.Update(logsTickMsg{})
|
||||
if cmd != nil {
|
||||
t.Error("logsTickMsg when not stateLogs should not reschedule")
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user