github.com/decred/dcrlnd@v0.7.6/kvdb/readwrite_tx_test.go (about)

     1  package kvdb
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/btcsuite/btcwallet/walletdb"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func testTxManualCommit(t *testing.T, db walletdb.DB) {
    11  	tx, err := db.BeginReadWriteTx()
    12  	require.NoError(t, err)
    13  	require.NotNil(t, tx)
    14  
    15  	committed := false
    16  
    17  	tx.OnCommit(func() {
    18  		committed = true
    19  	})
    20  
    21  	apple, err := tx.CreateTopLevelBucket([]byte("apple"))
    22  	require.NoError(t, err)
    23  	require.NotNil(t, apple)
    24  	require.NoError(t, apple.Put([]byte("testKey"), []byte("testVal")))
    25  
    26  	banana, err := tx.CreateTopLevelBucket([]byte("banana"))
    27  	require.NoError(t, err)
    28  	require.NotNil(t, banana)
    29  	require.NoError(t, banana.Put([]byte("testKey"), []byte("testVal")))
    30  	require.NoError(t, tx.DeleteTopLevelBucket([]byte("banana")))
    31  
    32  	require.NoError(t, tx.Commit())
    33  	require.True(t, committed)
    34  }
    35  
    36  func testTxRollback(t *testing.T, db walletdb.DB) {
    37  	tx, err := db.BeginReadWriteTx()
    38  	require.Nil(t, err)
    39  	require.NotNil(t, tx)
    40  
    41  	apple, err := tx.CreateTopLevelBucket([]byte("apple"))
    42  	require.Nil(t, err)
    43  	require.NotNil(t, apple)
    44  
    45  	require.NoError(t, apple.Put([]byte("testKey"), []byte("testVal")))
    46  
    47  	require.NoError(t, tx.Rollback())
    48  	require.Error(t, walletdb.ErrTxClosed, tx.Commit())
    49  }