diff --git a/logger_test.go b/logger_test.go index adde38db8994c54f7aa84135d27fc22455916f42..b453de4335b243d116579878f2a148181fccf9c7 100644 --- a/logger_test.go +++ b/logger_test.go @@ -17,7 +17,7 @@ type log struct { Source slog.Source `json:"source"` } -func TestNew(t *testing.T) { +func TestNewLogger(t *testing.T) { // Arrange var buf bytes.Buffer @@ -70,3 +70,43 @@ func TestNew(t *testing.T) { assert.False(t, scanner.Scan()) assert.NoError(t, scanner.Err()) } + +func TestNewLoggerWithLeveler(t *testing.T) { + // Arrange + var buf bytes.Buffer + + programLevel := new(slog.LevelVar) + programLevel.Set(slog.LevelError) + + logger := NewLogger(WithWriter(&buf), WithLeveler(programLevel)) + + // Act + logger.Warn("Never gonna give", slog.String("you", "up")) + programLevel.Set(slog.LevelWarn) + logger.Warn("Never gonna let", slog.String("you", "down")) + + // Assert + scanner := bufio.NewScanner(&buf) + + // Scan the first log + assert.True(t, scanner.Scan()) + var ( + rawWarnLog = scanner.Bytes() + warnLog = struct { + log + You string `json:"you"` + }{} + ) + if err := json.Unmarshal(rawWarnLog, &warnLog); err != nil { + t.Errorf("Failed to unmarshal warn log: %s", err) + } + + assert.Equal(t, "warn", warnLog.Status) + assert.Equal(t, "Never gonna let", warnLog.Message) + assert.Equal(t, "down", warnLog.You) + assert.WithinDuration(t, time.Now(), warnLog.Date, 1*time.Second) + + // Assert that there are no more logs + assert.False(t, scanner.Scan()) + assert.NoError(t, scanner.Err()) +}