Files
chis_osi/osi/jktj_test.go
T

58 lines
2.0 KiB
Go
Raw Normal View History

package osi
import (
"context"
"net/http"
"net/http/httptest"
"testing"
"time"
)
func TestLastHealthCheckDecodesSummaryAndHitsPath(t *testing.T) {
var seenPath string
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
seenPath = r.URL.Path
w.Header().Set("Content-Type", "application/json")
// data 为单个对象(非数组);字段名取自实测结构,值均为脱敏假数据
_, _ = w.Write([]byte(`{"code":"01","message":"操作成功","data":{"checkId":"CHK-TEST-001","healthCheck":"CHK-TEST-001","idcard":"TEST-ID","personName":"测试","checkDate":"2026-01-01"}}`))
}))
defer server.Close()
transport, err := NewTransport(TransportConfig{Timeout: time.Second})
if err != nil {
t.Fatalf("NewTransport: %v", err)
}
client := NewClient(ClientConfig{BaseURL: server.URL, UserName: "u", Ask: "k", Transport: transport})
summary, result, err := client.LastHealthCheck(context.Background(), FindHealthCheckQuery{IDCard: "TEST-ID"})
if err != nil {
t.Fatalf("LastHealthCheck: %v", err)
}
if seenPath != "/osi/api/auto/jktjlscx/query" {
t.Fatalf("path = %q", seenPath)
}
if summary.CheckID != "CHK-TEST-001" || summary.HealthCheck != "CHK-TEST-001" {
t.Fatalf("summary keys = %#v", summary)
}
// 体检身份证是小写 idcard,确认 tag 正确映射
if summary.IDCard != "TEST-ID" {
t.Fatalf("summary.IDCard = %q (体检 idcard tag 映射错误)", summary.IDCard)
}
if !result.Success || len(result.Raw) == 0 {
t.Fatalf("result should be success with raw retained: %#v", result)
}
}
func TestFindHealthCheckQueryRequiresExactlyOneKey(t *testing.T) {
if _, err := (FindHealthCheckQuery{}).baseInfo(); err == nil {
t.Fatal("empty query should error")
}
if _, err := (FindHealthCheckQuery{IDCard: "a", PHRID: "b"}).baseInfo(); err == nil {
t.Fatal("two keys should error")
}
bi, err := (FindHealthCheckQuery{IDCard: "a"}).baseInfo()
if err != nil || bi["idCard"] != "a" {
t.Fatalf("baseInfo = %v err = %v", bi, err)
}
}