@@ -0,0 +1,61 @@
|
||||
package rchgutil
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"github.com/vmihailenco/msgpack/v5"
|
||||
)
|
||||
|
||||
func TestDecodeCachedPayTypes(t *testing.T) {
|
||||
want := []AllPayType{{
|
||||
Money: "100",
|
||||
Types: []mercPayTypeInfo{{Name: "支付宝", Type: "alipay"}},
|
||||
}}
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
data func(t *testing.T) []byte
|
||||
}{
|
||||
{
|
||||
name: "json",
|
||||
data: func(t *testing.T) []byte {
|
||||
t.Helper()
|
||||
data, err := json.Marshal(want)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return data
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "legacy msgpack",
|
||||
data: func(t *testing.T) []byte {
|
||||
t.Helper()
|
||||
data, err := msgpack.Marshal(want)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return data
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := decodeCachedPayTypes(string(tt.data(t)))
|
||||
if err != nil {
|
||||
t.Fatalf("decodeCachedPayTypes() error = %v", err)
|
||||
}
|
||||
if len(got) != 1 || got[0].Money != want[0].Money || len(got[0].Types) != 1 || got[0].Types[0] != want[0].Types[0] {
|
||||
t.Fatalf("decodeCachedPayTypes() = %#v, want %#v", got, want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDecodeCachedPayTypesRejectsInvalidData(t *testing.T) {
|
||||
if _, err := decodeCachedPayTypes("not-json-or-msgpack"); err == nil {
|
||||
t.Fatal("decodeCachedPayTypes() error = nil, want decode error")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user