package client_test import ( "os" "testing" "time" "github.com/depools/dc4bc/client" "github.com/stretchr/testify/require" ) func TestLevelDBState_SaveOffset(t *testing.T) { var ( req = require.New(t) dbPath = "/tmp/dc4bc_test_SaveOffset" ) defer os.RemoveAll(dbPath) stg, err := client.NewLevelDBState(dbPath) req.NoError(err) var offset uint64 = 1 err = stg.SaveOffset(offset) req.NoError(err) loadedOffset, err := stg.LoadOffset() req.NoError(err) req.Equal(offset, loadedOffset) } func TestLevelDBState_PutOperation(t *testing.T) { var ( req = require.New(t) dbPath = "/tmp/dc4bc_test_PutOperation" ) defer os.RemoveAll(dbPath) stg, err := client.NewLevelDBState(dbPath) req.NoError(err) operation := &client.Operation{ ID: "operation_id", Type: client.DKGCommits, Payload: []byte("operation_payload"), Result: []byte("operation_result"), CreatedAt: time.Now(), } err = stg.PutOperation(operation) req.NoError(err) loadedOperation, err := stg.GetOperationByID(operation.ID) req.NoError(err) req.Equal(operation.ID, loadedOperation.ID) req.Equal(operation.Type, loadedOperation.Type) req.Equal(operation.Payload, loadedOperation.Payload) req.Equal(operation.Result, loadedOperation.Result) err = stg.PutOperation(operation) req.Error(err) } func TestLevelDBState_GetOperations(t *testing.T) { var ( req = require.New(t) dbPath = "/tmp/dc4bc_test_PutOperation" ) defer os.RemoveAll(dbPath) stg, err := client.NewLevelDBState(dbPath) req.NoError(err) operation := &client.Operation{ ID: "operation_1", Type: client.DKGCommits, Payload: []byte("operation_payload"), Result: []byte("operation_result"), CreatedAt: time.Now(), } err = stg.PutOperation(operation) req.NoError(err) operation.ID = "operation_2" err = stg.PutOperation(operation) req.NoError(err) operations, err := stg.GetOperations() req.NoError(err) req.Len(operations, 2) } func TestLevelDBState_DeleteOperation(t *testing.T) { var ( req = require.New(t) dbPath = "/tmp/dc4bc_test_DeleteOperation" ) defer os.RemoveAll(dbPath) stg, err := client.NewLevelDBState(dbPath) req.NoError(err) operation := &client.Operation{ ID: "operation_id", Type: client.DKGCommits, Payload: []byte("operation_payload"), Result: []byte("operation_result"), CreatedAt: time.Now(), } err = stg.PutOperation(operation) req.NoError(err) _, err = stg.GetOperationByID(operation.ID) req.NoError(err) err = stg.DeleteOperation(operation.ID) req.NoError(err) _, err = stg.GetOperationByID(operation.ID) req.Error(err) }