47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package web
|
|
|
|
import (
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func visitReq(form string) *http.Request {
|
|
vals := url.Values{}
|
|
for _, kv := range strings.Split(form, "&") {
|
|
p := strings.SplitN(kv, "=", 2)
|
|
vals.Set(p[0], p[1])
|
|
}
|
|
r, _ := http.NewRequest("POST", "/admin/edit/visit", strings.NewReader(vals.Encode()))
|
|
r.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
|
return r
|
|
}
|
|
|
|
func TestParseVisitTimes(t *testing.T) {
|
|
// 只记到达:离开留空应该合法
|
|
arr, dep, ok, msg := parseVisitTimes(visitReq("arrival=2026-09-16T10:00&departure="))
|
|
if !ok {
|
|
t.Fatalf("只记到达应合法,得到: %s", msg)
|
|
}
|
|
if dep != nil {
|
|
t.Fatalf("离开应为 nil,得到 %v", dep)
|
|
}
|
|
if arr.IsZero() {
|
|
t.Fatal("到达时间不应为零值")
|
|
}
|
|
// 两个时间都有
|
|
_, dep, ok, _ = parseVisitTimes(visitReq("arrival=2026-09-16T10:00&departure=2026-09-16T11:30"))
|
|
if !ok || dep == nil {
|
|
t.Fatalf("双时间应合法且 departure 非空, ok=%v dep=%v", ok, dep)
|
|
}
|
|
// 缺到达
|
|
if _, _, ok, _ = parseVisitTimes(visitReq("arrival=&departure=2026-09-16T11:30")); ok {
|
|
t.Fatal("缺到达应不合法")
|
|
}
|
|
// 离开早于到达
|
|
if _, _, ok, _ = parseVisitTimes(visitReq("arrival=2026-09-16T10:00&departure=2026-09-16T09:00")); ok {
|
|
t.Fatal("离开早于到达应不合法")
|
|
}
|
|
}
|