Files
sendico/api/pkg/messaging/reliable/settings_test.go
2026-02-18 01:35:28 +01:00

63 lines
1.5 KiB
Go

package reliable
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/tech/sendico/pkg/model"
)
func TestParseSettingsDefaultsWhenBlockMissing(t *testing.T) {
got, err := ParseSettings(model.SettingsT{
"url_env": "NATS_URL",
})
require.NoError(t, err)
assert.Equal(t, DefaultSettings(), got)
}
func TestParseSettingsOverrides(t *testing.T) {
got, err := ParseSettings(model.SettingsT{
SettingsBlockKey: map[string]any{
"enabled": true,
"batch_size": 250,
"poll_interval_seconds": 3,
"max_attempts": 7,
},
})
require.NoError(t, err)
assert.True(t, got.Enabled)
assert.Equal(t, 250, got.BatchSize)
assert.Equal(t, 3, got.PollIntervalSeconds)
assert.Equal(t, 7, got.MaxAttempts)
}
func TestParseSettingsAppliesDefaultsForInvalidNumbers(t *testing.T) {
got, err := ParseSettings(model.SettingsT{
SettingsBlockKey: map[string]any{
"enabled": true,
"batch_size": 0,
"poll_interval_seconds": -1,
"max_attempts": 0,
},
})
require.NoError(t, err)
assert.True(t, got.Enabled)
assert.Equal(t, defaultBatchSize, got.BatchSize)
assert.Equal(t, int(defaultPollInterval.Seconds()), got.PollIntervalSeconds)
assert.Equal(t, defaultMaxAttempts, got.MaxAttempts)
}
func TestParseSettingsCanDisableReliablePublisher(t *testing.T) {
got, err := ParseSettings(model.SettingsT{
SettingsBlockKey: map[string]any{
"enabled": false,
},
})
require.NoError(t, err)
assert.False(t, got.Enabled)
}