package logger_test import ( "bytes" "testing" "git.ar21.de/yolokube/grafana-backuper/internal/logger" "github.com/rs/zerolog" "github.com/stretchr/testify/assert" ) func TestCliLoggerLayout_DebugLevel(t *testing.T) { var buf bytes.Buffer zerolog.SetGlobalLevel(zerolog.DebugLevel) log := logger.CliLoggerLayout(&buf) log.Debug().Msg("test message") output := buf.String() assert.Contains(t, output, "test message") assert.Contains(t, output, "DBG") // Assuming zerolog adds a short level indicator like "DBG" assert.Contains(t, output, ".go:") // Ensures the caller file and line are included } func TestCliLoggerLayout_NonDebugLevel(t *testing.T) { var buf bytes.Buffer zerolog.SetGlobalLevel(zerolog.InfoLevel) log := logger.CliLoggerLayout(&buf) log.Info().Msg("test message") output := buf.String() assert.Contains(t, output, "test message") assert.NotContains(t, output, "DBG") // Since we're at Info level assert.NotContains(t, output, ".go:") // Caller information should not be included } func TestJSONLoggerLayout(t *testing.T) { var buf bytes.Buffer log := logger.JSONLoggerLayout(&buf) log.Info().Msg("test message") output := buf.String() assert.Contains(t, output, `"message":"test message"`) assert.Contains(t, output, `"level":"info"`) assert.Contains(t, output, `"time":`) // Timestamp should be included assert.Contains(t, output, `"caller":`) // Caller should be included }