gogmagog/models/models_test.go
Deepak 1d45635530
Some checks failed
gitea-deepak/gogmagog/pipeline/head There was a failure building this commit
adds no password return by default, model cares about password but nothing downstream does
2021-01-11 20:37:35 -06:00

130 lines
2.7 KiB
Go

package models_test
import (
"gitea.deepak.science/deepak/gogmagog/models"
"github.com/stretchr/testify/assert"
"testing"
)
type multiStore struct {
actions []*models.Action
plans []*models.Plan
}
func (ms *multiStore) SelectActions() ([]*models.Action, error) {
return ms.actions, nil
}
func (ms *multiStore) SelectActionByID(id int) (*models.Action, error) {
return ms.actions[0], nil
}
func (ms *multiStore) InsertAction(action *models.Action) (int, error) {
return int(action.ActionID), nil
}
func (ms *multiStore) UpdateAction(action *models.Action) error {
return nil
}
func (ms *multiStore) SelectPlans() ([]*models.Plan, error) {
return ms.plans, nil
}
func (ms *multiStore) SelectPlanByID(id int) (*models.Plan, error) {
return ms.plans[0], nil
}
func (ms *multiStore) InsertPlan(plan *models.Plan) (int, error) {
return int(plan.PlanID), nil
}
func (ms *multiStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action, error) {
return ms.actions, nil
}
func (ms *multiStore) SelectUserByID(id int) (*models.User, error) {
return &models.User{UserID: int64(id), Username: "test", DisplayName: "Ted Est", Password: []byte("oh no")}, nil
}
func (ms *multiStore) ConnectionLive() error {
return nil
}
func TestModelActions(t *testing.T) {
assert := assert.New(t)
a1 := &models.Action{ActionID: 3}
a2 := &models.Action{ActionID: 4}
p := &models.Plan{PlanID: 6}
ss := &multiStore{
[]*models.Action{a1, a2},
[]*models.Plan{p}}
m := models.New(ss)
actions, err := m.Actions()
assert.Nil(err)
assert.Equal(2, len(actions))
firstAction, err := m.Action(3)
assert.Nil(err)
assert.EqualValues(3, firstAction.ActionID)
actionID, err := m.AddAction(a1)
assert.Nil(err)
assert.EqualValues(3, actionID)
err = m.SaveAction(a1)
assert.Nil(err)
}
func TestModelPlanMethods(t *testing.T) {
assert := assert.New(t)
a1 := &models.Action{ActionID: 3}
a2 := &models.Action{ActionID: 4}
p := &models.Plan{PlanID: 6}
ss := &multiStore{
[]*models.Action{a1, a2},
[]*models.Plan{p},
}
m := models.New(ss)
plans, err := m.Plans()
assert.Nil(err)
assert.Equal(1, len(plans))
firstPlan, err := m.Plan(6)
assert.Nil(err)
assert.EqualValues(6, firstPlan.PlanID)
actions, err := m.GetActions(firstPlan)
assert.Nil(err)
assert.Equal(2, len(actions))
planId, err := m.AddPlan(p)
assert.Nil(err)
assert.EqualValues(6, planId)
}
func TestModelHealthy(t *testing.T) {
assert := assert.New(t)
ss := &multiStore{
[]*models.Action{},
[]*models.Plan{},
}
m := models.New(ss)
err := m.Healthy()
assert.Nil(err)
}
func TestNilModelUnhealthy(t *testing.T) {
assert := assert.New(t)
m := models.New(nil)
err := m.Healthy()
assert.NotNil(err)
}