-
Notifications
You must be signed in to change notification settings - Fork 4.1k
test: add test examples for prefixdb.go #22752
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 28 commits
6bf5fbd
687b732
32d9110
6097cc0
3ff753f
c825214
fa71970
3851378
a2955ef
ccf8c42
0cc52f2
e854dbc
c2d1698
18c263c
075ebbb
d152a6b
402149b
1c569e2
8917ceb
a51ebf6
42c75b6
86e7052
579aebc
39f67a7
8b6f1ca
b88d678
aa87378
d83d4f8
7026bc9
e2cae82
245dafa
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,49 @@ | ||
| package db_test | ||
|
|
||
| import ( | ||
| "testing" | ||
|
|
||
| "github.com/stretchr/testify/require" | ||
| "cosmossdk.io/store/db" | ||
| "cosmossdk.io/store/mock" | ||
| "go.uber.org/mock/gomock" | ||
| ) | ||
|
|
||
| func TestPrefixDB(t *testing.T) { | ||
| mockCtrl := gomock.NewController(t) | ||
| defer mockCtrl.Finish() | ||
|
|
||
| mockDB := mock.NewMockKVStoreWithBatch(mockCtrl) | ||
| prefix := []byte("test:") | ||
| pdb := db.NewPrefixDB(mockDB, prefix) | ||
|
|
||
| key := []byte("key1") | ||
| value := []byte("value1") | ||
| mockDB.EXPECT().Set(gomock.Eq(append(prefix, key...)), gomock.Eq(value)).Return(nil) | ||
|
|
||
| err := pdb.Set(key, value) | ||
| require.NoError(t, err) | ||
|
|
||
| mockDB.EXPECT().Get(gomock.Eq(append(prefix, key...))).Return(value, nil) | ||
|
|
||
| returnedValue, err := pdb.Get(key) | ||
| require.NoError(t, err) | ||
| require.Equal(t, value, returnedValue) | ||
|
|
||
|
Comment on lines
+20
to
+32
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Add test cases for error scenarios and edge cases The current test coverage for Set/Get operations could be enhanced by adding:
Example test cases to add: // Test error propagation
mockDB.EXPECT().Set(gomock.Any(), gomock.Any()).Return(errors.New("db error"))
err := pdb.Set(key, value)
require.Error(t, err)
// Test nil value
mockDB.EXPECT().Set(gomock.Any(), nil).Return(nil)
err = pdb.Set(key, nil)
require.NoError(t, err) |
||
| mockDB.EXPECT().Has(gomock.Eq(append(prefix, key...))).Return(true, nil) | ||
|
|
||
| has, err := pdb.Has(key) | ||
| require.NoError(t, err) | ||
| require.True(t, has) | ||
|
|
||
| mockDB.EXPECT().Delete(gomock.Eq(append(prefix, key...))).Return(nil) | ||
|
|
||
| err = pdb.Delete(key) | ||
| require.NoError(t, err) | ||
|
|
||
| mockDB.EXPECT().Has(gomock.Eq(append(prefix, key...))).Return(false, nil) | ||
|
|
||
| has, err = pdb.Has(key) | ||
| require.NoError(t, err) | ||
| require.False(t, has) | ||
| } | ||
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you make lint-fix
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, it was done with
go fmt