fix: 同步原生账号启停与商务审核状态
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"kra/internal/biz/system"
|
||||
)
|
||||
|
||||
func TestUserStatusPolicyReadsLockedStateAndWritesTogether(t *testing.T) {
|
||||
data := newTransactionTestData(t)
|
||||
db := data.gormDB.WithContext(context.Background())
|
||||
user := userPO{Username: "status-user", AuthorityID: 888, Enable: 0, BusinessStatus: 3, NickName: "old"}
|
||||
if err := db.Create(&user).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
repo := &userRepo{data: data}
|
||||
seen := -1
|
||||
err := repo.UpdateUserWithStatus(context.Background(), &system.User{ID: user.ID, NickName: "new", Enable: 1}, func(current int) (int, error) { seen = current; return 0, nil })
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var stored userPO
|
||||
if err := db.First(&stored, user.ID).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if seen != 3 || stored.Enable != 1 || stored.BusinessStatus != 0 || stored.NickName != "new" {
|
||||
t.Fatalf("状态策略和更新不同步: %+v seen=%d", stored, seen)
|
||||
}
|
||||
if err := db.Exec("CREATE TRIGGER fail_status_update BEFORE UPDATE OF business_status ON sys_users BEGIN SELECT RAISE(ABORT, 'test rejection'); END").Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = repo.UpdateUserWithStatus(context.Background(), &system.User{ID: user.ID, NickName: "failed", Enable: 2}, func(int) (int, error) { return 1, nil })
|
||||
if err == nil {
|
||||
t.Fatal("失败的状态更新应回滚")
|
||||
}
|
||||
if err := db.First(&stored, user.ID).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if stored.Enable != 1 || stored.BusinessStatus != 0 || stored.NickName != "new" {
|
||||
t.Fatal("留下部分状态或资料更新")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user