209 lines
4.6 KiB
Go
209 lines
4.6 KiB
Go
package pilgrim_conf_test
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"mvvasilev.dev/pilgrim/internal/pilgrim_conf"
|
|
)
|
|
|
|
func Test_CliContext_Url(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (string, bool) { return cli.Url() },
|
|
pilgrim_conf.Flag_Url,
|
|
"driver://localhost:3306",
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_Driver(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (pilgrim_conf.DbDriver, bool) { return cli.Driver() },
|
|
pilgrim_conf.Flag_Driver,
|
|
"driver",
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_Username(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (string, bool) { return cli.Username() },
|
|
pilgrim_conf.Flag_Username,
|
|
"username",
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_Password(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (string, bool) { return cli.Password() },
|
|
pilgrim_conf.Flag_Password,
|
|
"password",
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_Host(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (string, bool) { return cli.Host() },
|
|
pilgrim_conf.Flag_Host,
|
|
"localhost",
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_Port(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (string, bool) { return cli.Port() },
|
|
pilgrim_conf.Flag_Port,
|
|
"3306",
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_Segments(t *testing.T) {
|
|
expectedValue := []string{
|
|
"segment1", "segment2", "segment3",
|
|
}
|
|
|
|
flag.Set(pilgrim_conf.Flag_Segments, "segment1/segment2/segment3")
|
|
|
|
value, _ := pilgrim_conf.CliContext().Segments()
|
|
|
|
assert.Equal(t, expectedValue, value)
|
|
}
|
|
|
|
func Test_CliContext_Args(t *testing.T) {
|
|
expectedValue := map[string]string{
|
|
"arg1": "val1",
|
|
"arg2": "val2",
|
|
"arg3": "val3",
|
|
}
|
|
|
|
flag.Set(pilgrim_conf.Flag_Args, "arg1=val1&arg2=val2&arg3=val3")
|
|
|
|
value, _ := pilgrim_conf.CliContext().Args()
|
|
|
|
assert.Equal(t, expectedValue, value)
|
|
}
|
|
|
|
func Test_CliContext_Directory(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (string, bool) { return cli.Directory() },
|
|
pilgrim_conf.Flag_Directory,
|
|
"./custom-migrations",
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_Script(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (string, bool) { return cli.Script() },
|
|
pilgrim_conf.Flag_Script,
|
|
"2024-10-13/1_SomeScript.sql",
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_MigrationTable(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (string, bool) { return cli.MigrationTable() },
|
|
pilgrim_conf.Flag_Table,
|
|
"CustomMigrationsTable",
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_MigrationTableSchema(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (string, bool) {
|
|
return pilgrim_conf.CliContext().MigrationTableSchema()
|
|
},
|
|
pilgrim_conf.Flag_Schema,
|
|
"public",
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_Up(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (bool, bool) { return cli.IsUp() },
|
|
pilgrim_conf.Flag_Up,
|
|
true,
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_Down(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (bool, bool) { return cli.IsDown() },
|
|
pilgrim_conf.Flag_Down,
|
|
true,
|
|
)
|
|
}
|
|
func Test_CliContext_StrictOrdering(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (bool, bool) {
|
|
return pilgrim_conf.CliContext().IsStrictOrderingEnabled()
|
|
},
|
|
pilgrim_conf.Flag_StrictOrdering,
|
|
true,
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_DisableChecksumValidation(t *testing.T) {
|
|
expectedValue := false
|
|
|
|
flag.Set(pilgrim_conf.Flag_DisableChecksumValidation, "true")
|
|
|
|
value, _ := pilgrim_conf.CliContext().IsChecksumValidationEnabled()
|
|
|
|
assert.Equal(t, expectedValue, value)
|
|
}
|
|
|
|
func Test_CliContext_ValidateChecksums(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (bool, bool) {
|
|
return cli.IsValidatingChecksums()
|
|
},
|
|
pilgrim_conf.Flag_ValidateChecksums,
|
|
true,
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_ValidateMigrationOrder(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (bool, bool) {
|
|
return cli.IsValidatingMigrationOrder()
|
|
},
|
|
pilgrim_conf.Flag_ValidateMigrationOrder,
|
|
true,
|
|
)
|
|
}
|
|
|
|
func Test_CliContext_ValidateLatest(t *testing.T) {
|
|
test_cliValue(
|
|
t,
|
|
func(cli pilgrim_conf.CliFlagRetriever) (bool, bool) { return cli.IsValidatingLatest() },
|
|
pilgrim_conf.Flag_ValidateLatest,
|
|
true,
|
|
)
|
|
}
|
|
|
|
func test_cliValue[T string | pilgrim_conf.DbDriver | bool](t *testing.T, cliVal func(cli pilgrim_conf.CliFlagRetriever) (value T, isProvided bool), flagName string, expectedVal T) {
|
|
cli := pilgrim_conf.CliContext()
|
|
|
|
flag.Set(flagName, fmt.Sprintf("%v", expectedVal))
|
|
|
|
cli.ParseFlags()
|
|
|
|
value, _ := cliVal(cli)
|
|
|
|
assert.Equal(t, expectedVal, value)
|
|
}
|