Files
chis_osi/osi/public_test.go
T

187 lines
6.6 KiB
Go
Raw Normal View History

package osi
import (
"context"
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
)
func TestQueryGridAddressCallsWGDZ00001(t *testing.T) {
var seenPath string
var seenPayload 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(&seenPayload); err != nil {
t.Fatalf("decode request: %v", err)
}
_, _ = w.Write([]byte(`{"code":"01","message":"操作成功","data":[{"regionCode":"441625000000","regionName":"测试网格","isFamily":"1"}]}`))
}))
defer server.Close()
client := newTestJKDAClient(t, server.URL)
rows, result, err := client.QueryGridAddress(context.Background(), GridAddressQuery{
ParentCode: "441625",
PageNo: 1,
OperateUser: "712041",
})
if err != nil {
t.Fatalf("QueryGridAddress: %v", err)
}
if !result.Success || result.Code != "01" {
t.Fatalf("result = %#v", result)
}
if seenPath != "/osi/api/auto/wgdzcx/query" {
t.Fatalf("path = %q", seenPath)
}
if seenPayload["serviceId"] != ServiceIDGridAddress {
t.Fatalf("serviceId = %v", seenPayload["serviceId"])
}
baseInfo := seenPayload["uploadinfo"].(map[string]any)["baseInfo"].(map[string]any)
if baseInfo["parentCode"] != "441625" || baseInfo["pageNo"] != float64(1) || baseInfo["operateUser"] != "712041" {
t.Fatalf("baseInfo = %#v", baseInfo)
}
if len(rows) != 1 || rows[0].RegionCode != "441625000000" || rows[0].RegionName != "测试网格" || rows[0].IsFamily != "1" {
t.Fatalf("rows = %#v", rows)
}
}
func TestQueryDoctorsCallsZRYS00001(t *testing.T) {
var seenPath string
var seenPayload 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(&seenPayload); err != nil {
t.Fatalf("decode request: %v", err)
}
_, _ = w.Write([]byte(`{"code":"01","message":"操作成功","data":[{"personId":"doc-001","personName":"测试医生"}]}`))
}))
defer server.Close()
client := newTestJKDAClient(t, server.URL)
rows, result, err := client.QueryDoctors(context.Background(), DoctorQuery{
ManaUnitID: "441625001",
OperateUser: "712041",
})
if err != nil {
t.Fatalf("QueryDoctors: %v", err)
}
if !result.Success || result.Code != "01" {
t.Fatalf("result = %#v", result)
}
if seenPath != "/osi/api/auto/zryscx/query" {
t.Fatalf("path = %q", seenPath)
}
if seenPayload["serviceId"] != ServiceIDDoctors {
t.Fatalf("serviceId = %v", seenPayload["serviceId"])
}
baseInfo := seenPayload["uploadinfo"].(map[string]any)["baseInfo"].(map[string]any)
if baseInfo["manaUnitId"] != "441625001" || baseInfo["operateUser"] != "712041" {
t.Fatalf("baseInfo = %#v", baseInfo)
}
if len(rows) != 1 || rows[0].PersonID != "doc-001" || rows[0].PersonName != "测试医生" {
t.Fatalf("rows = %#v", rows)
}
}
func TestQueryDrugsCallsYPML00001(t *testing.T) {
var seenPath string
var seenPayload 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(&seenPayload); err != nil {
t.Fatalf("decode request: %v", err)
}
_, _ = w.Write([]byte(`{"code":"01","message":"操作成功","data":[{"ypmc":"测试药品","ypdw":"盒","ypgg":"10mg","jldw":"片"}]}`))
}))
defer server.Close()
client := newTestJKDAClient(t, server.URL)
rows, result, err := client.QueryDrugs(context.Background(), DrugQuery{
PageNo: 1,
YPMC: "测试",
PYM: "CS",
})
if err != nil {
t.Fatalf("QueryDrugs: %v", err)
}
if !result.Success || result.Code != "01" {
t.Fatalf("result = %#v", result)
}
if seenPath != "/osi/api/auto/ypmlcx/query" {
t.Fatalf("path = %q", seenPath)
}
if seenPayload["serviceId"] != ServiceIDDrugs {
t.Fatalf("serviceId = %v", seenPayload["serviceId"])
}
baseInfo := seenPayload["uploadinfo"].(map[string]any)["baseInfo"].(map[string]any)
if baseInfo["pageNo"] != float64(1) || baseInfo["ypmc"] != "测试" || baseInfo["pym"] != "CS" {
t.Fatalf("baseInfo = %#v", baseInfo)
}
if len(rows) != 1 || rows[0].YPMC != "测试药品" || rows[0].YPDW != "盒" || rows[0].YPGG != "10mg" || rows[0].JLDW != "片" {
t.Fatalf("rows = %#v", rows)
}
}
func TestQueryOrgsCallsCXJG00002(t *testing.T) {
var seenPath string
var seenPayload 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(&seenPayload); err != nil {
t.Fatalf("decode request: %v", err)
}
2026-07-13 20:02:19 +08:00
_, _ = w.Write([]byte(`{"code":"01","message":"操作成功","data":[{"organizCode":"441625001","organizName":"测试机构","organizType":"1","parentId":"441625","regionCode":"441625000000"}]}`))
}))
defer server.Close()
client := newTestJKDAClient(t, server.URL)
rows, result, err := client.QueryOrgs(context.Background(), OrgQuery{
OrganizCode: "441625001",
ParentID: "441625",
})
if err != nil {
t.Fatalf("QueryOrgs: %v", err)
}
if !result.Success || result.Code != "01" {
t.Fatalf("result = %#v", result)
}
if seenPath != "/osi/api/auto/cxjg/query" {
t.Fatalf("path = %q", seenPath)
}
if seenPayload["serviceId"] != ServiceIDOrgs {
t.Fatalf("serviceId = %v", seenPayload["serviceId"])
}
baseInfo := seenPayload["uploadinfo"].(map[string]any)["baseInfo"].(map[string]any)
if baseInfo["organizCode"] != "441625001" || baseInfo["parentId"] != "441625" {
t.Fatalf("baseInfo = %#v", baseInfo)
}
2026-07-13 20:02:19 +08:00
if len(rows) != 1 || rows[0].OrganizCode != "441625001" || rows[0].OrganizName != "测试机构" || rows[0].OrganizType != "1" || rows[0].ParentID != "441625" || rows[0].RegionCode != "441625000000" {
t.Fatalf("rows = %#v", rows)
}
}
2026-07-13 20:02:19 +08:00
func TestQueryOrgsSendsEmptyRequiredKeys(t *testing.T) {
var seenPayload map[string]any
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if err := json.NewDecoder(r.Body).Decode(&seenPayload); err != nil {
t.Fatalf("decode request: %v", err)
}
_, _ = w.Write([]byte(`{"code":"01","message":"操作成功","data":[]}`))
}))
defer server.Close()
client := newTestJKDAClient(t, server.URL)
if _, _, err := client.QueryOrgs(context.Background(), OrgQuery{}); err != nil {
t.Fatalf("QueryOrgs: %v", err)
}
baseInfo := seenPayload["uploadinfo"].(map[string]any)["baseInfo"].(map[string]any)
if _, ok := baseInfo["organizCode"]; !ok || baseInfo["organizCode"] != "" {
t.Fatalf("organizCode should be present and empty: %#v", baseInfo)
}
if _, ok := baseInfo["parentId"]; !ok || baseInfo["parentId"] != "" {
t.Fatalf("parentId should be present and empty: %#v", baseInfo)
}
}