-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
test: add test examples for prefixdb.go #22752
Changes from 30 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" | ||
|
||
"cosmossdk.io/store/db" | ||
"cosmossdk.io/store/mock" | ||
"github.com/stretchr/testify/require" | ||
"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) | ||
|
||
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) | ||
} | ||
Comment on lines
+33
to
+49
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. 💡 Codebase verification Missing critical test coverage for interface methods The test file lacks coverage for several required interface methods:
The current test file only covers 🔗 Analysis chainAdd tests for missing interface methods The test file is missing coverage for several critical interface methods:
Let's verify the required interface methods: Let me gather more information about the existing test coverage: 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Check interface methods that need test coverage
ast-grep --pattern 'type KVStore interface {
$$$
}'
# Check batch interface methods
ast-grep --pattern 'type KVStoreWithBatch interface {
$$$
}'
Length of output: 1780 Script: #!/bin/bash
# Check existing test coverage for Iterator and ReverseIterator
rg -A 5 "func Test.*Iterator" store/db/prefixdb_test.go
# Check for batch operations tests
rg -A 5 "func Test.*Batch" store/db/prefixdb_test.go
# Check BasicKVStore interface to understand all required methods
ast-grep --pattern 'type BasicKVStore interface {
$$$
}'
Length of output: 832 |
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.
🛠️ 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: