From ec034ca8bc0bb05dbe7ad88ed705941f105b6908 Mon Sep 17 00:00:00 2001 From: ai16z-demirix Date: Sun, 12 Jan 2025 22:15:16 +0100 Subject: [PATCH] feature: adding tests for solana-plugin --- .../__tests__/actions/swap.test.ts | 22 ++++++++ .../__tests__/evaluators/trust.test.ts | 55 +++++++++++++++++++ .../providers/token-security.test.ts | 36 ++++++++++++ .../{src/tests => __tests__}/token.test.ts | 2 +- 4 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 packages/plugin-solana/__tests__/actions/swap.test.ts create mode 100644 packages/plugin-solana/__tests__/evaluators/trust.test.ts create mode 100644 packages/plugin-solana/__tests__/providers/token-security.test.ts rename packages/plugin-solana/{src/tests => __tests__}/token.test.ts (98%) diff --git a/packages/plugin-solana/__tests__/actions/swap.test.ts b/packages/plugin-solana/__tests__/actions/swap.test.ts new file mode 100644 index 00000000000..f38f806c4e8 --- /dev/null +++ b/packages/plugin-solana/__tests__/actions/swap.test.ts @@ -0,0 +1,22 @@ +import { describe, it, expect, vi } from 'vitest'; + +describe('Swap Action', () => { + describe('validate', () => { + it('should handle swap message validation', async () => { + const mockMessage = { + content: 'Swap 1 SOL to USDC', + metadata: { + fromToken: 'SOL', + toToken: 'USDC', + amount: '1' + } + }; + + // Basic test to ensure message structure + expect(mockMessage.metadata).toBeDefined(); + expect(mockMessage.metadata.fromToken).toBe('SOL'); + expect(mockMessage.metadata.toToken).toBe('USDC'); + expect(mockMessage.metadata.amount).toBe('1'); + }); + }); +}); diff --git a/packages/plugin-solana/__tests__/evaluators/trust.test.ts b/packages/plugin-solana/__tests__/evaluators/trust.test.ts new file mode 100644 index 00000000000..ff7cb8b1343 --- /dev/null +++ b/packages/plugin-solana/__tests__/evaluators/trust.test.ts @@ -0,0 +1,55 @@ +import { describe, it, expect, vi } from 'vitest'; +import { trustEvaluator } from '../../src/evaluators/trust'; + +// Mock the core module +vi.mock('@elizaos/core', () => ({ + generateTrueOrFalse: vi.fn().mockResolvedValue(false), + ModelClass: { + SMALL: 'small' + }, + settings: { + MAIN_WALLET_ADDRESS: 'test-wallet-address' + }, + booleanFooter: 'Answer with Yes or No.', + elizaLogger: { + log: vi.fn(), + debug: vi.fn(), + info: vi.fn(), + error: vi.fn() + }, + composeContext: vi.fn().mockReturnValue({ + state: {}, + template: '' + }) +})); + +describe('Trust Evaluator', () => { + it('should handle non-trust messages', async () => { + const mockRuntime = { + getSetting: vi.fn(), + composeState: vi.fn().mockResolvedValue({ + agentId: 'test-agent', + roomId: 'test-room' + }), + getLogger: vi.fn().mockReturnValue({ + debug: vi.fn(), + info: vi.fn(), + log: vi.fn(), + error: vi.fn() + }) + }; + + const mockMessage = { + content: 'Hello world', + metadata: {} + }; + + const mockState = { + agentId: 'test-agent', + roomId: 'test-room' + }; + + const result = await trustEvaluator.handler(mockRuntime, mockMessage, mockState); + expect(result).toBeDefined(); + }); +}); diff --git a/packages/plugin-solana/__tests__/providers/token-security.test.ts b/packages/plugin-solana/__tests__/providers/token-security.test.ts new file mode 100644 index 00000000000..d350953092d --- /dev/null +++ b/packages/plugin-solana/__tests__/providers/token-security.test.ts @@ -0,0 +1,36 @@ +import { describe, it, expect, vi } from 'vitest'; +import { TokenProvider } from '../../src/providers/token'; +import { WalletProvider } from '../../src/providers/wallet'; +import { ICacheManager } from '@elizaos/core'; + +describe('Token Security', () => { + it('should handle empty security data gracefully', async () => { + const mockCacheManager = { + get: vi.fn().mockResolvedValue(null), + set: vi.fn(), + delete: vi.fn(), + clear: vi.fn(), + has: vi.fn(), + }; + + const mockWalletProvider = new WalletProvider(mockCacheManager); + const tokenProvider = new TokenProvider( + 'So11111111111111111111111111111111111111112', + mockWalletProvider, + mockCacheManager + ); + + global.fetch = vi.fn().mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve({ + success: true, + data: {} + }) + }); + + const result = await tokenProvider.fetchTokenSecurity(); + expect(result).toBeDefined(); + expect(result.ownerBalance).toBe(undefined); + expect(result.creatorBalance).toBe(undefined); + }); +}); diff --git a/packages/plugin-solana/src/tests/token.test.ts b/packages/plugin-solana/__tests__/token.test.ts similarity index 98% rename from packages/plugin-solana/src/tests/token.test.ts rename to packages/plugin-solana/__tests__/token.test.ts index 6b799c1c239..5d1a5e23451 100644 --- a/packages/plugin-solana/src/tests/token.test.ts +++ b/packages/plugin-solana/__tests__/token.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect, beforeEach, vi, afterEach } from "vitest"; -import { TokenProvider } from "../providers/token.ts"; +import { TokenProvider } from "../src/providers/token.ts"; // Mock NodeCache vi.mock("node-cache", () => {