homebox/backend/internal/repo/repo_users_test.go

165 lines
3.3 KiB
Go
Raw Normal View History

2022-08-30 02:30:36 +00:00
package repo
import (
"context"
"fmt"
"testing"
2022-08-30 18:05:11 +00:00
"github.com/hay-kot/content/backend/ent"
2022-08-30 02:40:54 +00:00
"github.com/hay-kot/content/backend/internal/types"
"github.com/hay-kot/content/backend/pkgs/faker"
2022-08-30 02:30:36 +00:00
"github.com/stretchr/testify/assert"
)
func UserFactory() types.UserCreate {
f := faker.NewFaker()
2022-08-31 03:21:18 +00:00
2022-08-30 02:30:36 +00:00
return types.UserCreate{
Name: f.RandomString(10),
Email: f.RandomEmail(),
Password: f.RandomString(10),
IsSuperuser: f.RandomBool(),
2022-08-31 03:21:18 +00:00
GroupID: testGroup.ID,
2022-08-30 02:30:36 +00:00
}
}
func Test_EntUserRepo_GetOneEmail(t *testing.T) {
assert := assert.New(t)
user := UserFactory()
ctx := context.Background()
2022-09-03 09:52:05 +00:00
_, err := testRepos.Users.Create(ctx, user)
assert.NoError(err)
2022-08-30 02:30:36 +00:00
foundUser, err := testRepos.Users.GetOneEmail(ctx, user.Email)
assert.NotNil(foundUser)
assert.Nil(err)
assert.Equal(user.Email, foundUser.Email)
assert.Equal(user.Name, foundUser.Name)
// Cleanup
2022-09-03 09:52:05 +00:00
err = testRepos.Users.DeleteAll(ctx)
assert.NoError(err)
2022-08-30 02:30:36 +00:00
}
func Test_EntUserRepo_GetOneId(t *testing.T) {
assert := assert.New(t)
user := UserFactory()
ctx := context.Background()
userOut, _ := testRepos.Users.Create(ctx, user)
foundUser, err := testRepos.Users.GetOneId(ctx, userOut.ID)
assert.NotNil(foundUser)
assert.Nil(err)
assert.Equal(user.Email, foundUser.Email)
assert.Equal(user.Name, foundUser.Name)
// Cleanup
2022-09-03 09:52:05 +00:00
err = testRepos.Users.DeleteAll(ctx)
assert.NoError(err)
2022-08-30 02:30:36 +00:00
}
func Test_EntUserRepo_GetAll(t *testing.T) {
// Setup
toCreate := []types.UserCreate{
UserFactory(),
UserFactory(),
UserFactory(),
UserFactory(),
}
ctx := context.Background()
2022-08-30 18:05:11 +00:00
created := []*ent.User{}
2022-08-30 02:30:36 +00:00
for _, usr := range toCreate {
usrOut, _ := testRepos.Users.Create(ctx, usr)
created = append(created, usrOut)
}
// Validate
allUsers, err := testRepos.Users.GetAll(ctx)
2022-08-31 03:21:18 +00:00
assert.NoError(t, err)
2022-08-30 02:30:36 +00:00
assert.Equal(t, len(created), len(allUsers))
for _, usr := range created {
fmt.Printf("%+v\n", usr)
2022-08-31 03:21:18 +00:00
for _, usr2 := range allUsers {
if usr.ID == usr2.ID {
assert.Equal(t, usr.Email, usr2.Email)
// Check groups are loaded
assert.NotNil(t, usr2.Edges.Group)
}
}
2022-08-30 02:30:36 +00:00
}
for _, usr := range created {
2022-09-03 09:52:05 +00:00
_ = testRepos.Users.Delete(ctx, usr.ID)
2022-08-30 02:30:36 +00:00
}
// Cleanup
2022-09-03 09:52:05 +00:00
err = testRepos.Users.DeleteAll(ctx)
assert.NoError(t, err)
2022-08-30 02:30:36 +00:00
}
func Test_EntUserRepo_Update(t *testing.T) {
t.Skip()
}
func Test_EntUserRepo_Delete(t *testing.T) {
// Create 10 Users
for i := 0; i < 10; i++ {
user := UserFactory()
ctx := context.Background()
_, _ = testRepos.Users.Create(ctx, user)
}
// Delete all
ctx := context.Background()
allUsers, _ := testRepos.Users.GetAll(ctx)
assert.Greater(t, len(allUsers), 0)
2022-09-03 09:52:05 +00:00
err := testRepos.Users.DeleteAll(ctx)
assert.NoError(t, err)
2022-08-30 02:30:36 +00:00
allUsers, _ = testRepos.Users.GetAll(ctx)
assert.Equal(t, len(allUsers), 0)
}
func Test_EntUserRepo_GetSuperusers(t *testing.T) {
// Create 10 Users
superuser := 0
users := 0
for i := 0; i < 10; i++ {
user := UserFactory()
ctx := context.Background()
_, _ = testRepos.Users.Create(ctx, user)
if user.IsSuperuser {
superuser++
} else {
users++
}
}
// Delete all
ctx := context.Background()
superUsers, err := testRepos.Users.GetSuperusers(ctx)
assert.NoError(t, err)
for _, usr := range superUsers {
assert.True(t, usr.IsSuperuser)
}
// Cleanup
2022-09-03 09:52:05 +00:00
err = testRepos.Users.DeleteAll(ctx)
assert.NoError(t, err)
2022-08-30 02:30:36 +00:00
}