mirror of
https://github.com/langgenius/dify.git
synced 2025-11-24 08:52:43 +00:00
89 lines
2.8 KiB
TypeScript
89 lines
2.8 KiB
TypeScript
|
|
/**
|
||
|
|
* 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)
|
||
|
|
})
|
||
|
|
})
|
||
|
|
})
|