@@ -318,4 +318,250 @@ describe("PolkadotApi", () => {
318318 expect ( tool ) . toBe ( mockXcmTool )
319319 } )
320320 } )
321+
322+ // Nomination Pool Tests
323+ describe ( "joinPoolTool" , ( ) => {
324+ const createMockJoinPoolTool = ( name : string , description : string ) => ( {
325+ name,
326+ description,
327+ execute : vi . fn ( ) ,
328+ invoke : vi . fn ( ) ,
329+ call : vi . fn ( ) ,
330+ metadata : { } ,
331+ tags : [ ] ,
332+ callbacks : undefined ,
333+ verbose : false
334+ } )
335+
336+ let mockJoinPoolTool : any
337+ let mockAgentPolkadotApi : PolkadotAgentApi
338+ const mockSigner = { sign : vi . fn ( ) } as any
339+
340+ beforeEach ( ( ) => {
341+ mockJoinPoolTool = createMockJoinPoolTool ( "joinPool" , "Join nomination pool" )
342+ mockAgentPolkadotApi = {
343+ getNativeBalanceTool : vi . fn ( ) ,
344+ joinPoolTool : vi . fn ( ) . mockReturnValue ( mockJoinPoolTool )
345+ } as unknown as PolkadotAgentApi
346+ } )
347+
348+ it ( "should return the join pool tool and call it with correct params" , async ( ) => {
349+ const tool = mockAgentPolkadotApi . joinPoolTool ( mockSigner )
350+ expect ( tool ) . toBeDefined ( )
351+ expect ( tool ) . toBe ( mockJoinPoolTool )
352+ } )
353+
354+ it ( "should handle join pool tool creation with different signers" , ( ) => {
355+ const mockSigner2 = { sign : vi . fn ( ) } as any
356+ const tool1 = mockAgentPolkadotApi . joinPoolTool ( mockSigner )
357+ const tool2 = mockAgentPolkadotApi . joinPoolTool ( mockSigner2 )
358+
359+ expect ( tool1 ) . toBeDefined ( )
360+ expect ( tool2 ) . toBeDefined ( )
361+ expect ( tool1 ) . toBe ( mockJoinPoolTool )
362+ expect ( tool2 ) . toBe ( mockJoinPoolTool )
363+ } )
364+ } )
365+
366+ describe ( "bondExtraTool" , ( ) => {
367+ const createMockBondExtraTool = ( name : string , description : string ) => ( {
368+ name,
369+ description,
370+ execute : vi . fn ( ) ,
371+ invoke : vi . fn ( ) ,
372+ call : vi . fn ( ) ,
373+ metadata : { } ,
374+ tags : [ ] ,
375+ callbacks : undefined ,
376+ verbose : false
377+ } )
378+
379+ let mockBondExtraTool : any
380+ let mockAgentPolkadotApi : PolkadotAgentApi
381+ const mockSigner = { sign : vi . fn ( ) } as any
382+
383+ beforeEach ( ( ) => {
384+ mockBondExtraTool = createMockBondExtraTool ( "bondExtra" , "Bond extra tokens" )
385+ mockAgentPolkadotApi = {
386+ getNativeBalanceTool : vi . fn ( ) ,
387+ bondExtraTool : vi . fn ( ) . mockReturnValue ( mockBondExtraTool )
388+ } as unknown as PolkadotAgentApi
389+ } )
390+
391+ it ( "should return the bond extra tool and call it with correct params" , async ( ) => {
392+ const tool = mockAgentPolkadotApi . bondExtraTool ( mockSigner )
393+ expect ( tool ) . toBeDefined ( )
394+ expect ( tool ) . toBe ( mockBondExtraTool )
395+ } )
396+
397+ it ( "should handle bond extra tool creation with different signers" , ( ) => {
398+ const mockSigner2 = { sign : vi . fn ( ) } as any
399+ const tool1 = mockAgentPolkadotApi . bondExtraTool ( mockSigner )
400+ const tool2 = mockAgentPolkadotApi . bondExtraTool ( mockSigner2 )
401+
402+ expect ( tool1 ) . toBeDefined ( )
403+ expect ( tool2 ) . toBeDefined ( )
404+ expect ( tool1 ) . toBe ( mockBondExtraTool )
405+ expect ( tool2 ) . toBe ( mockBondExtraTool )
406+ } )
407+ } )
408+
409+ describe ( "unbondTool" , ( ) => {
410+ const createMockUnbondTool = ( name : string , description : string ) => ( {
411+ name,
412+ description,
413+ execute : vi . fn ( ) ,
414+ invoke : vi . fn ( ) ,
415+ call : vi . fn ( ) ,
416+ metadata : { } ,
417+ tags : [ ] ,
418+ callbacks : undefined ,
419+ verbose : false
420+ } )
421+
422+ let mockUnbondTool : any
423+ let mockAgentPolkadotApi : PolkadotAgentApi
424+ const mockSigner = { sign : vi . fn ( ) } as any
425+ const mockAddress = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"
426+
427+ beforeEach ( ( ) => {
428+ mockUnbondTool = createMockUnbondTool ( "unbond" , "Unbond tokens from nomination pool" )
429+ mockAgentPolkadotApi = {
430+ getNativeBalanceTool : vi . fn ( ) ,
431+ unbondTool : vi . fn ( ) . mockReturnValue ( mockUnbondTool )
432+ } as unknown as PolkadotAgentApi
433+ } )
434+
435+ it ( "should return the unbond tool and call it with correct params" , async ( ) => {
436+ const tool = mockAgentPolkadotApi . unbondTool ( mockSigner , mockAddress )
437+ expect ( tool ) . toBeDefined ( )
438+ expect ( tool ) . toBe ( mockUnbondTool )
439+ } )
440+
441+ it ( "should handle unbond tool creation with different addresses" , ( ) => {
442+ const mockAddress2 = "5D7jcv6aYbhbYGVY8k65oemM6FVNoyBfoVkuJ5cbFvbefftr"
443+ const tool1 = mockAgentPolkadotApi . unbondTool ( mockSigner , mockAddress )
444+ const tool2 = mockAgentPolkadotApi . unbondTool ( mockSigner , mockAddress2 )
445+
446+ expect ( tool1 ) . toBeDefined ( )
447+ expect ( tool2 ) . toBeDefined ( )
448+ expect ( tool1 ) . toBe ( mockUnbondTool )
449+ expect ( tool2 ) . toBe ( mockUnbondTool )
450+ } )
451+
452+ it ( "should handle unbond tool creation with different signers" , ( ) => {
453+ const mockSigner2 = { sign : vi . fn ( ) } as any
454+ const tool1 = mockAgentPolkadotApi . unbondTool ( mockSigner , mockAddress )
455+ const tool2 = mockAgentPolkadotApi . unbondTool ( mockSigner2 , mockAddress )
456+
457+ expect ( tool1 ) . toBeDefined ( )
458+ expect ( tool2 ) . toBeDefined ( )
459+ expect ( tool1 ) . toBe ( mockUnbondTool )
460+ expect ( tool2 ) . toBe ( mockUnbondTool )
461+ } )
462+ } )
463+
464+ describe ( "withdrawUnbondedTool" , ( ) => {
465+ const createMockWithdrawUnbondedTool = ( name : string , description : string ) => ( {
466+ name,
467+ description,
468+ execute : vi . fn ( ) ,
469+ invoke : vi . fn ( ) ,
470+ call : vi . fn ( ) ,
471+ metadata : { } ,
472+ tags : [ ] ,
473+ callbacks : undefined ,
474+ verbose : false
475+ } )
476+
477+ let mockWithdrawUnbondedTool : any
478+ let mockAgentPolkadotApi : PolkadotAgentApi
479+ const mockSigner = { sign : vi . fn ( ) } as any
480+ const mockAddress = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"
481+
482+ beforeEach ( ( ) => {
483+ mockWithdrawUnbondedTool = createMockWithdrawUnbondedTool (
484+ "withdrawUnbonded" ,
485+ "Withdraw unbonded tokens"
486+ )
487+ mockAgentPolkadotApi = {
488+ getNativeBalanceTool : vi . fn ( ) ,
489+ withdrawUnbondedTool : vi . fn ( ) . mockReturnValue ( mockWithdrawUnbondedTool )
490+ } as unknown as PolkadotAgentApi
491+ } )
492+
493+ it ( "should return the withdraw unbonded tool and call it with correct params" , async ( ) => {
494+ const tool = mockAgentPolkadotApi . withdrawUnbondedTool ( mockSigner , mockAddress )
495+ expect ( tool ) . toBeDefined ( )
496+ expect ( tool ) . toBe ( mockWithdrawUnbondedTool )
497+ } )
498+
499+ it ( "should handle withdraw unbonded tool creation with different addresses" , ( ) => {
500+ const mockAddress2 = "5D7jcv6aYbhbYGVY8k65oemM6FVNoyBfoVkuJ5cbFvbefftr"
501+ const tool1 = mockAgentPolkadotApi . withdrawUnbondedTool ( mockSigner , mockAddress )
502+ const tool2 = mockAgentPolkadotApi . withdrawUnbondedTool ( mockSigner , mockAddress2 )
503+
504+ expect ( tool1 ) . toBeDefined ( )
505+ expect ( tool2 ) . toBeDefined ( )
506+ expect ( tool1 ) . toBe ( mockWithdrawUnbondedTool )
507+ expect ( tool2 ) . toBe ( mockWithdrawUnbondedTool )
508+ } )
509+
510+ it ( "should handle withdraw unbonded tool creation with different signers" , ( ) => {
511+ const mockSigner2 = { sign : vi . fn ( ) } as any
512+ const tool1 = mockAgentPolkadotApi . withdrawUnbondedTool ( mockSigner , mockAddress )
513+ const tool2 = mockAgentPolkadotApi . withdrawUnbondedTool ( mockSigner2 , mockAddress )
514+
515+ expect ( tool1 ) . toBeDefined ( )
516+ expect ( tool2 ) . toBeDefined ( )
517+ expect ( tool1 ) . toBe ( mockWithdrawUnbondedTool )
518+ expect ( tool2 ) . toBe ( mockWithdrawUnbondedTool )
519+ } )
520+ } )
521+
522+ describe ( "claimRewardsTool" , ( ) => {
523+ const createMockClaimRewardsTool = ( name : string , description : string ) => ( {
524+ name,
525+ description,
526+ execute : vi . fn ( ) ,
527+ invoke : vi . fn ( ) ,
528+ call : vi . fn ( ) ,
529+ metadata : { } ,
530+ tags : [ ] ,
531+ callbacks : undefined ,
532+ verbose : false
533+ } )
534+
535+ let mockClaimRewardsTool : any
536+ let mockAgentPolkadotApi : PolkadotAgentApi
537+ const mockSigner = { sign : vi . fn ( ) } as any
538+
539+ beforeEach ( ( ) => {
540+ mockClaimRewardsTool = createMockClaimRewardsTool (
541+ "claimRewards" ,
542+ "Claim rewards from nomination pool"
543+ )
544+ mockAgentPolkadotApi = {
545+ getNativeBalanceTool : vi . fn ( ) ,
546+ claimRewardsTool : vi . fn ( ) . mockReturnValue ( mockClaimRewardsTool )
547+ } as unknown as PolkadotAgentApi
548+ } )
549+
550+ it ( "should return the claim rewards tool and call it with correct params" , async ( ) => {
551+ const tool = mockAgentPolkadotApi . claimRewardsTool ( mockSigner )
552+ expect ( tool ) . toBeDefined ( )
553+ expect ( tool ) . toBe ( mockClaimRewardsTool )
554+ } )
555+
556+ it ( "should handle claim rewards tool creation with different signers" , ( ) => {
557+ const mockSigner2 = { sign : vi . fn ( ) } as any
558+ const tool1 = mockAgentPolkadotApi . claimRewardsTool ( mockSigner )
559+ const tool2 = mockAgentPolkadotApi . claimRewardsTool ( mockSigner2 )
560+
561+ expect ( tool1 ) . toBeDefined ( )
562+ expect ( tool2 ) . toBeDefined ( )
563+ expect ( tool1 ) . toBe ( mockClaimRewardsTool )
564+ expect ( tool2 ) . toBe ( mockClaimRewardsTool )
565+ } )
566+ } )
321567} )
0 commit comments