mirror of
https://github.com/Floriansylvain/RenewCMS.git
synced 2026-08-19 19:53:21 +02:00
feat: unit testing mocked repos / domain
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"RenewCMS/internal/domain/user"
|
||||
"RenewCMS/internal/infrastructure/useCases"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type mockUserRepo struct {
|
||||
users map[uint32]user.User
|
||||
}
|
||||
|
||||
func (m *mockUserRepo) Create(u user.User) (user.User, error) {
|
||||
u.ID = uint32(len(m.users) + 1)
|
||||
m.users[u.ID] = u
|
||||
return u, nil
|
||||
}
|
||||
|
||||
func (m *mockUserRepo) Get(id uint32) (user.User, error) {
|
||||
u, ok := m.users[id]
|
||||
if !ok {
|
||||
return user.User{}, nil
|
||||
}
|
||||
return u, nil
|
||||
}
|
||||
|
||||
func (m *mockUserRepo) GetAll() []user.User {
|
||||
var list []user.User
|
||||
for _, u := range m.users {
|
||||
list = append(list, u)
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
func (m *mockUserRepo) UpdateVerificationStatus(id uint32, v bool) (user.User, error) {
|
||||
u := m.users[id]
|
||||
u.IsVerified = v
|
||||
m.users[id] = u
|
||||
return u, nil
|
||||
}
|
||||
|
||||
func (m *mockUserRepo) GetByUsername(n string) (user.User, error) { return user.User{}, nil }
|
||||
func (m *mockUserRepo) GetByEmail(e string) (user.User, error) { return user.User{}, nil }
|
||||
func (m *mockUserRepo) Delete(id uint32) error { return nil }
|
||||
func (m *mockUserRepo) UpdatePassword(id uint32, p string) (user.User, error) {
|
||||
return user.User{}, nil
|
||||
}
|
||||
func (m *mockUserRepo) UpdatePasswordResetCode(id uint32, c string) (user.User, error) {
|
||||
return user.User{}, nil
|
||||
}
|
||||
|
||||
var _ user.Repository = &mockUserRepo{}
|
||||
|
||||
func TestCreateUser(t *testing.T) {
|
||||
repo := &mockUserRepo{users: make(map[uint32]user.User)}
|
||||
uc := useCases.NewCreateUserUseCase(repo)
|
||||
|
||||
cmd := useCases.CreateUserCommand{
|
||||
Username: "testuser",
|
||||
Password: "password123",
|
||||
Email: "test@example.com",
|
||||
}
|
||||
|
||||
res, err := uc.CreateUser(cmd)
|
||||
if err != nil {
|
||||
t.Fatalf("User creation failed: %v", err)
|
||||
}
|
||||
if res.Username != cmd.Username {
|
||||
t.Errorf("Username mismatch")
|
||||
}
|
||||
if res.VerificationCode == "" {
|
||||
t.Errorf("Verification code was not generated")
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateUserVerification(t *testing.T) {
|
||||
repo := &mockUserRepo{users: map[uint32]user.User{
|
||||
1: {ID: 1, IsVerified: false},
|
||||
}}
|
||||
uc := useCases.NewUpdateUserUseCase(repo)
|
||||
|
||||
res, err := uc.UpdateVerificationStatus(1, true)
|
||||
if err != nil {
|
||||
t.Fatalf("Update failed: %v", err)
|
||||
}
|
||||
if !res.IsVerified {
|
||||
t.Errorf("User should be verified")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user