Skip to content

Commit

Permalink
chore: fix test, and adjust
Browse files Browse the repository at this point in the history
  • Loading branch information
ashalfarhan committed Jun 30, 2022
1 parent fceea11 commit 6873904
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 33 deletions.
41 changes: 10 additions & 31 deletions service/test/user_service_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package service_test

import (
"database/sql"
"errors"
"net/http"
"testing"
Expand All @@ -13,46 +14,24 @@ import (
)

func TestRegisterFail(t *testing.T) {
testCases := []struct {
desc string
mockReturn error
errCode int
errError error
}{
{
desc: "Register should fail if username exist",
mockReturn: errors.New(repository.ErrDuplicateUsername),
errCode: http.StatusBadRequest,
errError: ErrUsernameExist,
},
{
desc: "Register should fail if email exist",
mockReturn: errors.New(repository.ErrDuplicateEmail),
errCode: http.StatusBadRequest,
errError: ErrEmailExist,
},
}
for _, tC := range testCases {
t.Run(tC.desc, func(t *testing.T) {
as := assert.New(t)
as := assert.New(t)

userRepoMock.On("InsertOne", mock.Anything, mock.Anything).Return(&model.User{}, tC.mockReturn).Once()
d, err := userService.Insert(tctx, &model.RegisterUserFields{})
userRepoMock.AssertExpectations(t)
userRepoMock.On("FindOne", mock.Anything, mock.Anything).Return(&model.User{}, nil).Once()
d, err := userService.Insert(tctx, &model.RegisterUserFields{})
userRepoMock.AssertExpectations(t)

as.Nil(d)
if as.NotNil(err) {
as.Equal(err.Code, tC.errCode)
as.Equal(err.Err, tC.errError)
}
})
as.Nil(d)
if as.NotNil(err) {
as.Equal(err.Code, http.StatusBadRequest)
as.Equal(err.Err, ErrIdentityExist)
}
}

func TestRegisterSuccess(t *testing.T) {
pw := "password"
as := assert.New(t)

userRepoMock.On("FindOne", mock.Anything, mock.Anything).Return(&model.User{}, sql.ErrNoRows).Once()
userRepoMock.On("InsertOne", mock.Anything, mock.Anything).Return(&model.User{}, nil).Once()
reg, err := userService.Insert(tctx, &model.RegisterUserFields{Password: pw})
userRepoMock.AssertExpectations(t)
Expand Down
4 changes: 2 additions & 2 deletions service/user_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ func (s *UserService) GetOne(ctx context.Context, d *model.FindUserArg) (*model.

func (s *UserService) Insert(ctx context.Context, d *model.RegisterUserFields) (*model.User, *model.ConduitError) {
log := logger.GetCtx(ctx)
exUser, _ := s.GetOne(ctx, &model.FindUserArg{Email: d.Email, Username: d.Username})
if exUser != nil {
_, sErr := s.GetOne(ctx, &model.FindUserArg{Email: d.Email, Username: d.Username})
if sErr == nil {
return nil, conduit.BuildError(http.StatusBadRequest, ErrIdentityExist)
}
d.Password = s.HashPassword(d.Password)
Expand Down

0 comments on commit 6873904

Please sign in to comment.