package config import ( "os" "path/filepath" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestLoadDefaultsWithEnv(t *testing.T) { t.Setenv("NETTS_API_KEY", "env-key") cfg, err := Load("") require.NoError(t, err) assert.Equal(t, ":8080", cfg.Server.Address) assert.Equal(t, "https://netts.io", cfg.Netts.BaseURL) assert.Equal(t, 3, cfg.Energy.MinCycles) assert.Equal(t, 10, cfg.Energy.TargetCycles) assert.Equal(t, "env-key", cfg.Netts.APIKey) } func TestLoadFromFileOverridesDefaults(t *testing.T) { dir := t.TempDir() file := filepath.Join(dir, "config.yaml") body := ` server: address: ":9090" readTimeout: 5s netts: apiKey: "file-key" baseUrl: "https://example.com" energy: minCycles: 5 targetCycles: 8 logging: level: debug ` require.NoError(t, os.WriteFile(file, []byte(body), 0o600)) cfg, err := Load(file) require.NoError(t, err) assert.Equal(t, ":9090", cfg.Server.Address) assert.Equal(t, "https://example.com", cfg.Netts.BaseURL) assert.Equal(t, 5, cfg.Energy.MinCycles) assert.Equal(t, 8, cfg.Energy.TargetCycles) assert.Equal(t, "file-key", cfg.Netts.APIKey) assert.Equal(t, "debug", cfg.Logging.Level) }