mirror of
https://github.com/langgenius/dify.git
synced 2026-05-12 15:58:19 +08:00
35 lines
1.8 KiB
TypeScript
35 lines
1.8 KiB
TypeScript
import { getDefaultMetricDescription, getDefaultMetricDescriptionI18nKey, getTranslatedMetricDescription } from '../default-metric-descriptions'
|
|
|
|
describe('default metric descriptions', () => {
|
|
it('should resolve descriptions for kebab-case metric ids', () => {
|
|
expect(getDefaultMetricDescription('context-precision')).toContain('retrieval pipeline returns little noise')
|
|
expect(getDefaultMetricDescription('answer-correctness')).toContain('factual accuracy and completeness')
|
|
})
|
|
|
|
it('should normalize snake_case metric ids from backend payloads', () => {
|
|
expect(getDefaultMetricDescription('CONTEXT_RECALL')).toContain('does not miss important supporting evidence')
|
|
expect(getDefaultMetricDescription('TOOL_CORRECTNESS')).toContain('tool-use strategy matches the expected behavior')
|
|
})
|
|
|
|
it('should support the legacy relevance alias', () => {
|
|
expect(getDefaultMetricDescription('relevance')).toContain('addresses the user\'s question')
|
|
})
|
|
|
|
it('should resolve i18n keys for builtin metrics', () => {
|
|
expect(getDefaultMetricDescriptionI18nKey('context-precision')).toBe('metrics.builtin.description.contextPrecision')
|
|
expect(getDefaultMetricDescriptionI18nKey('ANSWER_RELEVANCY')).toBe('metrics.builtin.description.answerRelevancy')
|
|
})
|
|
|
|
it('should use translated content when translation key exists', () => {
|
|
const t = vi.fn((key: string, options?: { defaultValue?: string }) => {
|
|
if (key === 'metrics.builtin.description.faithfulness')
|
|
return '忠实性中文文案'
|
|
|
|
return options?.defaultValue ?? key
|
|
})
|
|
|
|
expect(getTranslatedMetricDescription(t as never, 'faithfulness')).toBe('忠实性中文文案')
|
|
expect(getTranslatedMetricDescription(t as never, 'latency', 'Latency fallback')).toBe('Latency fallback')
|
|
})
|
|
})
|