package logging

import (
	"log/slog"
	"testing"
)

func TestConfigFromEnvironmentUsesApplicationEnvironmentDefaults(t *testing.T) {
	for _, name := range []string{"LOG_FORMAT", "LOG_LEVEL", "LOG_ADD_SOURCE"} {
		t.Setenv(name, "")
	}

	production := configFromEnvironment("production")
	if production.format != "json" || production.addSource || production.level != slog.LevelInfo {
		t.Fatalf("production logging config = %#v", production)
	}

	development := configFromEnvironment("development")
	if development.format != "text" || !development.addSource || development.level != slog.LevelInfo {
		t.Fatalf("development logging config = %#v", development)
	}
}

func TestConfigFromEnvironmentPreservesLogOverrides(t *testing.T) {
	t.Setenv("LOG_FORMAT", "text")
	t.Setenv("LOG_LEVEL", "debug")
	t.Setenv("LOG_ADD_SOURCE", "true")

	cfg := configFromEnvironment("production")
	if cfg.format != "text" || !cfg.addSource || cfg.level != slog.LevelDebug {
		t.Fatalf("overridden logging config = %#v", cfg)
	}
}
