Adds some stuff for only failing on the subsequent retrieve
All checks were successful
gitea-deepak/gogmagog/pipeline/head This commit looks good

This commit is contained in:
Deepak Mallubhotla 2021-01-12 19:12:39 -06:00
parent 3648d5a1cc
commit 169afed5c9
Signed by: deepak
GPG Key ID: 64BF53A3369104E7
3 changed files with 152 additions and 101 deletions

View File

@ -1,7 +1,6 @@
package routes_test
import (
"fmt"
"gitea.deepak.science/deepak/gogmagog/models"
"gitea.deepak.science/deepak/gogmagog/store"
)
@ -11,108 +10,13 @@ func getEmptyModel() *models.Model {
m := models.New(str)
return m
}
func (e *errorStore) SelectActions() ([]*models.Action, error) {
return nil, e.error
}
func (e *errorStore) SelectActionByID(id int) (*models.Action, error) {
return nil, e.error
}
func (e *errorStore) InsertAction(action *models.Action) (int, error) {
return 0, e.error
}
func (e *errorStore) UpdateAction(action *models.Action) error {
return e.error
}
func (e *errorStore) SelectPlans() ([]*models.Plan, error) {
return nil, e.error
}
func (e *errorStore) SelectPlanByID(id int) (*models.Plan, error) {
return nil, e.error
}
func (e *errorStore) InsertPlan(plan *models.Plan) (int, error) {
return 0, e.error
}
func (e *errorStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action, error) {
return nil, e.error
}
func (e *errorStore) SelectUserByUsername(name string) (*models.User, error) {
return nil, e.error
}
func (e *errorStore) InsertUser(user *models.User) (int, error) {
return 0, e.error
}
func (e *errorStore) ConnectionLive() error {
return e.error
}
type errorStore struct {
error error
}
func getErrorModel(errorMsg string) *models.Model {
e := &errorStore{error: fmt.Errorf(errorMsg)}
return models.New(e)
}
func (e *onlyCreateStore) SelectActions() ([]*models.Action, error) {
return nil, e.error
}
func (e *onlyCreateStore) SelectActionByID(id int) (*models.Action, error) {
return nil, e.error
}
func (e *onlyCreateStore) InsertAction(action *models.Action) (int, error) {
return int(action.ActionID), nil
}
func (e *onlyCreateStore) UpdateAction(action *models.Action) error {
return nil
}
func (e *onlyCreateStore) SelectPlans() ([]*models.Plan, error) {
return nil, e.error
}
func (e *onlyCreateStore) SelectPlanByID(id int) (*models.Plan, error) {
return nil, e.error
}
func (e *onlyCreateStore) InsertPlan(plan *models.Plan) (int, error) {
return int(plan.PlanID), nil
}
func (e *onlyCreateStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action, error) {
return nil, e.error
}
func (e *onlyCreateStore) SelectUserByUsername(name string) (*models.User, error) {
return nil, nil
}
func (e *onlyCreateStore) InsertUser(user *models.User) (int, error) {
return 0, e.error
}
func (e *onlyCreateStore) ConnectionLive() error {
return e.error
}
type onlyCreateStore struct {
error error
func getErrorModel(message string) *models.Model {
str := store.GetErrorStore(message, true)
return models.New(str)
}
func getErrorOnGetModel(errorMsg string) *models.Model {
e := &onlyCreateStore{error: fmt.Errorf(errorMsg)}
return models.New(e)
str := store.GetErrorStore(errorMsg, false)
return models.New(str)
}

70
store/errorStore.go Normal file
View File

@ -0,0 +1,70 @@
package store
import (
"fmt"
"gitea.deepak.science/deepak/gogmagog/models"
)
func (e *errorStore) SelectActions() ([]*models.Action, error) {
return nil, e.error
}
func (e *errorStore) SelectActionByID(id int) (*models.Action, error) {
return nil, e.error
}
func (e *errorStore) InsertAction(action *models.Action) (int, error) {
if e.errorOnInsert {
return 0, e.error
}
return 0, nil
}
func (e *errorStore) UpdateAction(action *models.Action) error {
return e.error
}
func (e *errorStore) SelectPlans() ([]*models.Plan, error) {
return nil, e.error
}
func (e *errorStore) SelectPlanByID(id int) (*models.Plan, error) {
return nil, e.error
}
func (e *errorStore) InsertPlan(plan *models.Plan) (int, error) {
if e.errorOnInsert {
return 0, e.error
}
return 0, nil
}
func (e *errorStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action, error) {
return nil, e.error
}
func (e *errorStore) SelectUserByUsername(name string) (*models.User, error) {
return nil, e.error
}
func (e *errorStore) InsertUser(user *models.User) (int, error) {
if e.errorOnInsert {
return 0, e.error
}
return 0, nil
}
func (e *errorStore) ConnectionLive() error {
return e.error
}
type errorStore struct {
error error
errorOnInsert bool
}
// GetErrorStore returns a models.Store that always errors. This is useful for testirng purposes.
func GetErrorStore(errorMsg string, errorOnInsert bool) models.Store {
e := &errorStore{error: fmt.Errorf(errorMsg), errorOnInsert: errorOnInsert}
return e
}

77
store/errorStore_test.go Normal file
View File

@ -0,0 +1,77 @@
package store_test
import (
"gitea.deepak.science/deepak/gogmagog/models"
"gitea.deepak.science/deepak/gogmagog/store"
"github.com/stretchr/testify/assert"
"testing"
)
func TestErrorActionMethods(t *testing.T) {
assert := assert.New(t)
str := store.GetErrorStore("error message sample", true)
str2 := store.GetErrorStore("error message sample", false)
_, err := str.InsertAction(&models.Action{})
assert.NotNil(err)
_, err = str2.InsertAction(&models.Action{})
assert.Nil(err)
_, err = str.SelectActionByID(8)
assert.NotNil(err)
_, err = str2.SelectActionByID(8)
assert.NotNil(err)
_, err = str.SelectActions()
assert.NotNil(err)
_, err = str.SelectActionsByPlanID(&models.Plan{})
assert.NotNil(err)
replacementAction := &models.Action{}
err = str.UpdateAction(replacementAction)
assert.NotNil(err)
}
func TestErrorPlanMethods(t *testing.T) {
assert := assert.New(t)
str := store.GetErrorStore("sntahoeu", true)
str2 := store.GetErrorStore("sntahoeu", false)
_, err := str.SelectPlans()
assert.NotNil(err)
_, err = str.InsertPlan(&models.Plan{})
assert.NotNil(err)
_, err = str2.InsertPlan(&models.Plan{})
assert.Nil(err)
_, err = str.SelectPlanByID(5)
assert.NotNil(err)
}
func TestErrorLive(t *testing.T) {
assert := assert.New(t)
str := store.GetErrorStore("error", true)
err := str.ConnectionLive()
assert.NotNil(err)
}
func TestErrorUserMethods(t *testing.T) {
assert := assert.New(t)
str := store.GetErrorStore("error", true)
str2 := store.GetErrorStore("error", false)
u := &models.User{}
_, err := str.InsertUser(u)
assert.NotNil(err)
_, err = str2.InsertUser(u)
assert.Nil(err)
_, err = str.SelectUserByUsername("snth")
assert.NotNil(err)
}