diff --git a/routes/route_model_test.go b/routes/route_model_test.go index dff57bc..1f50614 100644 --- a/routes/route_model_test.go +++ b/routes/route_model_test.go @@ -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) } diff --git a/store/errorStore.go b/store/errorStore.go new file mode 100644 index 0000000..d219bf2 --- /dev/null +++ b/store/errorStore.go @@ -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 +} diff --git a/store/errorStore_test.go b/store/errorStore_test.go new file mode 100644 index 0000000..9cbbf62 --- /dev/null +++ b/store/errorStore_test.go @@ -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) +}