From 0a784e55346d770af7a04f769516a151ad8e23eb Mon Sep 17 00:00:00 2001 From: chan Date: Wed, 4 Mar 2026 14:31:05 +0900 Subject: [PATCH] fix(backend): fix UserGroup model and NewTenantService signature in bootstrap and tests --- backend/internal/bootstrap/tenant_seed.go | 3 ++- backend/internal/domain/user_group.go | 1 + backend/internal/service/tenant_service_edge_test.go | 12 ++++++------ backend/internal/service/tenant_service_test.go | 10 +++++----- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/backend/internal/bootstrap/tenant_seed.go b/backend/internal/bootstrap/tenant_seed.go index 7360afa7..1e7fb717 100644 --- a/backend/internal/bootstrap/tenant_seed.go +++ b/backend/internal/bootstrap/tenant_seed.go @@ -31,8 +31,9 @@ func SeedTenants(db *gorm.DB) error { slog.Info("[Bootstrap] Seeding initial tenants...") repo := repository.NewTenantRepository(db) userRepo := repository.NewUserRepository(db) + userGroupRepo := repository.NewUserGroupRepository(db) outboxRepo := repository.NewKetoOutboxRepository(db) - svc := service.NewTenantService(repo, userRepo, outboxRepo) + svc := service.NewTenantService(repo, userRepo, userGroupRepo, outboxRepo) ctx := context.Background() for _, config := range defaultTenants { diff --git a/backend/internal/domain/user_group.go b/backend/internal/domain/user_group.go index a4f35206..fca346d0 100644 --- a/backend/internal/domain/user_group.go +++ b/backend/internal/domain/user_group.go @@ -13,6 +13,7 @@ type UserGroup struct { TenantID string `gorm:"type:uuid;index;not null" json:"tenantId"` ParentID *string `gorm:"type:uuid;index" json:"parentId,omitempty"` // 상위 조직 ID Name string `gorm:"not null" json:"name"` + Slug string `gorm:"index" json:"slug"` // 추가 Description string `json:"description"` UnitType string `json:"unitType"` // 부, 국, 팀, 셀 등 CreatedAt time.Time `json:"createdAt"` diff --git a/backend/internal/service/tenant_service_edge_test.go b/backend/internal/service/tenant_service_edge_test.go index a2a34002..f171481e 100644 --- a/backend/internal/service/tenant_service_edge_test.go +++ b/backend/internal/service/tenant_service_edge_test.go @@ -13,7 +13,7 @@ import ( func TestTenantService_RegisterTenant_DuplicateSlug(t *testing.T) { mockRepo := new(MockTenantRepoForSvc) - svc := NewTenantService(mockRepo, nil, nil) + svc := NewTenantService(mockRepo, nil, nil, nil) ctx := context.Background() slug := "duplicate-slug" @@ -28,7 +28,7 @@ func TestTenantService_RegisterTenant_DuplicateSlug(t *testing.T) { } func TestTenantService_RegisterTenant_InvalidSlug(t *testing.T) { - svc := NewTenantService(nil, nil, nil) + svc := NewTenantService(nil, nil, nil, nil) ctx := context.Background() // Case 1: Too short @@ -41,7 +41,7 @@ func TestTenantService_RegisterTenant_InvalidSlug(t *testing.T) { } func TestTenantService_RequestRegistration_EmailMismatch(t *testing.T) { - svc := NewTenantService(nil, nil, nil) + svc := NewTenantService(nil, nil, nil, nil) ctx := context.Background() // admin email domain (gmail.com) != tenant domain (company.com) @@ -53,7 +53,7 @@ func TestTenantService_RequestRegistration_EmailMismatch(t *testing.T) { func TestTenantService_ApproveTenant_NotFound(t *testing.T) { mockRepo := new(MockTenantRepoForSvc) - svc := NewTenantService(mockRepo, nil, nil) + svc := NewTenantService(mockRepo, nil, nil, nil) ctx := context.Background() id := "non-existent-id" @@ -67,7 +67,7 @@ func TestTenantService_ApproveTenant_NotFound(t *testing.T) { func TestTenantService_GetTenantByDomain_Inactive(t *testing.T) { mockRepo := new(MockTenantRepoForSvc) - svc := NewTenantService(mockRepo, nil, nil) + svc := NewTenantService(mockRepo, nil, nil, nil) ctx := context.Background() domainName := "inactive.com" @@ -88,7 +88,7 @@ func TestTenantService_ApproveTenant_UserNotFound(t *testing.T) { mockUserRepo := new(MockUserRepoForTenant) mockOutbox := new(MockKetoOutboxRepositoryShared) - svc := NewTenantService(mockRepo, mockUserRepo, mockOutbox) + svc := NewTenantService(mockRepo, mockUserRepo, nil, mockOutbox) ctx := context.Background() tenantID := "t1" adminEmail := "notfound@tenant.com" diff --git a/backend/internal/service/tenant_service_test.go b/backend/internal/service/tenant_service_test.go index 6ca1bc06..62344fee 100644 --- a/backend/internal/service/tenant_service_test.go +++ b/backend/internal/service/tenant_service_test.go @@ -149,7 +149,7 @@ func (m *MockUserRepoForTenant) CountByCompanyCodes(ctx context.Context, codes [ func TestTenantService_RegisterTenant_AutoVerify(t *testing.T) { mockRepo := new(MockTenantRepoForSvc) mockOutbox := new(MockKetoOutboxRepositoryShared) - svc := NewTenantService(mockRepo, nil, mockOutbox) + svc := NewTenantService(mockRepo, nil, nil, mockOutbox) ctx := context.Background() name := "New Tenant" @@ -172,7 +172,7 @@ func TestTenantService_RegisterTenant_AutoVerify(t *testing.T) { func TestTenantService_RegisterTenant_WithCreator(t *testing.T) { mockRepo := new(MockTenantRepoForSvc) mockOutbox := new(MockKetoOutboxRepositoryShared) - svc := NewTenantService(mockRepo, nil, mockOutbox) + svc := NewTenantService(mockRepo, nil, nil, mockOutbox) ctx := context.Background() name := "Creator Tenant" @@ -213,7 +213,7 @@ func TestTenantService_RegisterTenant_WithCreator(t *testing.T) { func TestTenantService_RequestRegistration_NoVerify(t *testing.T) { mockRepo := new(MockTenantRepoForSvc) mockOutbox := new(MockKetoOutboxRepositoryShared) - svc := NewTenantService(mockRepo, nil, mockOutbox) + svc := NewTenantService(mockRepo, nil, nil, mockOutbox) ctx := context.Background() name := "Public Tenant" @@ -238,7 +238,7 @@ func TestTenantService_ApproveTenant_SyncAdmin(t *testing.T) { mockKeto := new(MockKetoSvcForTenant) mockOutbox := new(MockKetoOutboxRepositoryShared) - svc := NewTenantService(mockRepo, mockUserRepo, mockOutbox) + svc := NewTenantService(mockRepo, mockUserRepo, nil, mockOutbox) svc.SetKetoService(mockKeto) ctx := context.Background() @@ -275,7 +275,7 @@ func TestTenantService_ApproveTenant_SyncAdmin(t *testing.T) { func TestTenantService_ListTenants(t *testing.T) { mockRepo := new(MockTenantRepoForSvc) - svc := NewTenantService(mockRepo, nil, nil) + svc := NewTenantService(mockRepo, nil, nil, nil) ctx := context.Background() tenants := []domain.Tenant{{ID: "t1", Name: "Tenant 1"}}