context_test.go

 1package log
 2
 3import (
 4	"bytes"
 5	"context"
 6	"log/slog"
 7	"testing"
 8
 9	"github.com/stretchr/testify/assert"
10)
11
12func TestContext(t *testing.T) {
13	var buf bytes.Buffer
14
15	ctx := context.Background()
16	logger := New(slog.NewJSONHandler(&buf, nil))
17	ctx = ToContext(ctx, logger)
18
19	logger2 := FromContext(ctx)
20	_, ok := logger2.Handler().(*cannon)
21	assert.True(t, ok, "logger should be a cannon logger")
22
23	logger2.Info("test")
24	result := getJSON(buf.Bytes(), t)
25	assert.Equal(t, "test", result["msg"])
26}
27
28func TestContextDefault(t *testing.T) {
29	var buf bytes.Buffer
30
31	// set a standard JSON handler as the default logger
32	logger := slog.New(slog.NewJSONHandler(&buf, nil))
33	slog.SetDefault(logger)
34
35	// get logger from empty context, should return the default logger if none exists
36	logger2 := FromContext(context.Background())
37	_, ok := logger2.Handler().(*cannon)
38	assert.False(t, ok, "logger should be a default logger")
39
40	logger2.Info("test")
41	result := getJSON(buf.Bytes(), t)
42	assert.Equal(t, "test", result["msg"])
43}