package observability import ( "context" "log/slog" "testing" ) func TestNewLogger(t *testing.T) { logger := NewLogger(slog.LevelInfo) if logger == nil { t.Fatal("NewLogger returned nil") } } func TestLogger_Debug(t *testing.T) { logger := NewLogger(slog.LevelDebug) // Should not panic logger.Debug("test message", "key", "value") } func TestLogger_Info(t *testing.T) { logger := NewLogger(slog.LevelInfo) // Should not panic logger.Info("test message", "key", "value") } func TestLogger_Warn(t *testing.T) { logger := NewLogger(slog.LevelWarn) // Should not panic logger.Warn("test message", "key", "value") } func TestLogger_Error(t *testing.T) { logger := NewLogger(slog.LevelError) // Should not panic logger.Error("test message", "key", "value") } func TestLogger_With(t *testing.T) { logger := NewLogger(slog.LevelInfo) contextLogger := logger.With("component", "test") if contextLogger == nil { t.Fatal("With() returned nil") } // Should not panic contextLogger.Info("test message") } func TestLogger_WithContext(t *testing.T) { logger := NewLogger(slog.LevelInfo) ctx := context.Background() contextLogger := logger.WithContext(ctx) if contextLogger == nil { t.Fatal("WithContext() returned nil") } // Should not panic contextLogger.Info("test message") } func TestLogger_AllLevels(t *testing.T) { levels := []slog.Level{ slog.LevelDebug, slog.LevelInfo, slog.LevelWarn, slog.LevelError, } for _, level := range levels { logger := NewLogger(level) if logger == nil { t.Errorf("NewLogger(%v) returned nil", level) } // All log methods should work regardless of level logger.Debug("debug") logger.Info("info") logger.Warn("warn") logger.Error("error") } }