45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
package orm
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
storetypes "cosmossdk.io/store/types"
|
|
"cosmossdk.io/x/group/errors"
|
|
|
|
"github.com/cosmos/cosmos-sdk/runtime"
|
|
"github.com/cosmos/cosmos-sdk/testutil"
|
|
)
|
|
|
|
func TestSequenceUniqueConstraint(t *testing.T) {
|
|
key := storetypes.NewKVStoreKey("test")
|
|
testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test"))
|
|
store := runtime.NewKVStoreService(key).OpenKVStore(testCtx.Ctx)
|
|
|
|
seq := NewSequence(0x1)
|
|
err := seq.InitVal(store, 2)
|
|
require.NoError(t, err)
|
|
err = seq.InitVal(store, 3)
|
|
require.True(t, errors.ErrORMUniqueConstraint.Is(err))
|
|
}
|
|
|
|
func TestSequenceIncrements(t *testing.T) {
|
|
key := storetypes.NewKVStoreKey("test")
|
|
testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test"))
|
|
store := runtime.NewKVStoreService(key).OpenKVStore(testCtx.Ctx)
|
|
|
|
seq := NewSequence(0x1)
|
|
var i uint64
|
|
for i = 1; i < 10; i++ {
|
|
autoID := seq.NextVal(store)
|
|
assert.Equal(t, i, autoID)
|
|
assert.Equal(t, i, seq.CurVal(store))
|
|
}
|
|
|
|
seq = NewSequence(0x1)
|
|
assert.Equal(t, uint64(10), seq.PeekNextVal(store))
|
|
assert.Equal(t, uint64(9), seq.CurVal(store))
|
|
}
|