/** * Test suite for MCP (Model Context Protocol) utility functions * Tests icon detection logic for MCP-related features */ import { shouldUseMcpIcon, shouldUseMcpIconForAppIcon } from './mcp' describe('mcp', () => { /** * Tests shouldUseMcpIcon function which determines if the MCP icon * should be used based on the icon source format */ describe('shouldUseMcpIcon', () => { /** * The link emoji (🔗) is used as a special marker for MCP icons */ test('returns true for emoji object with 🔗 content', () => { const src = { content: '🔗', background: '#fff' } expect(shouldUseMcpIcon(src)).toBe(true) }) test('returns false for emoji object with different content', () => { const src = { content: '🎉', background: '#fff' } expect(shouldUseMcpIcon(src)).toBe(false) }) test('returns false for string URL', () => { const src = 'https://example.com/icon.png' expect(shouldUseMcpIcon(src)).toBe(false) }) test('returns false for null', () => { expect(shouldUseMcpIcon(null)).toBe(false) }) test('returns false for undefined', () => { expect(shouldUseMcpIcon(undefined)).toBe(false) }) test('returns false for empty object', () => { expect(shouldUseMcpIcon({})).toBe(false) }) test('returns false for object without content property', () => { const src = { background: '#fff' } expect(shouldUseMcpIcon(src)).toBe(false) }) test('returns false for object with null content', () => { const src = { content: null, background: '#fff' } expect(shouldUseMcpIcon(src)).toBe(false) }) }) /** * Tests shouldUseMcpIconForAppIcon function which checks if an app icon * should use the MCP icon based on icon type and content */ describe('shouldUseMcpIconForAppIcon', () => { /** * MCP icon should only be used when both conditions are met: * - Icon type is 'emoji' * - Icon content is the link emoji (🔗) */ test('returns true when iconType is emoji and icon is 🔗', () => { expect(shouldUseMcpIconForAppIcon('emoji', '🔗')).toBe(true) }) test('returns false when iconType is emoji but icon is different', () => { expect(shouldUseMcpIconForAppIcon('emoji', '🎉')).toBe(false) }) test('returns false when iconType is image', () => { expect(shouldUseMcpIconForAppIcon('image', '🔗')).toBe(false) }) test('returns false when iconType is image and icon is different', () => { expect(shouldUseMcpIconForAppIcon('image', 'file-id-123')).toBe(false) }) test('returns false for empty strings', () => { expect(shouldUseMcpIconForAppIcon('', '')).toBe(false) }) test('returns false when iconType is empty but icon is 🔗', () => { expect(shouldUseMcpIconForAppIcon('', '🔗')).toBe(false) }) }) })