diff --git a/src/tools/get-token-fiat-price.ts b/src/tools/get-token-fiat-price.ts index 122ac8c..d9d22a5 100644 --- a/src/tools/get-token-fiat-price.ts +++ b/src/tools/get-token-fiat-price.ts @@ -80,7 +80,11 @@ export const getTokenFiatPrice: MCPTool = { } } catch (error) { const message = `Error fetching ${token.toUpperCase()} price in ${fiat.toUpperCase()}: ${String(error)}` - logger.warn(message) + if (error instanceof z.ZodError) { + logger.info(`Invalid input for getTokenFiatPrice: ${message}`) + } else { + logger.warn(message) + } const data: z.infer = { token: token.toLowerCase() as z.infer, diff --git a/tests/prices/get-token-fiat-price.unit.test.ts b/tests/prices/get-token-fiat-price.unit.test.ts index e01325a..77b9551 100644 --- a/tests/prices/get-token-fiat-price.unit.test.ts +++ b/tests/prices/get-token-fiat-price.unit.test.ts @@ -113,15 +113,37 @@ describe('getTokenFiatPrice tool (unit)', () => { test('returns error for unsupported token', async () => { const result = await getTokenFiatPrice.handler({ token: 'btc', fiat: 'usd' }) - const data = result.structuredContent as { error?: string } - - expect(data.error).toBeDefined() + const data = result.structuredContent as { + token: string + fiat: string + price: number + source: string + error?: string + } + + expect(data.token).toBe('btc') + expect(data.fiat).toBe('usd') + expect(data.source).toBe('oracle') + expect(Number.isNaN(data.price)).toBe(true) + expect(data.error).toContain('invalid_enum_value') + expect(data.error).toContain('btc') }) test('returns error for unsupported fiat', async () => { const result = await getTokenFiatPrice.handler({ token: 'vet', fiat: 'jpy' }) - const data = result.structuredContent as { error?: string } - - expect(data.error).toBeDefined() + const data = result.structuredContent as { + token: string + fiat: string + price: number + source: string + error?: string + } + + expect(data.token).toBe('vet') + expect(data.fiat).toBe('jpy') + expect(data.source).toBe('oracle') + expect(Number.isNaN(data.price)).toBe(true) + expect(data.error).toContain('invalid_enum_value') + expect(data.error).toContain('jpy') }) })