Files
summercms/modules/conga/logger_smoke_test.go
Jakub Zych e6b20e2cb6 feat(conga,lagoon): River and GORM log through diary components
- River's logger is diary.For("river") (warn by default), conga's own lines diary.For("conga"); an app-published logger still wins
- GORM logs through logger.NewSlogLogger(diary.For("db")): warn level, record-not-found ignored, parameterized SQL traces only at verbosity 3
- Smoke tests TestRiverLoggerUsesDiarySmoke and TestGormLoggerUsesDiarySmoke
2026-10-21 11:51:57 +02:00

46 lines
1.4 KiB
Go

package conga
import (
"bytes"
"log/slog"
"strings"
"testing"
"git.golem15.com/golem15/summercms/modules/backpack"
"git.golem15.com/golem15/summercms/modules/bonfire"
"git.golem15.com/golem15/summercms/modules/compass"
"git.golem15.com/golem15/summercms/modules/diary"
)
// TestRiverLoggerUsesDiarySmoke: River logs through the diary component
// river unless the application publishes its own logger, and conga's own
// lines use component conga.
func TestRiverLoggerUsesDiarySmoke(t *testing.T) {
var buf bytes.Buffer
t.Cleanup(diary.Reset)
diary.Bootstrap(&buf, diary.Options{Color: bonfire.ColorNever})
riverLogger(nil).Warn("probe")
if !strings.Contains(buf.String(), "component=river") {
t.Fatalf("River record lacks component=river:\n%s", buf.String())
}
loggerFromApp(nil).Warn("own line")
if !strings.Contains(buf.String(), "component=conga") {
t.Fatalf("conga record lacks component=conga:\n%s", buf.String())
}
var capture bytes.Buffer
app := backpack.New(&compass.Config{})
if err := app.Publish(slog.New(slog.NewTextHandler(&capture, nil))); err != nil {
t.Fatal(err)
}
buf.Reset()
riverLogger(app).Warn("published probe")
if !strings.Contains(capture.String(), "published probe") {
t.Fatalf("published logger did not receive the River record:\n%s", capture.String())
}
if strings.Contains(buf.String(), "published probe") {
t.Fatalf("River record reached diary although the app published a logger:\n%s", buf.String())
}
}