pilgrim/pilgrim/test/mock/context_mock.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)
}