feat: 支持顺运宝多订单号搜索 (#217)

This commit is contained in:
chengma
2026-08-13 14:58:19 +08:00
parent 2ebe6bf695
commit 8f2b3f725d
13 changed files with 372 additions and 46 deletions
+55
View File
@@ -1,8 +1,10 @@
package main
import (
"fmt"
"net/http"
"net/http/httptest"
"net/url"
"os"
"strings"
"testing"
@@ -658,6 +660,41 @@ func TestMainPagesReturnOK(t *testing.T) {
if err != nil {
t.Fatalf("准备顺运宝详情测试数据失败: %v", err)
}
multiOrderRequest := httptest.NewRequest(http.MethodGet,
"/syb?order_no="+url.QueryEscape("ORDER-PDD-ID-INPUT\nNOT-FOUND"), nil)
addAuth(multiOrderRequest)
multiOrderResponse := httptest.NewRecorder()
router.ServeHTTP(multiOrderResponse, multiOrderRequest)
multiOrderBody := multiOrderResponse.Body.String()
if multiOrderResponse.Code != http.StatusOK {
t.Fatalf("多订单号搜索应返回页面,实际 %d:%s", multiOrderResponse.Code, multiOrderBody)
}
for _, want := range []string{
`>ORDER-PDD-ID-INPUT,NOT-FOUND</textarea>`,
"已输入 2 个订单号", "当前筛选命中 1 个订单、1 条商品明细", "当前筛选未命中:NOT-FOUND",
} {
if !strings.Contains(multiOrderBody, want) {
t.Errorf("多订单号搜索响应缺少 %q", want)
}
}
tooManyOrderNos := make([]string, 101)
for i := range tooManyOrderNos {
tooManyOrderNos[i] = fmt.Sprintf("ORDER-%03d", i)
}
invalidOrderRequest := httptest.NewRequest(http.MethodGet,
"/syb?order_no="+url.QueryEscape(strings.Join(tooManyOrderNos, ",")), nil)
addAuth(invalidOrderRequest)
invalidOrderResponse := httptest.NewRecorder()
router.ServeHTTP(invalidOrderResponse, invalidOrderRequest)
invalidOrderBody := invalidOrderResponse.Body.String()
if invalidOrderResponse.Code != http.StatusOK ||
!strings.Contains(invalidOrderBody, "一次最多搜索 100 个不同订单号") ||
!strings.Contains(invalidOrderBody, `aria-invalid="true"`) {
t.Fatalf("超量订单号应在页面就地提示且不返回 500,实际 %d:%s",
invalidOrderResponse.Code, invalidOrderBody)
}
detailRequest := httptest.NewRequest(http.MethodGet, "/syb/detail?id=SYB-PDD-ID-INPUT", nil)
addAuth(detailRequest)
detailResponse := httptest.NewRecorder()
@@ -778,3 +815,21 @@ func TestModalBackdropRequiresPointerStart(t *testing.T) {
}
}
}
func TestSybOrderSearch_回车搜索且Shift回车保留换行(t *testing.T) {
js, err := staticFS.ReadFile("static/js/app.js")
if err != nil {
t.Fatalf("读取公共 JavaScript 失败: %v", err)
}
source := string(js)
for _, want := range []string{
`document.querySelector("[data-syb-order-search]")`,
`event.key !== "Enter" || event.shiftKey || event.isComposing`,
`input.form.requestSubmit()`,
`setupSybOrderSearch();`,
} {
if !strings.Contains(source, want) {
t.Errorf("多订单号搜索缺少键盘守卫 %q", want)
}
}
}