Skip to main content
Glama

MCP Ethers Wallet

erc20.test.ts2.83 kB
/** * @file ERC20 Service Tests * @version 1.0.0 * @status STABLE - DO NOT MODIFY WITHOUT TESTS * @lastModified 2023-09-05 * * Tests for ERC20 service functions using real Hardhat contracts * * IMPORTANT: * - No mocks used * - Uses real Hardhat blockchain * * Functionality: * - Tests ERC20 token information * - Tests ERC20 balance retrieval * - Tests ERC20 transfers */ import { describe, expect, it, beforeAll } from '@jest/globals'; import { ethers } from 'ethers'; import { TestEnvironment } from '../../tests/utils/hardhatTestProvider.js'; import { getTestEnvironment } from '../../tests/utils/globalTestSetup.js'; import { EthersService } from '../ethersService.js'; import { deployTestToken, TestToken } from '../../tests/utils/testContractHelper.js'; // Note: This file has been converted from using Jest mocks to using real Hardhat contracts // to be compatible with Bun's test runner describe('ERC20 Service Integration Tests', () => { let testEnv: TestEnvironment; let ethersService: EthersService; let testToken: TestToken; let tokenAddress: string; let ownerAddress: string; let recipientAddress: string; beforeAll(async () => { // Get test environment with provider and signers testEnv = await getTestEnvironment(); const signer = testEnv.signers[0]; ethersService = new EthersService(testEnv.provider, signer); // Deploy real token contract testToken = await deployTestToken(testEnv.provider, signer); tokenAddress = await testToken.getAddress(); ownerAddress = await signer.getAddress(); recipientAddress = await testEnv.signers[1].getAddress(); }, 30000); describe('Token Information', () => { it('should get token name', async () => { const name = await testToken.name(); expect(name).toBe('MyToken'); }); it('should get token symbol', async () => { const symbol = await testToken.symbol(); expect(symbol).toBe('MCP'); }); it('should get token decimals', async () => { const decimals = await testToken.decimals(); expect(Number(decimals)).toBe(18); }); }); describe('Balance Operations', () => { it('should get token balance for an address', async () => { const balance = await testToken.balanceOf(ownerAddress); // Owner should have tokens expect(balance > 0n).toBe(true); }); it('should handle zero balance for a valid ERC20 token', async () => { // Use a random address which should have zero balance const randomAddress = ethers.Wallet.createRandom().address; const balance = await testToken.balanceOf(randomAddress); expect(balance).toBe(0n); }); }); // Transfer operations can be tested in a separate integration test // Skipping here to avoid nonce issues });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/crazyrabbitLTC/mcp-ethers-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server