cosmos-sdk/store/v2/root/store_mock_test.go
Alexander Peters 9a92843c21
store/v2: remove auto migration and fix restore cmd (#23568)
Co-authored-by: mmsqe <mavis@crypto.com>
Co-authored-by: Marko <marko@baricevic.me>
Co-authored-by: marbar3778 <marbar3778@yahoo.com>
2025-01-31 17:34:44 +00:00

91 lines
2.6 KiB
Go

package root
import (
"errors"
"testing"
"github.com/stretchr/testify/require"
"go.uber.org/mock/gomock"
corestore "cosmossdk.io/core/store"
coretesting "cosmossdk.io/core/testing"
"cosmossdk.io/store/v2"
"cosmossdk.io/store/v2/metrics"
"cosmossdk.io/store/v2/mock"
"cosmossdk.io/store/v2/pruning"
)
func newTestRootStore(sc store.Committer) *Store {
noopLog := coretesting.NewNopLogger()
pm := pruning.NewManager(sc.(store.Pruner), nil)
return &Store{
logger: noopLog,
telemetry: metrics.Metrics{},
stateCommitment: sc,
pruningManager: pm,
}
}
func TestGetLatestState(t *testing.T) {
ctrl := gomock.NewController(t)
sc := mock.NewMockStateCommitter(ctrl)
rs := newTestRootStore(sc)
// Get the latest version
sc.EXPECT().GetLatestVersion().Return(uint64(0), errors.New("error"))
_, err := rs.GetLatestVersion()
require.Error(t, err)
sc.EXPECT().GetLatestVersion().Return(uint64(1), nil)
v, err := rs.GetLatestVersion()
require.NoError(t, err)
require.Equal(t, uint64(1), v)
}
func TestQuery(t *testing.T) {
ctrl := gomock.NewController(t)
sc := mock.NewMockStateCommitter(ctrl)
rs := newTestRootStore(sc)
// Query without Proof
sc.EXPECT().Get(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil, errors.New("error"))
_, err := rs.Query(nil, 0, nil, false)
require.Error(t, err)
sc.EXPECT().Get(gomock.Any(), gomock.Any(), gomock.Any()).Return([]byte("value"), nil)
v, err := rs.Query(nil, 0, nil, false)
require.NoError(t, err)
require.Equal(t, []byte("value"), v.Value)
// Query with Proof
sc.EXPECT().Get(gomock.Any(), gomock.Any(), gomock.Any()).Return([]byte("value"), nil)
sc.EXPECT().GetProof(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil, errors.New("error"))
_, err = rs.Query(nil, 0, nil, true)
require.Error(t, err)
}
func TestLoadVersion(t *testing.T) {
ctrl := gomock.NewController(t)
sc := mock.NewMockStateCommitter(ctrl)
rs := newTestRootStore(sc)
// LoadLatestVersion
sc.EXPECT().GetLatestVersion().Return(uint64(0), errors.New("error"))
err := rs.LoadLatestVersion()
require.Error(t, err)
sc.EXPECT().GetLatestVersion().Return(uint64(1), nil)
sc.EXPECT().LoadVersion(uint64(1)).Return(errors.New("error"))
err = rs.LoadLatestVersion()
require.Error(t, err)
// LoadVersion
sc.EXPECT().LoadVersion(gomock.Any()).Return(nil)
sc.EXPECT().GetCommitInfo(uint64(2)).Return(nil, errors.New("error"))
err = rs.LoadVersion(uint64(2))
require.Error(t, err)
// LoadVersionUpgrade
v := &corestore.StoreUpgrades{}
sc.EXPECT().LoadVersionAndUpgrade(uint64(2), v).Return(errors.New("error"))
err = rs.LoadVersionAndUpgrade(uint64(2), v)
require.Error(t, err)
}