github.com/s7techlab/cckit@v0.10.5/examples/cpaper/chaincode_test.go (about) 1 package cpaper_test 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/s7techlab/cckit/examples/cpaper" 8 testcc "github.com/s7techlab/cckit/testing" 9 expectcc "github.com/s7techlab/cckit/testing/expect" 10 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 ) 14 15 const ( 16 IssuerName = "SomeIssuer" 17 BuyerName = "SomeBuyer" 18 ) 19 20 func TestCommercialPaper(t *testing.T) { 21 RegisterFailHandler(Fail) 22 RunSpecs(t, "Commercial Paper Suite") 23 } 24 25 var _ = Describe(`CommercialPaper`, func() { 26 paperChaincode := testcc.NewMockStub(`commercial_paper`, cpaper.NewCC()) 27 28 BeforeSuite(func() { 29 expectcc.ResponseOk(paperChaincode.Init()) 30 }) 31 32 Describe("Commercial Paper lifecycle", func() { 33 34 It("Allow issuer to issue new commercial paper", func() { 35 //invoke chaincode method from authority actor 36 expectcc.ResponseOk(paperChaincode.Invoke(`issue`, &cpaper.IssueCommercialPaper{ 37 Issuer: IssuerName, 38 PaperNumber: "0001", 39 IssueDate: time.Now(), 40 MaturityDate: time.Now().Add(time.Hour * 24 * 30 * 6), // Six months later 41 FaceValue: 100000, 42 })) 43 }) 44 45 It("Allow issuer to get commercial paper", func() { 46 queryResponse := paperChaincode.Query("get", IssuerName, "0001") 47 paper := expectcc.PayloadIs(queryResponse, &cpaper.CommercialPaper{}).(cpaper.CommercialPaper) 48 49 Expect(paper.Issuer).To(Equal(IssuerName)) 50 Expect(paper.Owner).To(Equal(IssuerName)) 51 Expect(paper.State).To(Equal(cpaper.CommercialPaperIssued)) 52 Expect(paper.PaperNumber).To(Equal("0001")) 53 Expect(paper.FaceValue).To(BeNumerically("==", 100000)) 54 }) 55 56 It("Allow issuer to get a list of commercial papers", func() { 57 queryResponse := paperChaincode.Query("list") 58 papers := expectcc.PayloadIs(queryResponse, &[]cpaper.CommercialPaper{}).([]cpaper.CommercialPaper) 59 60 Expect(len(papers)).To(BeNumerically("==", 1)) 61 Expect(papers[0].Issuer).To(Equal(IssuerName)) 62 Expect(papers[0].Owner).To(Equal(IssuerName)) 63 Expect(papers[0].State).To(Equal(cpaper.CommercialPaperIssued)) 64 Expect(papers[0].PaperNumber).To(Equal("0001")) 65 Expect(papers[0].FaceValue).To(BeNumerically("==", 100000)) 66 }) 67 68 It("Allow buyer to buy commercial paper", func() { 69 //invoke chaincode method from authority actor 70 expectcc.ResponseOk(paperChaincode.Invoke(`buy`, &cpaper.BuyCommercialPaper{ 71 Issuer: IssuerName, 72 PaperNumber: "0001", 73 CurrentOwner: IssuerName, 74 NewOwner: BuyerName, 75 Price: 95000, 76 PurchaseDate: time.Now(), 77 })) 78 79 queryResponse := paperChaincode.Query("get", IssuerName, "0001") 80 paper := expectcc.PayloadIs(queryResponse, &cpaper.CommercialPaper{}).(cpaper.CommercialPaper) 81 Expect(paper.Owner).To(Equal(BuyerName)) 82 Expect(paper.State).To(Equal(cpaper.CommercialPaperTrading)) 83 }) 84 85 It("Allow buyer to redeem commercial paper", func() { 86 //invoke chaincode method from authority actor 87 expectcc.ResponseOk(paperChaincode.Invoke(`redeem`, &cpaper.RedeemCommercialPaper{ 88 Issuer: IssuerName, 89 PaperNumber: "0001", 90 RedeemingOwner: BuyerName, 91 RedeemDate: time.Now(), 92 })) 93 94 queryResponse := paperChaincode.Query("get", IssuerName, "0001") 95 paper := expectcc.PayloadIs(queryResponse, &cpaper.CommercialPaper{}).(cpaper.CommercialPaper) 96 Expect(paper.Owner).To(Equal(IssuerName)) 97 Expect(paper.State).To(Equal(cpaper.CommercialPaperRedeemed)) 98 }) 99 }) 100 })