58 lines
1.9 KiB
Go
58 lines
1.9 KiB
Go
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)
|
|
}
|
|
}
|