feat: 统一 Admin 主列表分页 (#64)
This commit is contained in:
+42
-16
@@ -2,12 +2,38 @@ package service
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"cmautobuy/admin/model"
|
||||
"cmautobuy/admin/repository"
|
||||
)
|
||||
|
||||
func TestListTasksView_统一每页20条并收敛越界页(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
for i := 0; i < 25; i++ {
|
||||
insertTestTask(t, db, testTaskParams{
|
||||
taskID: fmt.Sprintf("PAGE-%02d", i), taskType: model.TaskCollect,
|
||||
status: model.TaskPending, pddGoodsID: fmt.Sprintf("%d", i+1),
|
||||
})
|
||||
}
|
||||
second, err := ListTasksView(db, repository.TaskFilter{}, 2)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(second.Rows) != 5 || second.Total != 25 || second.Page != 2 || second.TotalPages != 2 {
|
||||
t.Fatalf("第二页结果不对: rows=%d total=%d page=%d/%d",
|
||||
len(second.Rows), second.Total, second.Page, second.TotalPages)
|
||||
}
|
||||
overflow, err := ListTasksView(db, repository.TaskFilter{}, 999)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if overflow.Page != 2 || len(overflow.Rows) != 5 {
|
||||
t.Fatalf("越界页应收敛到末页: page=%d rows=%d", overflow.Page, len(overflow.Rows))
|
||||
}
|
||||
}
|
||||
|
||||
// insertTestTask 插一条任务,字段按需覆盖默认值,供本文件的用例使用。
|
||||
// 跟 client_test.go 里的 insertTask 不一样:那个专为"领取"场景写死了固定值,
|
||||
// 这里需要覆盖类型、状态、options 等更多维度。
|
||||
@@ -94,7 +120,7 @@ func TestListTasksView_同时显示采集和采购(t *testing.T) {
|
||||
insertTestTask(t, db, testTaskParams{taskID: "COL-1", taskType: model.TaskCollect, status: model.TaskPending, pddGoodsID: "111"})
|
||||
insertTestTask(t, db, testTaskParams{taskID: "PUR-1", taskType: model.TaskPurchase, status: model.TaskAssigned, orderNo: "SO-1"})
|
||||
|
||||
result, err := ListTasksView(db, repository.TaskFilter{})
|
||||
result, err := ListTasksView(db, repository.TaskFilter{}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -110,7 +136,7 @@ func TestListTasksView_类型筛选生效(t *testing.T) {
|
||||
insertTestTask(t, db, testTaskParams{taskID: "COL-1", taskType: model.TaskCollect, status: model.TaskPending, pddGoodsID: "111"})
|
||||
insertTestTask(t, db, testTaskParams{taskID: "PUR-1", taskType: model.TaskPurchase, status: model.TaskAssigned, orderNo: "SO-1"})
|
||||
|
||||
result, err := ListTasksView(db, repository.TaskFilter{Type: model.TaskCollect})
|
||||
result, err := ListTasksView(db, repository.TaskFilter{Type: model.TaskCollect}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -127,7 +153,7 @@ func TestListTasksView_状态筛选生效(t *testing.T) {
|
||||
insertTestTask(t, db, testTaskParams{taskID: "COL-1", taskType: model.TaskCollect, status: model.TaskPending, pddGoodsID: "111"})
|
||||
insertTestTask(t, db, testTaskParams{taskID: "COL-2", taskType: model.TaskCollect, status: model.TaskSucceeded, pddGoodsID: "222"})
|
||||
|
||||
result, err := ListTasksView(db, repository.TaskFilter{Status: model.TaskSucceeded})
|
||||
result, err := ListTasksView(db, repository.TaskFilter{Status: model.TaskSucceeded}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -143,17 +169,17 @@ func TestListTasksView_关键词同时匹配任务编号订单号PDD商品ID(t *
|
||||
insertTestTask(t, db, testTaskParams{taskID: "PUR-2", taskType: model.TaskPurchase, status: model.TaskAssigned, orderNo: "SO-OTHER"})
|
||||
|
||||
// 按任务编号命中
|
||||
r, err := ListTasksView(db, repository.TaskFilter{Keyword: "ABC"})
|
||||
r, err := ListTasksView(db, repository.TaskFilter{Keyword: "ABC"}, 1)
|
||||
if err != nil || len(r.Rows) != 1 || r.Rows[0].TaskID != "COL-ABC" {
|
||||
t.Fatalf("按任务编号搜索失败: err=%v rows=%+v", err, r)
|
||||
}
|
||||
// 按订单号命中
|
||||
r, err = ListTasksView(db, repository.TaskFilter{Keyword: "XYZ"})
|
||||
r, err = ListTasksView(db, repository.TaskFilter{Keyword: "XYZ"}, 1)
|
||||
if err != nil || len(r.Rows) != 1 || r.Rows[0].TaskID != "PUR-1" {
|
||||
t.Fatalf("按订单号搜索失败: err=%v rows=%+v", err, r)
|
||||
}
|
||||
// 按 PDD 商品 ID 命中
|
||||
r, err = ListTasksView(db, repository.TaskFilter{Keyword: "737116531267"})
|
||||
r, err = ListTasksView(db, repository.TaskFilter{Keyword: "737116531267"}, 1)
|
||||
if err != nil || len(r.Rows) != 1 || r.Rows[0].TaskID != "COL-ABC" {
|
||||
t.Fatalf("按 PDD 商品 ID 搜索失败: err=%v rows=%+v", err, r)
|
||||
}
|
||||
@@ -165,7 +191,7 @@ func TestListTasksView_目标列_采集任务显示PDD商品ID(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
insertTestTask(t, db, testTaskParams{taskID: "COL-1", taskType: model.TaskCollect, status: model.TaskPending, pddGoodsID: "737116531267"})
|
||||
|
||||
r, err := ListTasksView(db, repository.TaskFilter{})
|
||||
r, err := ListTasksView(db, repository.TaskFilter{}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -185,7 +211,7 @@ func TestListTasksView_目标列_采集任务能join到标题时追加显示(t *
|
||||
}
|
||||
insertTestTask(t, db, testTaskParams{taskID: "COL-1", taskType: model.TaskCollect, status: model.TaskSucceeded, pddGoodsID: "737116531267"})
|
||||
|
||||
r, err := ListTasksView(db, repository.TaskFilter{})
|
||||
r, err := ListTasksView(db, repository.TaskFilter{}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -206,7 +232,7 @@ func TestListTasksView_目标列_商品已软删除时退回显示商品ID(t *te
|
||||
}
|
||||
insertTestTask(t, db, testTaskParams{taskID: "COL-1", taskType: model.TaskCollect, status: model.TaskPending, pddGoodsID: "737116531267"})
|
||||
|
||||
r, err := ListTasksView(db, repository.TaskFilter{})
|
||||
r, err := ListTasksView(db, repository.TaskFilter{}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -224,7 +250,7 @@ func TestListTasksView_目标列_采购任务显示订单号规格数量价格
|
||||
quantity: 2, maxPriceCent: 4200,
|
||||
})
|
||||
|
||||
r, err := ListTasksView(db, repository.TaskFilter{})
|
||||
r, err := ListTasksView(db, repository.TaskFilter{}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -240,7 +266,7 @@ func TestListTasksView_无主任务客户端列显示占位符(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
insertTestTask(t, db, testTaskParams{taskID: "COL-1", taskType: model.TaskCollect, status: model.TaskPending, pddGoodsID: "111"})
|
||||
|
||||
r, err := ListTasksView(db, repository.TaskFilter{})
|
||||
r, err := ListTasksView(db, repository.TaskFilter{}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -258,7 +284,7 @@ func TestListTasksView_统计跟随当前筛选(t *testing.T) {
|
||||
insertTestTask(t, db, testTaskParams{taskID: "PUR-1", taskType: model.TaskPurchase, status: model.TaskAssigned, orderNo: "SO-1"})
|
||||
insertTestTask(t, db, testTaskParams{taskID: "PUR-2", taskType: model.TaskPurchase, status: model.TaskAssigned, orderNo: "SO-2"})
|
||||
|
||||
all, err := ListTasksView(db, repository.TaskFilter{})
|
||||
all, err := ListTasksView(db, repository.TaskFilter{}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -266,7 +292,7 @@ func TestListTasksView_统计跟随当前筛选(t *testing.T) {
|
||||
t.Fatalf("不筛选时总数应该是 4,实际 %d", all.Total)
|
||||
}
|
||||
|
||||
collectOnly, err := ListTasksView(db, repository.TaskFilter{Type: model.TaskCollect})
|
||||
collectOnly, err := ListTasksView(db, repository.TaskFilter{Type: model.TaskCollect}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -285,7 +311,7 @@ func TestListTasksView_统计跟随当前筛选(t *testing.T) {
|
||||
|
||||
func TestListTasksView_从未建过任务时不算筛选无结果(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
r, err := ListTasksView(db, repository.TaskFilter{})
|
||||
r, err := ListTasksView(db, repository.TaskFilter{}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -301,7 +327,7 @@ func TestListTasksView_筛选无结果时IsFiltered为true(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
insertTestTask(t, db, testTaskParams{taskID: "COL-1", taskType: model.TaskCollect, status: model.TaskPending, pddGoodsID: "111"})
|
||||
|
||||
r, err := ListTasksView(db, repository.TaskFilter{Type: model.TaskPurchase})
|
||||
r, err := ListTasksView(db, repository.TaskFilter{Type: model.TaskPurchase}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
@@ -416,7 +442,7 @@ func TestDeleteTasks_批量删除(t *testing.T) {
|
||||
t.Fatalf("应该删除 1 条,实际 %d", n)
|
||||
}
|
||||
|
||||
r, err := ListTasksView(db, repository.TaskFilter{})
|
||||
r, err := ListTasksView(db, repository.TaskFilter{}, 1)
|
||||
if err != nil {
|
||||
t.Fatalf("查询失败: %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user