| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /**
- * 指标变化规则纯函数单测
- * 规则来源:design.md §8 变化颜色与箭头规则表
- */
- import * as ic from '@/utils/indicator-change'
- describe('indicator-change 变化规则', () => {
- describe('resolveChangeStyle(goodDirection, movement)', () => {
- test('higher_is_better + up → 改善/绿 ↑', () => {
- const s = ic.resolveChangeStyle('higher_is_better', 'up')
- expect(s.trendLabel).toBe('改善')
- expect(s.cssClass).toBe('impr-up')
- expect(s.arrow).toBe('↑')
- })
- test('higher_is_better + down → 恶化/红 ↓', () => {
- const s = ic.resolveChangeStyle('higher_is_better', 'down')
- expect(s.trendLabel).toBe('恶化')
- expect(s.cssClass).toBe('worst-down')
- expect(s.arrow).toBe('↓')
- })
- test('lower_is_better + up → 恶化/红 ↑ (如炎症水平上升)', () => {
- const s = ic.resolveChangeStyle('lower_is_better', 'up')
- expect(s.trendLabel).toBe('恶化')
- expect(s.cssClass).toBe('worst-up')
- expect(s.arrow).toBe('↑')
- })
- test('lower_is_better + down → 改善/绿 ↓ (如炎症水平下降)', () => {
- const s = ic.resolveChangeStyle('lower_is_better', 'down')
- expect(s.trendLabel).toBe('改善')
- expect(s.cssClass).toBe('impr-down')
- expect(s.arrow).toBe('↓')
- })
- test('neutral + up/down → 中性/灰', () => {
- const up = ic.resolveChangeStyle('neutral', 'up')
- const down = ic.resolveChangeStyle('neutral', 'down')
- expect(up.trendLabel).toBe('中性')
- expect(up.cssClass).toBe('neutral-up')
- expect(down.cssClass).toBe('neutral-down')
- })
- test('flat → 无变化/灰 →', () => {
- const s = ic.resolveChangeStyle('higher_is_better', 'flat')
- expect(s.trendLabel).toBe('中性')
- expect(s.cssClass).toBe('flat')
- expect(s.arrow).toBe('→')
- })
- test('未知 goodDirection 兜底为中性', () => {
- const s = ic.resolveChangeStyle('unknown_direction', 'up')
- expect(s.cssClass).toBe('neutral-up')
- })
- })
- describe('formatDelta(delta, deltaPct)', () => {
- test('正 delta 显示 + 并带百分比', () => {
- expect(ic.formatDelta(2, 100)).toBe('+2 (+100%)')
- })
- test('负 delta 显示 -', () => {
- expect(ic.formatDelta(-1.5, -30)).toBe('-1.5 (-30%)')
- })
- test('null 安全', () => {
- expect(ic.formatDelta(null, null)).toBe('--')
- expect(ic.formatDelta(0, 0)).toBe('0 (0%)')
- })
- })
- })
|