pilgrim/pilgrim/test/context_test.go

109 lines
2.9 KiB
Go

package pilgrim_test
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"mvvasilev.dev/pilgrim/pilgrim"
)
type MockCliFlagRetriever struct {
mock.Mock
}
type MockEnvVarRetriever struct {
mock.Mock
}
const CliUrlValue = "postgres://cli_host:5432/cli_segment1/cli_segment2?cli_arg1=cli_val1&cli_arg2=cli_val2"
const CliDriverValue = pilgrim.DbDriver_Postgres
func Test_PilgrimContext_CliDriverOverridesCliUrlDriver(t *testing.T) {
env, cli := new(MockEnvVarRetriever), new(MockCliFlagRetriever)
env.On("Driver")
context, _, _ := createPilgrimContextWithDependencies(
map[string]string{
pilgrim.Flag_Url: CliUrlValue,
pilgrim.Flag_Driver: string(CliDriverValue),
},
map[string]string{},
)
assert.Equal(t, CliDriverValue, context.UrlParts().Driver, CliDriverValue)
}
func Test_PilgrimContext_EnvDriverOverridesEnvUrlDriver(t *testing.T) {
context, _, _ := createPilgrimContextWithDependencies(
map[string]string{},
map[string]string{
pilgrim.EnvVarKey_Url: "mariadb://env_host:3306/env_segment1/env_segment2?env_arg1=env_val1&env_arg2=env_val2",
pilgrim.EnvVarKey_Driver: "postgres",
},
)
assert.Equal(t, pilgrim.DbDriver_Postgres, context.UrlParts().Driver)
}
func Test_PilgrimContext_CliUrlDriverOverridesEnvDriver(t *testing.T) {
context, _, _ := createPilgrimContextWithDependencies(
map[string]string{
pilgrim.Flag_Url: CliUrlValue,
},
map[string]string{
pilgrim.EnvVarKey_Driver: "mariadb",
},
)
assert.Equal(t, CliDriverValue, context.UrlParts().Driver)
}
func Test_PilgrimContext_CliDriverOverridesEnvDriver(t *testing.T) {
context, _, _ := createPilgrimContextWithDependencies(
map[string]string{
pilgrim.Flag_Driver: string(CliDriverValue),
},
map[string]string{
pilgrim.EnvVarKey_Driver: "mariadb",
},
)
assert.Equal(t, CliDriverValue, context.UrlParts().Driver)
}
func Test_PilgrimContext_EnvDriverIsUsedIfNoCliDriverProvided(t *testing.T) {
context, _, _ := createPilgrimContextWithDependencies(
map[string]string{},
map[string]string{
pilgrim.EnvVarKey_Driver: "mariadb",
},
)
assert.Equal(t, pilgrim.DbDriver_MariaDB, context.UrlParts().Driver)
}
func Test_PilgrimContext_EnvUrlDriverIsUsedIfNoCliDriverProvided(t *testing.T) {
context, _, _ := createPilgrimContextWithDependencies(
map[string]string{},
map[string]string{
pilgrim.EnvVarKey_Url: "mariadb://env_host:3306/env_segment1/env_segment2?env_arg1=env_val1&env_arg2=env_val2",
},
)
assert.Equal(t, pilgrim.DbDriver_MariaDB, context.UrlParts().Driver)
}
func Test_PilgrimContext_EnvUrlDriverIsNotUsedIfNoCliDriverOverrideProvided(t *testing.T) {
context, _, _ := createPilgrimContextWithDependencies(
map[string]string{
pilgrim.Flag_Driver: "postgres",
},
map[string]string{
pilgrim.EnvVarKey_Url: "mariadb://env_host:3306/env_segment1/env_segment2?env_arg1=env_val1&env_arg2=env_val2",
},
)
assert.Equal(t, pilgrim.DbDriver_Postgres, context.UrlParts().Driver)
}