From 212034e8e7dcbbf41feaf7410ea2f60ee55b577a Mon Sep 17 00:00:00 2001 From: Jack Robertson <jack.robertson@nexusmods.com> Date: Wed, 12 Jul 2023 11:54:23 +0100 Subject: [PATCH] test: add NewLoggerWithLeveler test --- logger_test.go | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/logger_test.go b/logger_test.go index adde38d..b453de4 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()) +} -- GitLab