Add user store tests

This commit is contained in:
Miguel de la Cruz 2021-09-11 23:50:53 +02:00
parent 143c3a8b81
commit 5d82d485c8
37 changed files with 3674 additions and 3 deletions

View file

@ -29,13 +29,13 @@ func NewStore(path string) (*Store, error) {
if err != nil {
return nil, err
}
s.Conn = conn
if err := s.EnsureSchema(); err != nil {
return nil, err
}
s.Conn = conn
// init stores
s.userStore = NewUserStore(s)
return s, nil

40
services/store/testlib.go Normal file
View file

@ -0,0 +1,40 @@
package store
import (
"testing"
"git.ctrlz.es/mgdelacroix/rmsn/model"
"github.com/icrowley/fake"
"github.com/stretchr/testify/require"
)
type TestHelper struct {
t *testing.T
store *Store
}
func NewTestHelper(t *testing.T) (*TestHelper, func()) {
s, err := NewStore(":memory:")
require.NoError(t, err)
teardown := func() {
require.NoError(t, s.Close())
}
return &TestHelper{t: t, store: s}, teardown
}
func (th *TestHelper) NewUser() *model.User {
user := &model.User{
Name: fake.FullName(),
Mail: fake.EmailAddress(),
Username: fake.UserName(),
Password: fake.SimplePassword(),
}
newUser, err := th.store.User().Create(user)
require.NoError(th.t, err)
return newUser
}

View file

@ -70,7 +70,7 @@ func (us *UserStore) GetByID(id int) (*model.User, error) {
func (us *UserStore) Create(user *model.User) (*model.User, error) {
query := us.Q().Insert("users").
Columns(userColumns[0:len(userColumns)-1]...).
Columns(userColumns[1:]...).
Values(user.Name, user.Mail, user.Username, user.Password)
res, err := query.Exec()

View file

@ -0,0 +1,44 @@
package store
import (
"testing"
"git.ctrlz.es/mgdelacroix/rmsn/model"
"github.com/stretchr/testify/require"
)
func TestCreateUser(t *testing.T) {
th, teardown := NewTestHelper(t)
defer teardown()
user := &model.User{
Name: "John",
Mail: "john_doe@example.com",
Username: "john_doe",
Password: "mysupersecret",
}
newUser, err := th.store.User().Create(user)
require.NoError(t, err)
require.NotZero(t, newUser.ID)
require.Equal(t, user.Name, newUser.Name)
require.Equal(t, user.Mail, newUser.Mail)
require.Equal(t, user.Username, newUser.Username)
require.Equal(t, user.Password, newUser.Password)
}
func TestGetByID(t *testing.T) {
th, teardown := NewTestHelper(t)
defer teardown()
user := th.NewUser()
user2, err := th.store.User().GetByID(user.ID)
require.NoError(t, err)
require.Equal(t, user.ID, user2.ID)
require.Equal(t, user.Name, user2.Name)
require.Equal(t, user.Mail, user2.Mail)
require.Equal(t, user.Username, user2.Username)
require.Equal(t, user.Password, user2.Password)
}