49 lines
2.0 KiB
Go
49 lines
2.0 KiB
Go
package business
|
|
|
|
import (
|
|
"context"
|
|
"kra/internal/biz/business"
|
|
"testing"
|
|
)
|
|
|
|
func TestDirectPromotesUseApprovedBindingPairsAndStablePaging(t *testing.T) {
|
|
db := prepareAccounts(t)
|
|
for _, sql := range []string{
|
|
"ALTER TABLE tab_promote ADD COLUMN account TEXT",
|
|
"INSERT INTO sys_user_bind_platform(user_id,source_db,platform_busier_id,status) VALUES(7,'lx',10,'0'),(7,'hw',10,'0'),(7,'yq',10,'3'),(8,'lx',20,'0')",
|
|
"INSERT INTO tab_promote(id,source_db,busier_id,promote_level,account) VALUES(1,'lx',10,1,'a'),(2,'lx',10,2,'sub'),(1,'hw',10,1,'b'),(3,'yq',10,1,'pending'),(4,'lx',20,1,'other'),(5,'lx',10,1,'c')",
|
|
} {
|
|
if err := db.Exec(sql).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
r := NewBusinessPromoteRepo(testData{db})
|
|
ctx := context.Background()
|
|
page, err := r.ListDirect(ctx, business.BusinessPromoteFilter{UserID: 7})
|
|
if err != nil || !page.Available || page.Total != 3 || len(page.Rows) != 3 {
|
|
t.Fatalf("直属渠道范围错误: %+v %v", page, err)
|
|
}
|
|
if page.Rows[0].ID != 5 || page.Rows[1].SourceDB != "hw" {
|
|
t.Fatal("同号跨平台分页未使用稳定排序")
|
|
}
|
|
page, err = r.ListDirect(ctx, business.BusinessPromoteFilter{UserID: 7, SourceDB: "hw", BusierID: 10})
|
|
if err != nil || page.Total != 1 || page.Rows[0].Account != "b" {
|
|
t.Fatal("平台与商务筛选未同时生效")
|
|
}
|
|
page, err = r.ListDirect(ctx, business.BusinessPromoteFilter{UserID: 7}, business.ListOffset(1), business.ListLimit(1))
|
|
if err != nil || page.Total != 3 || len(page.Rows) != 1 || page.Rows[0].SourceDB != "hw" {
|
|
t.Fatal("分页或总数不正确")
|
|
}
|
|
if err := db.Exec("DROP TABLE tab_promote").Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
page, err = r.ListDirect(ctx, business.BusinessPromoteFilter{UserID: 7})
|
|
if err != nil || page.Available {
|
|
t.Fatal("未接入的渠道数据不能返回正常空列表")
|
|
}
|
|
page, err = r.ListDirect(ctx, business.BusinessPromoteFilter{UserID: 999})
|
|
if err != nil || !page.Available || page.Total != 0 {
|
|
t.Fatal("无绑定用户的直属渠道应为确定的空集合")
|
|
}
|
|
}
|