55 lines
1.7 KiB
Go
55 lines
1.7 KiB
Go
package osi
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestQueryElderlySelfCareUsesDocumentedContract(t *testing.T) {
|
|
var seenPath string
|
|
var seenBody map[string]any
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
seenPath = r.URL.Path
|
|
if err := json.NewDecoder(r.Body).Decode(&seenBody); err != nil {
|
|
t.Fatalf("decode request: %v", err)
|
|
}
|
|
_, _ = w.Write([]byte(`{"code":"01","message":"操作成功","data":[{"phrId":"PHR-1","checkId":"LNR-1","jc":"1","jcdj":"1","jcpf":"10","zp":"1","zpdj":"1","zpfs":"100","createDate":"2026-01-01"}]}`))
|
|
}))
|
|
defer server.Close()
|
|
|
|
client := newTestJKDAClient(t, server.URL)
|
|
rows, result, err := client.QueryElderlySelfCare(context.Background(), ElderlySelfCareQuery{
|
|
IDCard: "TEST-ID",
|
|
PHRID: "PHR-1",
|
|
CheckID: "LNR-1",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("QueryElderlySelfCare: %v", err)
|
|
}
|
|
if seenPath != "/osi/api/auto/lnr/query" {
|
|
t.Fatalf("path = %q", seenPath)
|
|
}
|
|
if seenBody["serviceId"] != ServiceIDLNRSelfCareQuery {
|
|
t.Fatalf("serviceId = %v", seenBody["serviceId"])
|
|
}
|
|
baseInfo := seenBody["uploadinfo"].(map[string]any)["baseInfo"].(map[string]any)
|
|
if baseInfo["idCard"] != "TEST-ID" || baseInfo["phrId"] != "PHR-1" || baseInfo["checkId"] != "LNR-1" {
|
|
t.Fatalf("baseInfo = %#v", baseInfo)
|
|
}
|
|
if !result.Success || len(rows) != 1 {
|
|
t.Fatalf("rows=%d result=%#v", len(rows), result)
|
|
}
|
|
if rows[0].Meal != "1" || rows[0].TotalScore != "100" || rows[0].CheckID != "LNR-1" {
|
|
t.Fatalf("row = %#v", rows[0])
|
|
}
|
|
}
|
|
|
|
func TestElderlySelfCareQueryRequiresIDCard(t *testing.T) {
|
|
if _, err := (ElderlySelfCareQuery{PHRID: "PHR-1"}).baseInfo(); err == nil {
|
|
t.Fatal("missing idCard should error")
|
|
}
|
|
}
|