@@ -207,5 +207,81 @@ func TestClaim(t *testing.T) {
207
207
claimTx , err := eng .Claim ([]string {valAddress , discordID })
208
208
assert .NoError (t , err )
209
209
assert .NotNil (t , claimTx )
210
+
211
+ assert .Equal (t , amount , claimTx .Amount )
212
+ assert .Equal (t , txID , claimTx .TxID )
213
+ assert .Equal (t , time , claimTx .Time )
214
+
215
+ //! can't claim twice.
216
+ claimTx , err = eng .Claim ([]string {valAddress , discordID })
217
+ assert .EqualError (t , err , "this claimer have already claimed rewards" )
218
+ assert .Nil (t , claimTx )
219
+ })
220
+
221
+ t .Run ("missing arguments" , func (t * testing.T ) {
222
+ claimTx , err := eng .Claim ([]string {})
223
+ assert .EqualError (t , err , "missing argument: validator address" )
224
+ assert .Nil (t , claimTx )
225
+ })
226
+
227
+ t .Run ("claimer not found" , func (t * testing.T ) {
228
+ valAddress := "pc1p74scge5dyzjktv9q70xtr0pjmyqcqk7nuh8nzp"
229
+ discordID := "987654321"
230
+
231
+ store .EXPECT ().ClaimerInfo (discordID ).Return (
232
+ nil ,
233
+ )
234
+
235
+ claimTx , err := eng .Claim ([]string {valAddress , discordID })
236
+ assert .EqualError (t , err , "claimer not found" )
237
+ assert .Nil (t , claimTx )
238
+ })
239
+
240
+ t .Run ("not validator address" , func (t * testing.T ) {
241
+ valAddress := "pc1p74scge5dyzjktv9q70xtr0pjmyqcqk7nuh8nzp"
242
+ discordID := "1234567890"
243
+ amount := 74.68
244
+
245
+ store .EXPECT ().ClaimerInfo (discordID ).Return (
246
+ & rpstore.Claimer {
247
+ DiscordID : discordID ,
248
+ TotalReward : amount ,
249
+ },
250
+ )
251
+
252
+ client .EXPECT ().IsValidator (valAddress ).Return (
253
+ false , nil ,
254
+ )
255
+
256
+ claimTx , err := eng .Claim ([]string {valAddress , discordID })
257
+ assert .EqualError (t , err , "invalid argument: validator address" )
258
+ assert .Nil (t , claimTx )
259
+ })
260
+
261
+ t .Run ("empty transaction ID" , func (t * testing.T ) {
262
+ valAddress := "pc1p74scge5dyzjktv9q70xtr0pjmyqcqk7nuh8nzp"
263
+ discordID := "1234567890"
264
+ amount := 74.68
265
+
266
+ client .EXPECT ().IsValidator (valAddress ).Return (
267
+ true , nil ,
268
+ )
269
+
270
+ store .EXPECT ().ClaimerInfo (discordID ).Return (
271
+ & rpstore.Claimer {
272
+ DiscordID : discordID ,
273
+ TotalReward : amount ,
274
+ ClaimTransaction : nil ,
275
+ },
276
+ )
277
+
278
+ memo := fmt .Sprintf ("RP to: %v" , discordID )
279
+ wallet .EXPECT ().BondTransaction ("" , valAddress , memo , amount ).Return (
280
+ "" , nil ,
281
+ )
282
+
283
+ claimTx , err := eng .Claim ([]string {valAddress , discordID })
284
+ assert .EqualError (t , err , "can't send bond transaction" )
285
+ assert .Nil (t , claimTx )
210
286
})
211
287
}
0 commit comments