update 'Merge' of the 'Config'

This commit is contained in:
2025-09-04 23:13:05 +04:00
parent 7e89fa174b
commit 1eb969480b
3 changed files with 187 additions and 51 deletions

View File

@@ -5,9 +5,7 @@ import (
"testing"
"time"
"github.com/aykhans/dodo/pkg/config"
"github.com/aykhans/dodo/pkg/types"
"github.com/aykhans/dodo/pkg/utils"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -1129,38 +1127,3 @@ func TestConfigENVParser_PartialConfiguration(t *testing.T) {
assert.Nil(t, config.RequestCount)
})
}
func TestConfigENVParser_MergeScenarios(t *testing.T) {
t.Run("Parse configuration suitable for merging", func(t *testing.T) {
// Set only specific fields that would override defaults
t.Setenv("METHOD", "PUT")
t.Setenv("TIMEOUT", "45s")
t.Setenv("HEADER", "X-Custom: value")
parser := NewConfigENVParser("")
envConfig, err := parser.Parse()
require.NoError(t, err)
require.NotNil(t, envConfig)
// Create a default config
defaultConfig := &config.Config{
Method: utils.ToPtr("GET"),
Timeout: utils.ToPtr(30 * time.Second),
DodosCount: utils.ToPtr(uint(1)),
Headers: types.Headers{{Key: "User-Agent", Value: []string{"DefaultAgent/1.0"}}},
}
// Merge the parsed config into defaults
defaultConfig.Merge(envConfig)
// Verify merged values
assert.Equal(t, "PUT", *defaultConfig.Method, "Method should be overridden")
assert.Equal(t, 45*time.Second, *defaultConfig.Timeout, "Timeout should be overridden")
assert.Equal(t, uint(1), *defaultConfig.DodosCount, "DodosCount should remain from default")
// Headers should contain the new header (merge behavior depends on implementation)
assert.Len(t, defaultConfig.Headers, 1)
assert.Equal(t, "X-Custom", defaultConfig.Headers[0].Key)
})
}