github.com/hyperledger-gerrit-archive/fabric-ca@v2.0.0-alpha.0.20190916143245-4cd4192f0366+incompatible/lib/server/db/tx_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package db_test 8 9 import ( 10 "errors" 11 "testing" 12 13 "github.com/hyperledger/fabric-ca/lib/server/db" 14 "github.com/hyperledger/fabric-ca/lib/server/db/mocks" 15 "github.com/jmoiron/sqlx" 16 . "github.com/onsi/gomega" 17 ) 18 19 func TestTX(t *testing.T) { 20 gt := NewGomegaWithT(t) 21 22 mockDB := &mocks.SqlxDB{} 23 fabDB := db.New(mockDB, "", nil) 24 mockTX := &mocks.SqlxTx{} 25 fabTx := &db.TX{ 26 TX: mockTX, 27 Record: fabDB, 28 } 29 gt.Expect(fabTx).NotTo(BeNil()) 30 31 // Select 32 mockTX.SelectReturns(nil) 33 err := fabTx.Select("", nil, "") 34 gt.Expect(err).NotTo(HaveOccurred()) 35 36 mockTX.SelectReturns(errors.New("Select Error")) 37 err = fabTx.Select("", nil, "") 38 gt.Expect(err).To(HaveOccurred()) 39 gt.Expect(err.Error()).To(Equal("Select Error")) 40 41 // Exec 42 mockResult := &mocks.Result{} 43 mockResult.On("RowsAffected").Return(int64(2), nil) 44 mockTX.ExecReturns(mockResult, nil) 45 res, err := fabTx.Exec("", "") 46 gt.Expect(err).NotTo(HaveOccurred()) 47 48 rows, err := res.RowsAffected() 49 gt.Expect(err).NotTo(HaveOccurred()) 50 gt.Expect(rows).To(Equal(int64(2))) 51 52 mockTX.ExecReturns(nil, errors.New("Exec Error")) 53 res, err = fabTx.Exec("", "") 54 gt.Expect(err).To(HaveOccurred()) 55 gt.Expect(err.Error()).To(Equal("Exec Error")) 56 57 // Get 58 mockTX.GetReturns(nil) 59 err = fabTx.Get("", nil, "") 60 gt.Expect(err).NotTo(HaveOccurred()) 61 62 mockTX.GetReturns(errors.New("Get Error")) 63 err = fabTx.Get("", nil, "") 64 gt.Expect(err.Error()).To(Equal("Get Error")) 65 66 // Queryx 67 mockTX.QueryxReturns(&sqlx.Rows{}, nil) 68 r, err := fabTx.Queryx("", "") 69 gt.Expect(err).NotTo(HaveOccurred()) 70 gt.Expect(r).NotTo(BeNil()) 71 72 mockTX.QueryxReturns(nil, errors.New("Queryx Error")) 73 _, err = fabTx.Queryx("", "") 74 gt.Expect(err.Error()).To(Equal("Queryx Error")) 75 76 // Rebind 77 mockTX.RebindReturns("Select * from") 78 query := fabTx.Rebind("") 79 gt.Expect(query).To(Equal("Select * from")) 80 81 // Commit 82 mockTX.CommitReturns(nil) 83 err = fabTx.Commit("") 84 gt.Expect(err).NotTo(HaveOccurred()) 85 86 mockTX.CommitReturns(errors.New("commit error")) 87 err = fabTx.Commit("") 88 gt.Expect(err).To(HaveOccurred()) 89 gt.Expect(err.Error()).To(Equal("commit error")) 90 91 // Rollback 92 mockTX.RollbackReturns(nil) 93 err = fabTx.Rollback("") 94 gt.Expect(err).NotTo(HaveOccurred()) 95 96 mockTX.RollbackReturns(errors.New("rollback error")) 97 err = fabTx.Rollback("") 98 gt.Expect(err).To(HaveOccurred()) 99 gt.Expect(err.Error()).To(Equal("rollback error")) 100 }