github.com/KiraCore/sekai@v0.3.43/x/basket/keeper/basket_action_history_test.go (about) 1 package keeper_test 2 3 import ( 4 "time" 5 6 "github.com/KiraCore/sekai/x/basket/types" 7 sdk "github.com/cosmos/cosmos-sdk/types" 8 ) 9 10 func (suite *KeeperTestSuite) TestMintActions() { 11 suite.SetupTest() 12 13 now := time.Now().UTC() 14 suite.ctx = suite.ctx.WithBlockTime(now.Add(time.Hour)) 15 16 baskets := []types.Basket{ 17 { 18 Id: 1, 19 LimitsPeriod: 1800, 20 }, 21 { 22 Id: 2, 23 LimitsPeriod: 7200, 24 }, 25 } 26 27 for _, basket := range baskets { 28 suite.app.BasketKeeper.SetBasket(suite.ctx, basket) 29 } 30 31 actions := []types.AmountAtTime{ 32 { 33 BasketId: 1, 34 Time: uint64(now.Unix()), 35 Amount: sdk.NewInt(1000), 36 }, 37 { 38 BasketId: 1, 39 Time: uint64(now.Add(time.Second).Unix()), 40 Amount: sdk.NewInt(10000), 41 }, 42 { 43 BasketId: 2, 44 Time: uint64(now.Unix()), 45 Amount: sdk.NewInt(1000), 46 }, 47 { 48 BasketId: 2, 49 Time: uint64(now.Add(time.Hour).Unix()), 50 Amount: sdk.NewInt(10000), 51 }, 52 } 53 54 for _, action := range actions { 55 suite.app.BasketKeeper.SetMintAmount(suite.ctx, time.Unix(int64(action.Time), 0), action.BasketId, action.Amount) 56 } 57 58 for _, action := range actions { 59 amount := suite.app.BasketKeeper.GetMintAmount(suite.ctx, action.BasketId, time.Unix(int64(action.Time), 0)) 60 suite.Require().Equal(amount, action.Amount) 61 } 62 63 allAmounts := suite.app.BasketKeeper.GetAllMintAmounts(suite.ctx) 64 suite.Require().Len(allAmounts, len(actions)) 65 66 historicalAmount := suite.app.BasketKeeper.GetLimitsPeriodMintAmount(suite.ctx, 1, 1800) 67 suite.Require().Equal(historicalAmount, sdk.NewInt(0)) 68 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodMintAmount(suite.ctx, 2, 1800) 69 suite.Require().Equal(historicalAmount, sdk.NewInt(10000)) 70 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodMintAmount(suite.ctx, 2, 7200) 71 suite.Require().Equal(historicalAmount, sdk.NewInt(11000)) 72 73 suite.app.BasketKeeper.RegisterMintAction(suite.ctx, 1, sdk.NewInt(1000)) 74 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodMintAmount(suite.ctx, 1, 1800) 75 suite.Require().Equal(historicalAmount, sdk.NewInt(1000)) 76 77 suite.app.BasketKeeper.ClearOldMintAmounts(suite.ctx, 1, 1800) 78 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodMintAmount(suite.ctx, 1, 1800000) 79 suite.Require().Equal(historicalAmount, sdk.NewInt(1000)) 80 } 81 82 func (suite *KeeperTestSuite) TestBurnActions() { 83 suite.SetupTest() 84 85 now := time.Now().UTC() 86 suite.ctx = suite.ctx.WithBlockTime(now.Add(time.Hour)) 87 88 baskets := []types.Basket{ 89 { 90 Id: 1, 91 LimitsPeriod: 1800, 92 }, 93 { 94 Id: 2, 95 LimitsPeriod: 7200, 96 }, 97 } 98 99 for _, basket := range baskets { 100 suite.app.BasketKeeper.SetBasket(suite.ctx, basket) 101 } 102 103 actions := []types.AmountAtTime{ 104 { 105 BasketId: 1, 106 Time: uint64(now.Unix()), 107 Amount: sdk.NewInt(1000), 108 }, 109 { 110 BasketId: 1, 111 Time: uint64(now.Add(time.Second).Unix()), 112 Amount: sdk.NewInt(10000), 113 }, 114 { 115 BasketId: 2, 116 Time: uint64(now.Unix()), 117 Amount: sdk.NewInt(1000), 118 }, 119 { 120 BasketId: 2, 121 Time: uint64(now.Add(time.Hour).Unix()), 122 Amount: sdk.NewInt(10000), 123 }, 124 } 125 126 for _, action := range actions { 127 suite.app.BasketKeeper.SetBurnAmount(suite.ctx, time.Unix(int64(action.Time), 0), action.BasketId, action.Amount) 128 } 129 130 for _, action := range actions { 131 amount := suite.app.BasketKeeper.GetBurnAmount(suite.ctx, action.BasketId, time.Unix(int64(action.Time), 0)) 132 suite.Require().Equal(amount, action.Amount) 133 } 134 135 allAmounts := suite.app.BasketKeeper.GetAllBurnAmounts(suite.ctx) 136 suite.Require().Len(allAmounts, len(actions)) 137 138 historicalAmount := suite.app.BasketKeeper.GetLimitsPeriodBurnAmount(suite.ctx, 1, 1800) 139 suite.Require().Equal(historicalAmount, sdk.NewInt(0)) 140 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodBurnAmount(suite.ctx, 2, 1800) 141 suite.Require().Equal(historicalAmount, sdk.NewInt(10000)) 142 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodBurnAmount(suite.ctx, 2, 7200) 143 suite.Require().Equal(historicalAmount, sdk.NewInt(11000)) 144 145 suite.app.BasketKeeper.RegisterBurnAction(suite.ctx, 1, sdk.NewInt(1000)) 146 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodBurnAmount(suite.ctx, 1, 1800) 147 suite.Require().Equal(historicalAmount, sdk.NewInt(1000)) 148 149 suite.app.BasketKeeper.ClearOldBurnAmounts(suite.ctx, 1, 1800) 150 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodBurnAmount(suite.ctx, 1, 1800000) 151 suite.Require().Equal(historicalAmount, sdk.NewInt(1000)) 152 } 153 154 func (suite *KeeperTestSuite) TestSwapActions() { 155 suite.SetupTest() 156 157 now := time.Now().UTC() 158 suite.ctx = suite.ctx.WithBlockTime(now.Add(time.Hour)) 159 160 baskets := []types.Basket{ 161 { 162 Id: 1, 163 LimitsPeriod: 1800, 164 }, 165 { 166 Id: 2, 167 LimitsPeriod: 7200, 168 }, 169 } 170 171 for _, basket := range baskets { 172 suite.app.BasketKeeper.SetBasket(suite.ctx, basket) 173 } 174 175 actions := []types.AmountAtTime{ 176 { 177 BasketId: 1, 178 Time: uint64(now.Unix()), 179 Amount: sdk.NewInt(1000), 180 }, 181 { 182 BasketId: 1, 183 Time: uint64(now.Add(time.Second).Unix()), 184 Amount: sdk.NewInt(10000), 185 }, 186 { 187 BasketId: 2, 188 Time: uint64(now.Unix()), 189 Amount: sdk.NewInt(1000), 190 }, 191 { 192 BasketId: 2, 193 Time: uint64(now.Add(time.Hour).Unix()), 194 Amount: sdk.NewInt(10000), 195 }, 196 } 197 198 for _, action := range actions { 199 suite.app.BasketKeeper.SetSwapAmount(suite.ctx, time.Unix(int64(action.Time), 0), action.BasketId, action.Amount) 200 } 201 202 for _, action := range actions { 203 amount := suite.app.BasketKeeper.GetSwapAmount(suite.ctx, action.BasketId, time.Unix(int64(action.Time), 0)) 204 suite.Require().Equal(amount, action.Amount) 205 } 206 207 allAmounts := suite.app.BasketKeeper.GetAllSwapAmounts(suite.ctx) 208 suite.Require().Len(allAmounts, len(actions)) 209 210 historicalAmount := suite.app.BasketKeeper.GetLimitsPeriodSwapAmount(suite.ctx, 1, 1800) 211 suite.Require().Equal(historicalAmount, sdk.NewInt(0)) 212 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodSwapAmount(suite.ctx, 2, 1800) 213 suite.Require().Equal(historicalAmount, sdk.NewInt(10000)) 214 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodSwapAmount(suite.ctx, 2, 7200) 215 suite.Require().Equal(historicalAmount, sdk.NewInt(11000)) 216 217 suite.app.BasketKeeper.RegisterSwapAction(suite.ctx, 1, sdk.NewInt(1000)) 218 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodSwapAmount(suite.ctx, 1, 1800) 219 suite.Require().Equal(historicalAmount, sdk.NewInt(1000)) 220 221 suite.app.BasketKeeper.ClearOldSwapAmounts(suite.ctx, 1, 1800) 222 historicalAmount = suite.app.BasketKeeper.GetLimitsPeriodSwapAmount(suite.ctx, 1, 1800000) 223 suite.Require().Equal(historicalAmount, sdk.NewInt(1000)) 224 }