fix: avoid company writes for employee serials

This commit is contained in:
Frudrax Cheng
2026-06-06 14:07:17 +08:00
parent a9aa4a1318
commit f80ab4a8ce
3 changed files with 37 additions and 32 deletions
+28
View File
@@ -33,6 +33,34 @@ func TestUsersService_Create_Success(t *testing.T) {
database.DB.Unscoped().Where("employee_name = ?", "新技术员").Delete(&models.EmployeeSerial{})
}
func TestUsersService_Create_DoesNotTouchCompanyTable(t *testing.T) {
database.DB.Unscoped().Where("company_name = ?", "内部员工").Delete(&models.Company{})
company := models.Company{CompanyName: "内部员工", IsActive: true}
assert.NoError(t, database.DB.Create(&company).Error)
assert.NoError(t, database.DB.Delete(&company).Error)
svc := UsersService{}
dto, err := svc.Create(models.CreateUserDTO{
Password: "password123",
Name: "软删公司员工",
Phone: "13800000008",
EmployeeNo: "users_create_restore_company",
Position: "硬件工程师",
Role: "hardware_engineer",
})
assert.NoError(t, err)
assert.NotNil(t, dto)
assert.Len(t, dto.EmployeeSerials, 1)
var count int64
database.DB.Model(&models.Company{}).Where("company_name = ?", "内部员工").Count(&count)
assert.Equal(t, int64(0), count)
database.DB.Unscoped().Where("username = ?", "users_create_restore_company").Delete(&models.User{})
database.DB.Unscoped().Where("employee_name = ?", "软删公司员工").Delete(&models.EmployeeSerial{})
database.DB.Unscoped().Where("company_name = ?", "内部员工").Delete(&models.Company{})
}
func TestUsersService_Create_BlocksEmployeeRole(t *testing.T) {
svc := UsersService{}
_, err := svc.Create(models.CreateUserDTO{