55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package pay
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io"
|
|
"testing"
|
|
|
|
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
|
|
)
|
|
|
|
func TestCreateInvoiceRequestRequestBuyerFields(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
buyerType int64
|
|
buyerName string
|
|
buyerTaxNo string
|
|
}{
|
|
{name: "企业抬头", buyerType: 2, buyerName: "测试企业", buyerTaxNo: "91310100MA1K123456"},
|
|
{name: "个人抬头", buyerType: 1, buyerName: "张三"},
|
|
{name: "旧版个人抬头", buyerName: "张三"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
req := CreateInvoiceRequestRequest(InvoiceRequestParam{
|
|
BuyerType: tt.buyerType,
|
|
BuyerName: tt.buyerName,
|
|
BuyerTaxNo: tt.buyerTaxNo,
|
|
})
|
|
initErr := requests.InitParam(req)
|
|
if initErr != nil {
|
|
t.Fatal(initErr)
|
|
}
|
|
body, readErr := io.ReadAll(req.GetBodyReader())
|
|
if readErr != nil {
|
|
t.Fatal(readErr)
|
|
}
|
|
var payload map[string]any
|
|
decodeErr := json.Unmarshal(body, &payload)
|
|
if decodeErr != nil {
|
|
t.Fatal(decodeErr)
|
|
}
|
|
if payload["buyer_type"] != float64(tt.buyerType) || payload["buyer_name"] != tt.buyerName {
|
|
t.Fatalf("抬头字段不匹配:%s", body)
|
|
}
|
|
if tt.buyerTaxNo != "" && payload["buyer_tax_no"] != tt.buyerTaxNo {
|
|
t.Fatalf("购方税号未透传:%s", body)
|
|
}
|
|
if tt.buyerTaxNo == "" && payload["buyer_tax_no"] != nil {
|
|
t.Fatalf("个人抬头不应携带购方税号:%s", body)
|
|
}
|
|
})
|
|
}
|
|
}
|