mcp-coincap-jj
by wazzan
Verified
import { formatPriceInfo, formatMarketAnalysis, formatHistoricalAnalysis } from '../formatters.js';
import type { CryptoAsset, Market } from '../../types/index.js';
describe('Formatters', () => {
describe('formatPriceInfo', () => {
it('should format price info correctly', () => {
const asset: CryptoAsset = {
id: 'bitcoin',
rank: '1',
symbol: 'BTC',
name: 'Bitcoin',
priceUsd: '50000.00',
changePercent24Hr: '5.25',
volumeUsd24Hr: '30000000000',
marketCapUsd: '1000000000000',
supply: '19000000',
maxSupply: '21000000',
vwap24Hr: '49500.00'
};
const formatted = formatPriceInfo(asset);
expect(formatted).toContain('Bitcoin (BTC)');
expect(formatted).toContain('Price: $50000.00');
expect(formatted).toContain('24h Change: 5.25%');
expect(formatted).toContain('24h Volume: $30000.00M');
expect(formatted).toContain('Market Cap: $1000.00B');
expect(formatted).toContain('Rank: #1');
});
});
describe('formatMarketAnalysis', () => {
it('should format market analysis correctly', () => {
const asset: CryptoAsset = {
id: 'bitcoin',
rank: '1',
symbol: 'BTC',
name: 'Bitcoin',
priceUsd: '50000.00',
changePercent24Hr: '5.25',
volumeUsd24Hr: '30000000000',
marketCapUsd: '1000000000000',
supply: '19000000',
maxSupply: '21000000',
vwap24Hr: '49500.00'
};
const markets: Market[] = [
{
exchangeId: 'binance',
baseSymbol: 'BTC',
quoteSymbol: 'USD',
priceUsd: '50100.00',
volumeUsd24Hr: '10000000000',
percentExchangeVolume: '33.33'
},
{
exchangeId: 'coinbase',
baseSymbol: 'BTC',
quoteSymbol: 'USD',
priceUsd: '50000.00',
volumeUsd24Hr: '8000000000',
percentExchangeVolume: '26.67'
}
];
const formatted = formatMarketAnalysis(asset, markets);
expect(formatted).toContain('Market Analysis for Bitcoin (BTC)');
expect(formatted).toContain('Current Price: $50000.00');
expect(formatted).toContain('24h Volume: $30000.00M');
expect(formatted).toContain('VWAP (24h): $49500.00');
expect(formatted).toContain('binance: $50100.00');
expect(formatted).toContain('coinbase: $50000.00');
});
});
describe('formatHistoricalAnalysis', () => {
it('should format historical analysis correctly', () => {
const asset: CryptoAsset = {
id: 'bitcoin',
rank: '1',
symbol: 'BTC',
name: 'Bitcoin',
priceUsd: '50000.00',
changePercent24Hr: '5.25',
volumeUsd24Hr: '30000000000',
marketCapUsd: '1000000000000',
supply: '19000000',
maxSupply: '21000000',
vwap24Hr: '49500.00'
};
const history = [
{
time: 1609459200000,
priceUsd: '45000.00',
circulatingSupply: '18500000',
date: '2021-01-01'
},
{
time: 1609545600000,
priceUsd: '48000.00',
circulatingSupply: '18500000',
date: '2021-01-02'
},
{
time: 1609632000000,
priceUsd: '50000.00',
circulatingSupply: '18500000',
date: '2021-01-03'
}
];
const formatted = formatHistoricalAnalysis(asset, history);
expect(formatted).toContain('Historical Analysis for Bitcoin (BTC)');
expect(formatted).toContain('Period High: $50000.00');
expect(formatted).toContain('Period Low: $45000.00');
expect(formatted).toContain('Price Change: 11.11%');
expect(formatted).toContain('Current Price: $50000.00');
expect(formatted).toContain('Starting Price: $45000.00');
});
});
});