ledgerPtr.TxFinished("txUuid", true) hash1, err = ledgerPtr.GetTempStateHash() Expect(err).To(BeNil()) Expect(hash0).ToNot(Equal(hash1)) Expect(ledgerPtr.RollbackTxBatch(2)).To(BeNil()) hash1, err = ledgerPtr.GetTempStateHash() Expect(err).To(BeNil()) Expect(hash0).To(Equal(hash1)) }) It("commits and validates a batch with a bad transaction result", func() { uuid := util.GenerateUUID() transactionResult := &protos.TransactionResult{Uuid: uuid, ErrorCode: 500, Error: "bad"} tx, err := protos.NewTransaction(protos.ChaincodeID{Path: "testUrl"}, uuid, "anyfunction", []string{"param1, param2"}) ledgerPtr.CommitTxBatch(1, []*protos.Transaction{tx}, []*protos.TransactionResult{transactionResult}, []byte("proof")) block, err := ledgerPtr.GetBlockByNumber(0) Expect(err).To(BeNil()) nonHashData := block.GetNonHashData() Expect(nonHashData).ToNot(BeNil()) }) }) Context("Ledger with committed state", func() { BeforeEach(func() { ledgerPtr = InitSpec() Expect(ledgerPtr.BeginTxBatch(1)).To(BeNil()) ledgerPtr.TxBegin("txUuid") Expect(ledgerPtr.SetState("chaincode1", "key1", []byte("value1"))).To(BeNil()) Expect(ledgerPtr.SetState("chaincode2", "key2", []byte("value2"))).To(BeNil())