feat: add test case for usecase user.create
This commit is contained in:
@ -26,6 +26,7 @@ import (
|
||||
"context"
|
||||
|
||||
"git.vinchent.xyz/vinchent/howmuch/internal/howmuch/model"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type TestUserRepository struct{}
|
||||
@ -38,5 +39,10 @@ func (tur *TestUserRepository) Create(
|
||||
user := *u
|
||||
|
||||
user.ID = 123
|
||||
|
||||
if user.Email == "duplicate@error.com" {
|
||||
return nil, errors.New("blabla (SQLSTATE 23505)")
|
||||
}
|
||||
|
||||
return &user, nil
|
||||
}
|
||||
|
@ -32,18 +32,34 @@ import (
|
||||
)
|
||||
|
||||
func TestCreateUser(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
userUsecase := NewUserUsecase(&repo.TestUserRepository{}, &repo.TestDBRepository{})
|
||||
input := &model.User{
|
||||
Email: "a@b.c",
|
||||
FirstName: "James",
|
||||
LastName: "Bond",
|
||||
Password: "verystrong",
|
||||
}
|
||||
want := input
|
||||
want.ID = 123
|
||||
t.Run("normal create", func(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
userUsecase := NewUserUsecase(&repo.TestUserRepository{}, &repo.TestDBRepository{})
|
||||
input := &model.User{
|
||||
Email: "a@b.c",
|
||||
FirstName: "James",
|
||||
LastName: "Bond",
|
||||
Password: "verystrong",
|
||||
}
|
||||
want := input
|
||||
want.ID = 123
|
||||
|
||||
got, err := userUsecase.Create(ctx, input)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, want, got)
|
||||
got, err := userUsecase.Create(ctx, input)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, want, got)
|
||||
})
|
||||
|
||||
t.Run("duplicate create", func(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
userUsecase := NewUserUsecase(&repo.TestUserRepository{}, &repo.TestDBRepository{})
|
||||
input := &model.User{
|
||||
Email: "duplicate@error.com",
|
||||
FirstName: "James",
|
||||
LastName: "Bond",
|
||||
Password: "verystrong",
|
||||
}
|
||||
|
||||
_, err := userUsecase.Create(ctx, input)
|
||||
assert.EqualError(t, err, UserExisted.Error())
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user