package db import ( "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" dbm "github.com/tendermint/tm-db" "github.com/tendermint/tendermint/types" ) func TestLast_FirstSignedHeaderHeight(t *testing.T) { dbStore := New(dbm.NewMemDB(), "TestLast_FirstSignedHeaderHeight") // Empty store height, err := dbStore.LastSignedHeaderHeight() require.NoError(t, err) assert.EqualValues(t, -1, height) height, err = dbStore.FirstSignedHeaderHeight() require.NoError(t, err) assert.EqualValues(t, -1, height) // 1 key err = dbStore.SaveSignedHeaderAndNextValidatorSet( &types.SignedHeader{Header: &types.Header{Height: 1}}, &types.ValidatorSet{}) require.NoError(t, err) height, err = dbStore.LastSignedHeaderHeight() require.NoError(t, err) assert.EqualValues(t, 1, height) height, err = dbStore.FirstSignedHeaderHeight() require.NoError(t, err) assert.EqualValues(t, 1, height) } func Test_SaveSignedHeaderAndNextValidatorSet(t *testing.T) { dbStore := New(dbm.NewMemDB(), "Test_SaveSignedHeaderAndNextValidatorSet") // Empty store h, err := dbStore.SignedHeader(1) require.Error(t, err) assert.Nil(t, h) valSet, err := dbStore.ValidatorSet(2) require.Error(t, err) assert.Nil(t, valSet) // 1 key err = dbStore.SaveSignedHeaderAndNextValidatorSet( &types.SignedHeader{Header: &types.Header{Height: 1}}, &types.ValidatorSet{}) require.NoError(t, err) h, err = dbStore.SignedHeader(1) require.NoError(t, err) assert.NotNil(t, h) valSet, err = dbStore.ValidatorSet(2) require.NoError(t, err) assert.NotNil(t, valSet) // Empty store err = dbStore.DeleteSignedHeaderAndNextValidatorSet(1) require.NoError(t, err) h, err = dbStore.SignedHeader(1) require.Error(t, err) assert.Nil(t, h) valSet, err = dbStore.ValidatorSet(2) require.Error(t, err) assert.Nil(t, valSet) } func Test_SignedHeaderAfter(t *testing.T) { dbStore := New(dbm.NewMemDB(), "Test_SignedHeaderAfter") assert.Panics(t, func() { dbStore.SignedHeaderAfter(0) dbStore.SignedHeaderAfter(100) }) err := dbStore.SaveSignedHeaderAndNextValidatorSet( &types.SignedHeader{Header: &types.Header{Height: 2}}, &types.ValidatorSet{}) require.NoError(t, err) h, err := dbStore.SignedHeaderAfter(1) require.NoError(t, err) if assert.NotNil(t, h) { assert.EqualValues(t, 2, h.Height) } }