112 lines
2.5 KiB
Go
112 lines
2.5 KiB
Go
package entity_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/eminetto/clean-architecture-go-v2/entity"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestNewUser(t *testing.T) {
|
|
u, err := entity.NewUser("sjobs@apple.com", "new_password", "Steve", "Jobs")
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, u.FirstName, "Steve")
|
|
assert.NotNil(t, u.ID)
|
|
assert.NotEqual(t, u.Password, "new_password")
|
|
}
|
|
|
|
func TestValidatePassword(t *testing.T) {
|
|
u, _ := entity.NewUser("sjobs@apple.com", "new_password", "Steve", "Jobs")
|
|
err := u.ValidatePassword("new_password")
|
|
assert.Nil(t, err)
|
|
err = u.ValidatePassword("wrong_password")
|
|
assert.NotNil(t, err)
|
|
|
|
}
|
|
|
|
func TestAddBook(t *testing.T) {
|
|
u, _ := entity.NewUser("sjobs@apple.com", "new_password", "Steve", "Jobs")
|
|
bID := entity.NewID()
|
|
err := u.AddBook(bID)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, 1, len(u.Books))
|
|
err = u.AddBook(bID)
|
|
assert.Equal(t, entity.ErrBookAlreadyBorrowed, err)
|
|
|
|
}
|
|
|
|
func TestRemoveBook(t *testing.T) {
|
|
u, _ := entity.NewUser("sjobs@apple.com", "new_password", "Steve", "Jobs")
|
|
err := u.RemoveBook(entity.NewID())
|
|
assert.Equal(t, entity.ErrNotFound, err)
|
|
bID := entity.NewID()
|
|
_ = u.AddBook(bID)
|
|
err = u.RemoveBook(bID)
|
|
assert.Nil(t, err)
|
|
}
|
|
|
|
func TestGetBook(t *testing.T) {
|
|
u, _ := entity.NewUser("sjobs@apple.com", "new_password", "Steve", "Jobs")
|
|
bID := entity.NewID()
|
|
_ = u.AddBook(bID)
|
|
id, err := u.GetBook(bID)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, id, bID)
|
|
_, err = u.GetBook(entity.NewID())
|
|
assert.Equal(t, entity.ErrNotFound, err)
|
|
}
|
|
|
|
func TestUserValidate(t *testing.T) {
|
|
type test struct {
|
|
email string
|
|
password string
|
|
firstName string
|
|
lastName string
|
|
want error
|
|
}
|
|
|
|
tests := []test{
|
|
{
|
|
email: "sjobs@apple.com",
|
|
password: "new_password",
|
|
firstName: "Steve",
|
|
lastName: "Jobs",
|
|
want: nil,
|
|
},
|
|
{
|
|
email: "",
|
|
password: "new_password",
|
|
firstName: "Steve",
|
|
lastName: "Jobs",
|
|
want: entity.ErrInvalidEntity,
|
|
},
|
|
{
|
|
email: "sjobs@apple.com",
|
|
password: "",
|
|
firstName: "Steve",
|
|
lastName: "Jobs",
|
|
want: nil,
|
|
},
|
|
{
|
|
email: "sjobs@apple.com",
|
|
password: "new_password",
|
|
firstName: "",
|
|
lastName: "Jobs",
|
|
want: entity.ErrInvalidEntity,
|
|
},
|
|
{
|
|
email: "sjobs@apple.com",
|
|
password: "new_password",
|
|
firstName: "Steve",
|
|
lastName: "",
|
|
want: entity.ErrInvalidEntity,
|
|
},
|
|
}
|
|
for _, tc := range tests {
|
|
|
|
_, err := entity.NewUser(tc.email, tc.password, tc.firstName, tc.lastName)
|
|
assert.Equal(t, err, tc.want)
|
|
}
|
|
|
|
}
|