Refactor employee management
This commit is contained in:
@@ -13,18 +13,59 @@ import (
|
||||
func TestUsersService_Create_Success(t *testing.T) {
|
||||
svc := UsersService{}
|
||||
dto, err := svc.Create(models.CreateUserDTO{
|
||||
Username: "users_create_ok",
|
||||
Password: "password123",
|
||||
Name: "新技术员",
|
||||
Email: "new@example.com",
|
||||
Role: "technician",
|
||||
Password: "password123",
|
||||
Name: "新技术员",
|
||||
Email: "new@example.com",
|
||||
Phone: "13800000001",
|
||||
EmployeeNo: "users_create_ok",
|
||||
Position: "技术员",
|
||||
Role: "technician",
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, dto)
|
||||
assert.Equal(t, "users_create_ok", dto.Username)
|
||||
assert.Equal(t, "technician", dto.Role)
|
||||
assert.Equal(t, "13800000001", dto.Phone)
|
||||
assert.Equal(t, "users_create_ok", dto.EmployeeNo)
|
||||
assert.Len(t, dto.EmployeeSerials, 1)
|
||||
|
||||
database.DB.Unscoped().Where("username = ?", "users_create_ok").Delete(&models.User{})
|
||||
database.DB.Unscoped().Where("employee_name = ?", "新技术员").Delete(&models.EmployeeSerial{})
|
||||
}
|
||||
|
||||
func TestUsersService_Create_EmployeeWithoutPasswordGeneratesSerial(t *testing.T) {
|
||||
svc := UsersService{}
|
||||
dto, err := svc.Create(models.CreateUserDTO{
|
||||
Name: "普通员工",
|
||||
Phone: "13800000002",
|
||||
EmployeeNo: "employee_no_pwd",
|
||||
Position: "生产员工",
|
||||
Role: "employee",
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, dto)
|
||||
assert.Equal(t, "employee", dto.Role)
|
||||
assert.Len(t, dto.EmployeeSerials, 1)
|
||||
|
||||
var user models.User
|
||||
assert.NoError(t, database.DB.Where("employee_no = ?", "employee_no_pwd").First(&user).Error)
|
||||
assert.Empty(t, user.Password)
|
||||
|
||||
database.DB.Unscoped().Where("employee_id = ?", user.ID).Delete(&models.EmployeeSerial{})
|
||||
database.DB.Unscoped().Delete(&user)
|
||||
}
|
||||
|
||||
func TestUsersService_Create_BackendRoleRequiresPassword(t *testing.T) {
|
||||
svc := UsersService{}
|
||||
_, err := svc.Create(models.CreateUserDTO{
|
||||
Name: "无密码技术员",
|
||||
Phone: "13800000003",
|
||||
EmployeeNo: "tech_no_pwd",
|
||||
Position: "技术员",
|
||||
Role: "technician",
|
||||
})
|
||||
assert.Error(t, err)
|
||||
assert.Contains(t, err.Error(), "必须设置")
|
||||
}
|
||||
|
||||
func TestUsersService_Create_DuplicateUsername(t *testing.T) {
|
||||
@@ -39,10 +80,13 @@ func TestUsersService_Create_DuplicateUsername(t *testing.T) {
|
||||
|
||||
svc := UsersService{}
|
||||
_, err := svc.Create(models.CreateUserDTO{
|
||||
Username: "users_create_dup",
|
||||
Password: "password123",
|
||||
Name: "duplicate",
|
||||
Role: "technician",
|
||||
Username: "users_create_dup",
|
||||
Password: "password123",
|
||||
Name: "duplicate",
|
||||
Phone: "13800000004",
|
||||
EmployeeNo: "users_create_dup_2",
|
||||
Position: "技术员",
|
||||
Role: "technician",
|
||||
})
|
||||
assert.Error(t, err)
|
||||
assert.Contains(t, err.Error(), "用户名已存在")
|
||||
@@ -164,7 +208,7 @@ func TestUsersService_Delete_BlocksLastAdmin(t *testing.T) {
|
||||
func TestUsersService_FindAssignable_ReturnsAdminAndTechnician(t *testing.T) {
|
||||
a := models.User{Username: "assignable_admin", Password: "x", Name: "A", Role: "admin"}
|
||||
tech := models.User{Username: "assignable_tech", Password: "x", Name: "T", Role: "technician"}
|
||||
plain := models.User{Username: "assignable_user", Password: "x", Name: "U", Role: "user"}
|
||||
plain := models.User{Username: "assignable_user", Password: "x", Name: "U", Role: "employee"}
|
||||
database.DB.Create(&a)
|
||||
database.DB.Create(&tech)
|
||||
database.DB.Create(&plain)
|
||||
@@ -189,7 +233,7 @@ func TestUsersService_FindAssignable_ReturnsAdminAndTechnician(t *testing.T) {
|
||||
func TestUsersService_FindAll_FilterByRole(t *testing.T) {
|
||||
tech1 := models.User{Username: "findall_tech1", Password: "x", Name: "T1", Role: "technician"}
|
||||
tech2 := models.User{Username: "findall_tech2", Password: "x", Name: "T2", Role: "technician"}
|
||||
user1 := models.User{Username: "findall_user1", Password: "x", Name: "U1", Role: "user"}
|
||||
user1 := models.User{Username: "findall_user1", Password: "x", Name: "U1", Role: "employee"}
|
||||
database.DB.Create(&tech1)
|
||||
database.DB.Create(&tech2)
|
||||
database.DB.Create(&user1)
|
||||
|
||||
Reference in New Issue
Block a user