UNPKG

@reown/appkit-utils

Version:

The full stack toolkit to build onchain app UX.

107 lines 4.3 kB
import { describe, expect, it, vi } from 'vitest'; import { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common'; import { SolConstantsUtil } from '../src/solana/SolanaConstantsUtil.js'; import { SolHelpersUtil } from '../src/solana/SolanaHelpersUtils.js'; describe('SolHelpersUtil', () => { const mockChains = [ { id: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', name: 'Solana Mainnet', caipNetworkId: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', chainNamespace: CommonConstantsUtil.CHAIN.SOLANA, rpcUrls: { default: { http: ['https://api.mainnet-beta.solana.com'] } }, nativeCurrency: { name: 'Solana', decimals: 9, symbol: 'SOL' }, blockExplorers: { default: { name: 'Solscan', url: 'https://solscan.io' } } }, { id: '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z', name: 'Solana Testnet', caipNetworkId: 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z', chainNamespace: CommonConstantsUtil.CHAIN.SOLANA, rpcUrls: { default: { http: ['https://api.testnet.solana.com'] } }, nativeCurrency: { name: 'Solana', decimals: 9, symbol: 'SOL' }, blockExplorers: { default: { name: 'Solscan', url: 'https://solscan.io' } } } ]; describe('detectRpcUrl', () => { it('should append projectId for blockchain API RPC URLs', () => { const chain = { ...mockChains[0], rpcUrl: 'https://solana.blockchain-api.com/v1/rpc' }; const projectId = 'test-project-id'; const result = SolHelpersUtil.detectRpcUrl(chain, projectId); expect(result).toBe(chain.rpcUrls.default.http[0]); }); it('should return original RPC URL for non-blockchain API URLs', () => { const chain = mockChains[0]; const projectId = 'test-project-id'; const result = SolHelpersUtil.detectRpcUrl(chain, projectId); expect(result).toBe(chain?.rpcUrls.default.http[0]); }); }); describe('getChain', () => { it('should return the correct chain when chainId matches', () => { const result = SolHelpersUtil.getChain(mockChains, '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp'); expect(result).toEqual(mockChains[0]); }); it('should return the default chain when chainId does not match', () => { const result = SolHelpersUtil.getChain(mockChains, 'non-existent-chain-id'); expect(result).toEqual(SolConstantsUtil.DEFAULT_CHAIN); }); }); describe('hexStringToNumber', () => { it('should convert hex string to number', () => { expect(SolHelpersUtil.hexStringToNumber('0xa')).toBe(10); expect(SolHelpersUtil.hexStringToNumber('ff')).toBe(255); }); it('should handle hex strings with or without 0x prefix', () => { expect(SolHelpersUtil.hexStringToNumber('0x10')).toBe(16); expect(SolHelpersUtil.hexStringToNumber('10')).toBe(16); }); }); describe('getAddress', () => { it('should return the public key as a base58 string', () => { const mockProvider = { publicKey: { toBase58: vi.fn().mockReturnValue('mockAddress') } }; const result = SolHelpersUtil.getAddress(mockProvider); expect(result).toBe('mockAddress'); expect(mockProvider.publicKey?.toBase58).toHaveBeenCalled(); }); it('should return undefined if publicKey is not available', () => { const mockProvider = {}; const result = SolHelpersUtil.getAddress(mockProvider); expect(result).toBeUndefined(); }); }); }); //# sourceMappingURL=SolanaHelpersUtil.test.js.map