11package mapping_test
22
33import (
4+ "reflect"
45"strconv"
56"strings"
67"testing"
78"time"
89
9- "github.com/golang/protobuf/proto"
1010"github.com/golang/protobuf/ptypes"
1111. "github.com/onsi/ginkgo"
1212. "github.com/onsi/gomega"
13+ "google.golang.org/protobuf/proto"
1314
1415identitytestdata "github.com/hyperledger-labs/cckit/identity/testdata"
1516"github.com/hyperledger-labs/cckit/serialize"
@@ -27,16 +28,15 @@ func TestState(t *testing.T) {
2728RunSpecs (t , "State suite" )
2829}
2930
30- var (
31- compositeIDCC , complexIDCC , sliceIDCC , indexesCC , configCC * testcc.MockStub
31+ var _ = Describe (`State mapping in chaincode with default serializer` , func () {
3232
33- Owner = identitytestdata .Certificates [0 ].MustIdentity (`SOME_MSP` )
34- )
35- var _ = Describe (`State mapping in chaincode` , func () {
36-
37- BeforeSuite (func () {
33+ var (
34+ compositeIDCC , complexIDCC , sliceIDCC , indexesCC , configCC * testcc.MockStub
35+ Owner = identitytestdata .Certificates [0 ].MustIdentity (`SOME_MSP` )
36+ )
3837
39- compositeIDCC = testcc .NewMockStub (`proto` , testdata .NewCompositeIdCC ())
38+ Describe (`init chaincodes` , func () {
39+ compositeIDCC = testcc .NewMockStub (`proto` , testdata .NewCompositeIdCC (serialize .DefaultSerializer ))
4040compositeIDCC .From (Owner ).Init ()
4141
4242complexIDCC = testcc .NewMockStub (`complex_id` , testdata .NewComplexIdCC ())
@@ -60,7 +60,8 @@ var _ = Describe(`State mapping in chaincode`, func() {
6060It ("Allow to get mapping data by namespace" , func () {
6161mapping , err := testdata .EntityWithCompositeIdStateMapping .GetByNamespace (testdata .EntityCompositeIdNamespace )
6262Expect (err ).NotTo (HaveOccurred ())
63- Expect (mapping .Schema ()).To (BeEquivalentTo (& schema.EntityWithCompositeId {}))
63+ Expect (reflect .TypeOf (mapping .Schema ()).String ()).To (
64+ Equal (reflect .TypeOf (& schema.EntityWithCompositeId {}).String ()))
6465
6566key , err := mapping .PrimaryKey (& schema.EntityWithCompositeId {
6667IdFirstPart : create1 .IdFirstPart ,
@@ -76,33 +77,33 @@ var _ = Describe(`State mapping in chaincode`, func() {
7677
7778It ("Allow to add data to chaincode state" , func (done Done ) {
7879events , closer := compositeIDCC .EventSubscription ()
79- expectcc .ResponseOk (compositeIDCC .Invoke (`create` , create1 ))
80+ expectcc .ResponseOk (compositeIDCC .Invoke (testdata . CreateFunc , create1 ))
8081
8182expectcc .EventStringerEqual (<- events ,
8283`CreateEntityWithCompositeId` , create1 , compositeIDCC .Serializer )
8384
84- expectcc .ResponseOk (compositeIDCC .Invoke (`create` , create2 ))
85- expectcc .ResponseOk (compositeIDCC .Invoke (`create` , create3 ))
85+ expectcc .ResponseOk (compositeIDCC .Invoke (testdata . CreateFunc , create2 ))
86+ expectcc .ResponseOk (compositeIDCC .Invoke (testdata . CreateFunc , create3 ))
8687
8788_ = closer ()
8889close (done )
8990})
9091
9192It ("Disallow to insert entries with same primary key" , func () {
92- expectcc .ResponseError (compositeIDCC .Invoke (`create` , create1 ), state .ErrKeyAlreadyExists )
93+ expectcc .ResponseError (compositeIDCC .Invoke (testdata . CreateFunc , create1 ), state .ErrKeyAlreadyExists )
9394})
9495
9596It ("Allow to get entry list" , func () {
9697// default serializer should serialize proto to / from binary representation
97- entities := expectcc .PayloadIs (compositeIDCC .Query (`list` ),
98+ entities := expectcc .PayloadIs (compositeIDCC .Query (testdata . ListFunc ),
9899& schema.EntityWithCompositeIdList {}, serialize .DefaultSerializer ).(* schema.EntityWithCompositeIdList )
99100Expect (len (entities .Items )).To (Equal (3 ))
100101Expect (entities .Items [0 ].Name ).To (Equal (create1 .Name ))
101102Expect (entities .Items [0 ].Value ).To (BeNumerically ("==" , create1 .Value ))
102103})
103104
104105It ("Allow to get entry raw protobuf" , func () {
105- dataFromCC := compositeIDCC .Query (`get` ,
106+ dataFromCC := compositeIDCC .Query (testdata . GetFunc ,
106107& schema.EntityCompositeId {
107108IdFirstPart : create1 .IdFirstPart ,
108109IdSecondPart : create1 .IdSecondPart ,
@@ -122,7 +123,7 @@ var _ = Describe(`State mapping in chaincode`, func() {
122123})
123124
124125It ("Allow update data in chaincode state" , func () {
125- expectcc .ResponseOk (compositeIDCC .Invoke (`update` , & schema.UpdateEntityWithCompositeId {
126+ expectcc .ResponseOk (compositeIDCC .Invoke (testdata . UpdateFunc , & schema.UpdateEntityWithCompositeId {
126127IdFirstPart : create1 .IdFirstPart ,
127128IdSecondPart : create1 .IdSecondPart ,
128129IdThirdPart : create1 .IdThirdPart ,
@@ -131,7 +132,7 @@ var _ = Describe(`State mapping in chaincode`, func() {
131132}))
132133
133134entityFromCC := expectcc .PayloadIs (
134- compositeIDCC .Query (`get` , & schema.EntityCompositeId {
135+ compositeIDCC .Query (testdata . GetFunc , & schema.EntityCompositeId {
135136IdFirstPart : create1 .IdFirstPart ,
136137IdSecondPart : create1 .IdSecondPart ,
137138IdThirdPart : create1 .IdThirdPart ,
@@ -150,22 +151,21 @@ var _ = Describe(`State mapping in chaincode`, func() {
150151IdThirdPart : create1 .IdThirdPart ,
151152}
152153
153- expectcc .ResponseOk (compositeIDCC .Invoke (`delete` , toDelete ))
154+ expectcc .ResponseOk (compositeIDCC .Invoke (testdata . DeleteFunc , toDelete ))
154155ee := expectcc .PayloadIs (
155- compositeIDCC .Invoke (`list` ),
156+ compositeIDCC .Invoke (testdata . ListFunc ),
156157& schema.EntityWithCompositeIdList {}, compositeIDCC .Serializer ).(* schema.EntityWithCompositeIdList )
157158
158159Expect (len (ee .Items )).To (Equal (2 ))
159- expectcc .ResponseError (compositeIDCC .Invoke (`get` , toDelete ), state .ErrKeyNotFound )
160+ expectcc .ResponseError (compositeIDCC .Invoke (testdata . GetFunc , toDelete ), state .ErrKeyNotFound )
160161})
161162
162163It ("Allow to insert entry once more time" , func () {
163- expectcc .ResponseOk (compositeIDCC .Invoke (`create` , create1 ))
164+ expectcc .ResponseOk (compositeIDCC .Invoke (testdata . CreateFunc , create1 ))
164165})
165166})
166167
167168Describe (`Entity with complex id` , func () {
168-
169169ent1 := testdata .CreateEntityWithComplextId [0 ]
170170
171171It ("Allow to add data to chaincode state" , func () {
@@ -391,3 +391,30 @@ var _ = Describe(`State mapping in chaincode`, func() {
391391
392392})
393393})
394+
395+ var _ = Describe (`State mapping in chaincode with JSON serializer` , func () {
396+
397+ var (
398+ compositeIDCC * testcc.MockStub
399+ Owner = identitytestdata .Certificates [0 ].MustIdentity (`SOME_MSP` )
400+ )
401+
402+ Describe ("init chaincode" , func () {
403+ compositeIDCC = testcc .NewMockStub (`proto` , testdata .NewCompositeIdCC (serialize .PreferJSONSerializer ))
404+ compositeIDCC .Serializer = serialize .PreferJSONSerializer // need to set for correct invoking
405+ compositeIDCC .From (Owner ).Init ()
406+ })
407+
408+ It ("Allow to add data to chaincode state" , func () {
409+ expectcc .ResponseOk (compositeIDCC .Invoke (testdata .CreateFunc , testdata .CreateEntityWithCompositeId [0 ]))
410+ })
411+
412+ It ("Allow to get entry list" , func () {
413+ res := compositeIDCC .Query (testdata .ListFunc )
414+ Expect (string (res .Payload )[0 :1 ]).To (Equal (`{` )) // json serialized
415+ entities := expectcc .JSONPayloadIs (res , & schema.EntityWithCompositeIdList {}).(* schema.EntityWithCompositeIdList )
416+ Expect (len (entities .Items )).To (Equal (1 ))
417+ Expect (entities .Items [0 ].Name ).To (Equal (testdata .CreateEntityWithCompositeId [0 ].Name ))
418+ Expect (entities .Items [0 ].Value ).To (BeNumerically ("==" , testdata .CreateEntityWithCompositeId [0 ].Value ))
419+ })
420+ })
0 commit comments