207 lines
5.9 KiB
Go
207 lines
5.9 KiB
Go
package pilgrim_mock
|
|
|
|
import "mvvasilev.dev/pilgrim/pilgrim"
|
|
|
|
type cliContextMock struct {
|
|
stringFlags map[string]func() (value string, isProvided bool)
|
|
boolFlags map[string]func() (value bool, isProvided bool)
|
|
segments func() (value []string, isProvided bool)
|
|
args func() (value map[string]string, isProvided bool)
|
|
}
|
|
|
|
func MockCliContext(
|
|
stringFlags map[string]func() (value string, isProvided bool),
|
|
boolFlags map[string]func() (value bool, isProvided bool),
|
|
segments func() (value []string, isProvided bool),
|
|
args func() (value map[string]string, isProvided bool),
|
|
) *cliContextMock {
|
|
return &cliContextMock{
|
|
stringFlags, boolFlags, segments, args,
|
|
}
|
|
}
|
|
|
|
func (mock *cliContextMock) stringVal(val string) (value string, isProvided bool) {
|
|
retrieverFunc, available := mock.stringFlags[val]
|
|
|
|
if !available {
|
|
return pilgrim.EmptyString, false
|
|
}
|
|
|
|
return retrieverFunc()
|
|
}
|
|
|
|
func (mock *cliContextMock) boolVal(val string) (value bool, isProvided bool) {
|
|
retrieverFunc, available := mock.boolFlags[val]
|
|
|
|
if !available {
|
|
return false, false
|
|
}
|
|
|
|
return retrieverFunc()
|
|
}
|
|
|
|
func (mock *cliContextMock) Url() (value string, isProvided bool) {
|
|
return mock.stringVal(pilgrim.Flag_Url)
|
|
}
|
|
|
|
func (mock *cliContextMock) Driver() (value pilgrim.DbDriver, isProvided bool) {
|
|
val, provided := mock.stringVal(pilgrim.Flag_Driver)
|
|
return pilgrim.DbDriver(val), provided
|
|
}
|
|
|
|
func (mock *cliContextMock) Username() (value string, isProvided bool) {
|
|
return mock.stringVal(pilgrim.Flag_Username)
|
|
}
|
|
|
|
func (mock *cliContextMock) Password() (value string, isProvided bool) {
|
|
return mock.stringVal(pilgrim.Flag_Password)
|
|
}
|
|
|
|
func (mock *cliContextMock) Host() (value string, isProvided bool) {
|
|
return mock.stringVal(pilgrim.Flag_Host)
|
|
}
|
|
|
|
func (mock *cliContextMock) Port() (value string, isProvided bool) {
|
|
return mock.stringVal(pilgrim.Flag_Port)
|
|
}
|
|
|
|
func (mock *cliContextMock) Segments() (value []string, isProvided bool) {
|
|
return mock.segments()
|
|
}
|
|
|
|
func (mock *cliContextMock) Args() (value map[string]string, isProvided bool) {
|
|
return mock.args()
|
|
}
|
|
|
|
func (mock *cliContextMock) Directory() (value string, isProvided bool) {
|
|
return mock.stringVal(pilgrim.Flag_Directory)
|
|
}
|
|
|
|
func (mock *cliContextMock) IsUp() (value bool, isProvided bool) {
|
|
return mock.boolVal(pilgrim.Flag_Up)
|
|
}
|
|
|
|
func (mock *cliContextMock) IsDown() (value bool, isProvided bool) {
|
|
return mock.boolVal(pilgrim.Flag_Down)
|
|
}
|
|
|
|
// Can be a script name, or "latest"
|
|
func (mock *cliContextMock) Script() (value string, isProvided bool) {
|
|
return mock.stringVal(pilgrim.Flag_Script)
|
|
}
|
|
|
|
func (mock *cliContextMock) MigrationTable() (value string, isProvided bool) {
|
|
return mock.stringVal(pilgrim.Flag_Table)
|
|
}
|
|
|
|
func (mock *cliContextMock) MigrationTableSchema() (value string, isProvided bool) {
|
|
return mock.stringVal(pilgrim.Flag_Schema)
|
|
}
|
|
|
|
func (mock *cliContextMock) IsChecksumValidationEnabled() (value bool, isProvided bool) {
|
|
value, isProvided = mock.boolVal(pilgrim.Flag_DisableChecksumValidation)
|
|
return !value, isProvided
|
|
}
|
|
|
|
func (mock *cliContextMock) IsStrictOrderingEnabled() (value bool, isProvided bool) {
|
|
return mock.boolVal(pilgrim.Flag_StrictOrdering)
|
|
}
|
|
|
|
func (mock *cliContextMock) IsValidatingMigrationOrder() (value bool, isProvided bool) {
|
|
return mock.boolVal(pilgrim.Flag_ValidateMigrationOrder)
|
|
}
|
|
|
|
func (mock *cliContextMock) IsValidatingLatest() (value bool, isProvided bool) {
|
|
return mock.boolVal(pilgrim.Flag_ValidateLatest)
|
|
}
|
|
|
|
func (mock *cliContextMock) IsValidatingChecksums() (value bool, isProvided bool) {
|
|
return mock.boolVal(pilgrim.Flag_ValidateChecksums)
|
|
}
|
|
|
|
func (mock *cliContextMock) ParseFlags() {
|
|
|
|
}
|
|
|
|
type envVarContextMock struct {
|
|
stringVars map[string]func() (value string, isProvided bool)
|
|
boolVars map[string]func() (value bool, isProvided bool)
|
|
segments func() (value []string, isProvided bool)
|
|
args func() (value map[string]string, isProvided bool)
|
|
}
|
|
|
|
func MockEnvVarContext(
|
|
stringVars map[string]func() (value string, isProvided bool),
|
|
boolVars map[string]func() (value bool, isProvided bool),
|
|
segments func() (value []string, isProvided bool),
|
|
args func() (value map[string]string, isProvided bool),
|
|
) *envVarContextMock {
|
|
return &envVarContextMock{
|
|
stringVars, boolVars, segments, args,
|
|
}
|
|
}
|
|
|
|
func (mock *envVarContextMock) stringVal(val string) (value string, isProvided bool) {
|
|
retrieverFunc, available := mock.stringVars[val]
|
|
|
|
if !available {
|
|
return pilgrim.EmptyString, false
|
|
}
|
|
|
|
return retrieverFunc()
|
|
}
|
|
|
|
func (mock *envVarContextMock) boolVal(val string) (value bool, isProvided bool) {
|
|
retrieverFunc, available := mock.boolVars[val]
|
|
|
|
if !available {
|
|
return false, false
|
|
}
|
|
|
|
return retrieverFunc()
|
|
}
|
|
|
|
func (mock *envVarContextMock) Url() (value string, isDefined bool) {
|
|
return mock.stringVal(pilgrim.EnvVarKey_Url)
|
|
}
|
|
|
|
func (mock *envVarContextMock) Driver() (value pilgrim.DbDriver, isDefined bool) {
|
|
val, provided := mock.stringVal(pilgrim.Flag_Driver)
|
|
return pilgrim.DbDriver(val), provided
|
|
}
|
|
|
|
func (mock *envVarContextMock) Username() (value string, isDefined bool) {
|
|
return mock.stringVal(pilgrim.EnvVarKey_Username)
|
|
}
|
|
|
|
func (mock *envVarContextMock) Password() (value string, isDefined bool) {
|
|
return mock.stringVal(pilgrim.EnvVarKey_Password)
|
|
}
|
|
|
|
func (mock *envVarContextMock) Host() (value string, isDefined bool) {
|
|
return mock.stringVal(pilgrim.EnvVarKey_Host)
|
|
}
|
|
|
|
func (mock *envVarContextMock) Port() (value string, isDefined bool) {
|
|
return mock.stringVal(pilgrim.EnvVarKey_Port)
|
|
}
|
|
|
|
func (mock *envVarContextMock) Segments() (value []string, isDefined bool) {
|
|
return mock.segments()
|
|
}
|
|
|
|
func (mock *envVarContextMock) Args() (value map[string]string, isDefined bool) {
|
|
return mock.args()
|
|
}
|
|
|
|
func (mock *envVarContextMock) Directory() (value string, isDefined bool) {
|
|
return mock.stringVal(pilgrim.EnvVarKey_Directory)
|
|
}
|
|
|
|
func (mock *envVarContextMock) MigrationTable() (value string, isDefined bool) {
|
|
return mock.stringVal(pilgrim.EnvVarKey_Table)
|
|
}
|
|
|
|
func (mock *envVarContextMock) MigrationTableSchema() (value string, isDefined bool) {
|
|
return mock.stringVal(pilgrim.EnvVarKey_Schema)
|
|
}
|