diff --git a/x/feemarket/keeper/keeper.go b/x/feemarket/keeper/keeper.go index f2f6bc9..fb59bcc 100644 --- a/x/feemarket/keeper/keeper.go +++ b/x/feemarket/keeper/keeper.go @@ -45,12 +45,31 @@ func (k *Keeper) GetAuthority() string { // GetState returns the feemarket module's state. func (k *Keeper) GetState(ctx sdk.Context) (types.State, error) { - panic("TODO") + store := ctx.KVStore(k.storeKey) + + key := types.KeyState + bz := store.Get(key) + + state := types.State{} + if err := state.Unmarshal(bz); err != nil { + return types.State{}, err + } + + return state, nil } // SetState sets the feemarket module's state. func (k *Keeper) SetState(ctx sdk.Context, state types.State) error { - panic("TODO") + store := ctx.KVStore(k.storeKey) + + bz, err := state.Marshal() + if err != nil { + return err + } + + store.Set(types.KeyState, bz) + + return nil } // GetParams returns the feemarket module's parameters. diff --git a/x/feemarket/keeper/keeper_test.go b/x/feemarket/keeper/keeper_test.go index 7e7dafe..461bbba 100644 --- a/x/feemarket/keeper/keeper_test.go +++ b/x/feemarket/keeper/keeper_test.go @@ -53,3 +53,36 @@ func (s *KeeperTestSuite) SetupTest() { s.msgServer = keeper.NewMsgServer(*s.feemarketKeeper) s.queryServer = keeper.NewQueryServer(*s.feemarketKeeper) } + +func (s *KeeperTestSuite) TestState() { + s.Run("get state with no state set", func() { + gotState, err := s.feemarketKeeper.GetState(s.ctx) + s.Require().NoError(err) + + s.Require().Equal(types.State{}, gotState) + }) + + s.Run("set and get default eip1559 state", func() { + state := types.DefaultState() + + err := s.feemarketKeeper.SetState(s.ctx, state) + s.Require().NoError(err) + + gotState, err := s.feemarketKeeper.GetState(s.ctx) + s.Require().NoError(err) + + s.Require().EqualValues(state, gotState) + }) + + s.Run("set and get aimd eip1559 state", func() { + state := types.DefaultAIMDState() + + err := s.feemarketKeeper.SetState(s.ctx, state) + s.Require().NoError(err) + + gotState, err := s.feemarketKeeper.GetState(s.ctx) + s.Require().NoError(err) + + s.Require().Equal(state, gotState) + }) +}