Skip to content

Commit befba54

Browse files
committed
feat(sdk): add unit tests
1 parent 12f42ab commit befba54

File tree

1 file changed

+246
-0
lines changed

1 file changed

+246
-0
lines changed

packages/sdk/src/api.test.ts

Lines changed: 246 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)