mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-12-25 07:45:18 +00:00
3c53e72220
- Add initial setup and empty genesis type for x/precisebank - Basic tests with mostly empty values, to be filled out with additional implementation
134 lines
2.8 KiB
Go
134 lines
2.8 KiB
Go
package precisebank_test
|
|
|
|
import (
|
|
"github.com/kava-labs/kava/x/precisebank"
|
|
"github.com/kava-labs/kava/x/precisebank/testutil"
|
|
"github.com/kava-labs/kava/x/precisebank/types"
|
|
)
|
|
|
|
type KeeperTestSuite struct {
|
|
testutil.Suite
|
|
}
|
|
|
|
func (suite *KeeperTestSuite) TestInitGenesis() {
|
|
tests := []struct {
|
|
name string
|
|
genesisState *types.GenesisState
|
|
shouldPanic bool
|
|
panicMsg string
|
|
}{
|
|
{
|
|
"default genesisState",
|
|
types.DefaultGenesisState(),
|
|
false,
|
|
"",
|
|
},
|
|
{
|
|
"empty genesisState",
|
|
&types.GenesisState{},
|
|
false,
|
|
"",
|
|
},
|
|
{
|
|
"TODO: invalid genesisState",
|
|
&types.GenesisState{},
|
|
false,
|
|
"",
|
|
},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
suite.Run(tc.name, func() {
|
|
if tc.shouldPanic {
|
|
suite.Require().Panics(func() {
|
|
precisebank.InitGenesis(suite.Ctx, suite.Keeper, suite.AccountKeeper, tc.genesisState)
|
|
}, tc.panicMsg)
|
|
|
|
return
|
|
}
|
|
|
|
suite.Require().NotPanics(func() {
|
|
precisebank.InitGenesis(suite.Ctx, suite.Keeper, suite.AccountKeeper, tc.genesisState)
|
|
})
|
|
|
|
// Ensure module account is created
|
|
moduleAcc := suite.AccountKeeper.GetModuleAccount(suite.Ctx, types.ModuleName)
|
|
suite.NotNil(moduleAcc, "module account should be created")
|
|
|
|
// TODO: Check module state once implemented
|
|
|
|
// - Verify balances
|
|
// - Ensure reserve account exists
|
|
// - Ensure reserve balance matches sum of all fractional balances
|
|
// - etc
|
|
})
|
|
}
|
|
}
|
|
|
|
func (suite *KeeperTestSuite) TestExportGenesis_Valid() {
|
|
// ExportGenesis(moduleState) should return a valid genesis state
|
|
|
|
tests := []struct {
|
|
name string
|
|
maleate func()
|
|
}{
|
|
{
|
|
"InitGenesis(DefaultGenesisState)",
|
|
func() {
|
|
precisebank.InitGenesis(
|
|
suite.Ctx,
|
|
suite.Keeper,
|
|
suite.AccountKeeper,
|
|
types.DefaultGenesisState(),
|
|
)
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
suite.Run(tc.name, func() {
|
|
tc.maleate()
|
|
|
|
genesisState := precisebank.ExportGenesis(suite.Ctx, suite.Keeper)
|
|
|
|
suite.Require().NoError(genesisState.Validate(), "exported genesis state should be valid")
|
|
})
|
|
}
|
|
}
|
|
|
|
func (suite *KeeperTestSuite) TestExportImportedState() {
|
|
// ExportGenesis(InitGenesis(genesisState)) == genesisState
|
|
|
|
tests := []struct {
|
|
name string
|
|
initGenesisState *types.GenesisState
|
|
}{
|
|
{
|
|
"InitGenesis(DefaultGenesisState)",
|
|
types.DefaultGenesisState(),
|
|
},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
suite.Run(tc.name, func() {
|
|
suite.Require().NotPanics(func() {
|
|
precisebank.InitGenesis(
|
|
suite.Ctx,
|
|
suite.Keeper,
|
|
suite.AccountKeeper,
|
|
tc.initGenesisState,
|
|
)
|
|
})
|
|
|
|
genesisState := precisebank.ExportGenesis(suite.Ctx, suite.Keeper)
|
|
suite.Require().NoError(genesisState.Validate(), "exported genesis state should be valid")
|
|
|
|
suite.Require().Equal(
|
|
tc.initGenesisState,
|
|
genesisState,
|
|
"exported genesis state should equal initial genesis state",
|
|
)
|
|
})
|
|
}
|
|
}
|