6
0
gaore-common-sdk-go/services/pay/invoice_test.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)
}
})
}
}