feat: 迁移预警规则管理和历史分类查询
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package business
|
||||
|
||||
import (
|
||||
"context"
|
||||
"kra/internal/biz/business"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestAlertRulesKeepHistoryAndDoNotOverwriteConcurrentToggle(t *testing.T) {
|
||||
db := prepareAccounts(t)
|
||||
if err := db.Create(&accountPO{ID: 7, Username: "owner", Level: 1}).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
r := NewAlertRuleRepo(testData{db})
|
||||
ctx := context.Background()
|
||||
threshold := "20.50"
|
||||
period, direction := 7, 2
|
||||
rule := &business.AlertRule{Name: "规则", Type: "register_anomaly", Metric: 1, StatPeriodDays: &period, MomDirection: &direction, MomThreshold: &threshold, CreatorID: 7, Enabled: 1, MonitorScope: 1, WarningColor: "red"}
|
||||
if err := r.Create(ctx, rule); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := r.SetEnabled(ctx, rule.ID, 0); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
rule.Name = "已修改"
|
||||
if err := r.Update(ctx, rule); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
loaded, err := r.Find(ctx, rule.ID)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if loaded.Enabled != 0 || loaded.CreatorID != 7 || loaded.CreatorName != "owner" {
|
||||
t.Fatalf("编辑覆盖了独立状态或归属: %+v", loaded)
|
||||
}
|
||||
rows, total, err := r.List(ctx, business.LevelOneScope{UserID: 7}, business.AlertRuleFilter{})
|
||||
if err != nil || total != 1 || len(rows) != 1 {
|
||||
t.Fatalf("规则列表错误: %v", err)
|
||||
}
|
||||
if err := db.Create(&alertRecordPO{BusinessID: 7, RuleType: "register_anomaly"}).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := db.Create(&alertRecordPO{BusinessID: 99, RuleType: "other"}).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := r.SetDeleted(ctx, rule.ID); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, total, err = r.List(ctx, business.LevelOneScope{UserID: 7}, business.AlertRuleFilter{})
|
||||
if err != nil || total != 0 {
|
||||
t.Fatal("删除后仍出现在规则列表")
|
||||
}
|
||||
types, err := r.TypesFromRecords(ctx, business.LevelOneScope{UserID: 7})
|
||||
if err != nil || len(types) != 1 || types[0] != "register_anomaly" {
|
||||
t.Fatalf("删除规则后丢失历史分类或跨商务泄漏: %+v %v", types, err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user