fix: 档口入库码匹配自动恢复顺运宝会话 (#236)

This commit is contained in:
chengma
2026-08-15 10:12:31 +08:00
parent 3665f739aa
commit 7b328b5f84
2 changed files with 91 additions and 7 deletions
+61 -1
View File
@@ -1,6 +1,12 @@
package web
import "testing"
import (
"errors"
"strings"
"testing"
"cmautobuy/admin/service"
)
func TestParseInnerCodeIDs_过滤无效并保持首次选择顺序(t *testing.T) {
got := parseInnerCodeIDs([]string{" 8 ", "bad", "0", "8", "3"})
@@ -8,3 +14,57 @@ func TestParseInnerCodeIDs_过滤无效并保持首次选择顺序(t *testing.T)
t.Fatalf("解析结果不正确: %v", got)
}
}
func TestEnsureInnerCodeMatchSession_有效会话不自动登录(t *testing.T) {
loginCalls := 0
autoLoggedIn, message := ensureInnerCodeMatchSession(
func() error { return nil },
func() (string, bool) { loginCalls++; return "", true },
)
if autoLoggedIn || message != "" || loginCalls != 0 {
t.Fatalf("有效会话不应自动登录: auto=%v message=%q calls=%d", autoLoggedIn, message, loginCalls)
}
}
func TestEnsureInnerCodeMatchSession_过期后自动登录成功(t *testing.T) {
loginCalls := 0
autoLoggedIn, message := ensureInnerCodeMatchSession(
func() error { return service.ErrSybLoginRequired },
func() (string, bool) { loginCalls++; return "", true },
)
if !autoLoggedIn || message != "" || loginCalls != 1 {
t.Fatalf("过期会话应自动登录一次: auto=%v message=%q calls=%d", autoLoggedIn, message, loginCalls)
}
}
func TestEnsureInnerCodeMatchSession_自动登录失败给出恢复路径(t *testing.T) {
autoLoggedIn, message := ensureInnerCodeMatchSession(
func() error { return service.ErrSybLoginRequired },
func() (string, bool) { return "验证码识别服务不可达", false },
)
if autoLoggedIn || !strings.Contains(message, "验证码识别服务不可达") ||
!strings.Contains(message, "顺运宝数据") || !strings.Contains(message, "没有执行匹配") {
t.Fatalf("自动登录失败提示不完整: auto=%v message=%q", autoLoggedIn, message)
}
}
func TestEnsureInnerCodeMatchSession_未配置OCR给出明确原因(t *testing.T) {
_, message := ensureInnerCodeMatchSession(
func() error { return service.ErrSybLoginRequired },
func() (string, bool) { return "", false },
)
if !strings.Contains(message, "未配置验证码识别服务") {
t.Fatalf("未配置 OCR 的提示不明确: %q", message)
}
}
func TestEnsureInnerCodeMatchSession_普通错误不尝试登录(t *testing.T) {
loginCalls := 0
autoLoggedIn, message := ensureInnerCodeMatchSession(
func() error { return errors.New("database unavailable") },
func() (string, bool) { loginCalls++; return "", true },
)
if autoLoggedIn || message != "校验顺运宝会话失败,没有执行匹配。" || loginCalls != 0 {
t.Fatalf("普通错误不应自动登录: auto=%v message=%q calls=%d", autoLoggedIn, message, loginCalls)
}
}