package handlers import ( "encoding/json" "net/http" "net/http/httptest" "testing" "time" "qctextbuilder/internal/logging" ) func TestListLogsHonorsLimit(t *testing.T) { t.Parallel() recent := logging.NewRecentStore(10) recent.Add(logging.Entry{Timestamp: time.Now().UTC(), Level: "INFO", Message: "older"}) recent.Add(logging.Entry{Timestamp: time.Now().UTC(), Level: "INFO", Message: "newer"}) api := NewAPI(nil, nil, nil, nil, recent) req := httptest.NewRequest(http.MethodGet, "/api/logs?limit=1", nil) w := httptest.NewRecorder() api.ListLogs(w, req) if w.Code != http.StatusOK { t.Fatalf("unexpected status: %d", w.Code) } var payload struct { Count int `json:"count"` Logs []logging.Entry `json:"logs"` } if err := json.Unmarshal(w.Body.Bytes(), &payload); err != nil { t.Fatalf("decode response: %v", err) } if payload.Count != 1 || len(payload.Logs) != 1 { t.Fatalf("unexpected payload: %+v", payload) } if payload.Logs[0].Message != "newer" { t.Fatalf("expected newest log entry, got %q", payload.Logs[0].Message) } }