mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-26 03:25:09 +00:00
125 lines
4.2 KiB
Go
125 lines
4.2 KiB
Go
/*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package commercialpaper
|
|
|
|
import (
|
|
"testing"
|
|
|
|
ledgerapi "github.com/hyperledger/fabric-samples/commercial-paper/organization/digibank/contract-go/ledger-api"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestString(t *testing.T) {
|
|
assert.Equal(t, "ISSUED", issued.String(), "should return string for issued")
|
|
assert.Equal(t, "TRADING", trading.String(), "should return string for issued")
|
|
assert.Equal(t, "REDEEMED", redeemed.String(), "should return string for issued")
|
|
assert.Equal(t, "UNKNOWN", commercialPaperState(redeemed+1).String(), "should return unknown when not one of constants")
|
|
}
|
|
|
|
func TestCreateCommercialPaperKey(t *testing.T) {
|
|
assert.Equal(t, ledgerapi.MakeKey("someissuer", "somepaper"), CreateCommercialPaperKey("someissuer", "somepaper"), "should return key comprised of passed values")
|
|
}
|
|
|
|
func TestGetState(t *testing.T) {
|
|
cp := new(CommercialPaper)
|
|
cp.state = "ISSUED"
|
|
|
|
assert.Equal(t, "ISSUED", cp.GetState(), "should return set state")
|
|
}
|
|
|
|
func TestSetIssued(t *testing.T) {
|
|
cp := new(CommercialPaper)
|
|
cp.SetIssued()
|
|
assert.Equal(t, "ISSUED", cp.state, "should set state to trading")
|
|
}
|
|
|
|
func TestSetTrading(t *testing.T) {
|
|
cp := new(CommercialPaper)
|
|
cp.SetTrading()
|
|
assert.Equal(t, "TRADING", cp.state, "should set state to trading")
|
|
}
|
|
|
|
func TestSetRedeemed(t *testing.T) {
|
|
cp := new(CommercialPaper)
|
|
cp.SetRedeemed()
|
|
assert.Equal(t, "REDEEMED", cp.state, "should set state to trading")
|
|
}
|
|
|
|
func TestIsIssued(t *testing.T) {
|
|
cp := new(CommercialPaper)
|
|
|
|
cp.SetIssued()
|
|
assert.True(t, cp.IsIssued(), "should be true when status set to issued")
|
|
|
|
cp.SetTrading()
|
|
assert.False(t, cp.IsIssued(), "should be false when status not set to issued")
|
|
}
|
|
|
|
func TestIsTrading(t *testing.T) {
|
|
cp := new(CommercialPaper)
|
|
|
|
cp.SetTrading()
|
|
assert.True(t, cp.IsTrading(), "should be true when status set to trading")
|
|
|
|
cp.SetRedeemed()
|
|
assert.False(t, cp.IsTrading(), "should be false when status not set to trading")
|
|
}
|
|
|
|
func TestIsRedeemed(t *testing.T) {
|
|
cp := new(CommercialPaper)
|
|
|
|
cp.SetRedeemed()
|
|
assert.True(t, cp.IsRedeemed(), "should be true when status set to redeemed")
|
|
|
|
cp.SetIssued()
|
|
assert.False(t, cp.IsRedeemed(), "should be false when status not set to redeemed")
|
|
}
|
|
|
|
func TestGetSplitKey(t *testing.T) {
|
|
cp := new(CommercialPaper)
|
|
cp.PaperNumber = "somepaper"
|
|
cp.Issuer = "someissuer"
|
|
|
|
assert.Equal(t, []string{"someissuer", "somepaper"}, cp.GetSplitKey(), "should return issuer and paper number as split key")
|
|
}
|
|
|
|
func TestSerialize(t *testing.T) {
|
|
cp := new(CommercialPaper)
|
|
cp.PaperNumber = "somepaper"
|
|
cp.Issuer = "someissuer"
|
|
cp.IssueDateTime = "sometime"
|
|
cp.FaceValue = 1000
|
|
cp.MaturityDateTime = "somelatertime"
|
|
cp.Owner = "someowner"
|
|
cp.state = "TRADING"
|
|
|
|
bytes, err := cp.Serialize()
|
|
assert.Nil(t, err, "should not error on serialize")
|
|
assert.Equal(t, `{"paperNumber":"somepaper","issuer":"someissuer","issueDateTime":"sometime","faceValue":1000,"maturityDateTime":"somelatertime","owner":"someowner","state":"TRADING"}`, string(bytes), "should return JSON formatted value")
|
|
}
|
|
|
|
func TestDeserialize(t *testing.T) {
|
|
var cp *CommercialPaper
|
|
var err error
|
|
|
|
goodJSON := `{"paperNumber":"somepaper","issuer":"someissuer","issueDateTime":"sometime","faceValue":1000,"maturityDateTime":"somelatertime","owner":"someowner","state":"TRADING"}`
|
|
expectedCp := new(CommercialPaper)
|
|
expectedCp.PaperNumber = "somepaper"
|
|
expectedCp.Issuer = "someissuer"
|
|
expectedCp.IssueDateTime = "sometime"
|
|
expectedCp.FaceValue = 1000
|
|
expectedCp.MaturityDateTime = "somelatertime"
|
|
expectedCp.Owner = "someowner"
|
|
expectedCp.state = "TRADING"
|
|
cp = new(CommercialPaper)
|
|
err = Deserialize([]byte(goodJSON), cp)
|
|
assert.Nil(t, err, "should not return error for deserialize")
|
|
assert.Equal(t, expectedCp, cp, "should create expected commercial paper")
|
|
|
|
badJSON := `{"paperNumber":"somepaper","issuer":"someissuer","issueDateTime":"sometime","faceValue":"NaN","maturityDateTime":"somelatertime","owner":"someowner","state":"TRADING"}`
|
|
cp = new(CommercialPaper)
|
|
err = Deserialize([]byte(badJSON), cp)
|
|
assert.EqualError(t, err, "Error deserializing commercial paper. json: cannot unmarshal string into Go struct field jsonCommercialPaper.faceValue of type int", "should return error for bad data")
|
|
}
|