import { describe, expect, it } from 'vitest'; import { youthCompilationIssueMessage, youthTaskIssueMessage, } from '@/pages/ImageCanvas/youth-issue-copy'; describe('youth AI Design issue copy', () => { it('uses code and path instead of exposing a compiler message', () => { const message = youthCompilationIssueMessage({ code: 'aspect_ratio_required', message: 'Choose an aspect ratio supported by the frozen route.', severity: 'blocker', path: 'output.aspect_ratio', }); expect(message).toBe('先选择作品形状。'); expect(message).not.toContain('frozen route'); }); it('keeps unknown compiler codes safe and actionable', () => { const message = youthCompilationIssueMessage({ code: 'future_compiler_rule', message: 'Internal compiler graph node 17 is invalid.', severity: 'blocker', }); expect(message).toBe('还需要调整一个关键设置,请打开“精细调整”看看。'); expect(message).not.toContain('compiler'); }); it('uses a calm fallback for unknown platform task failures', () => { const message = youthTaskIssueMessage({ code: 'future_provider_error', message: 'HTTP 422 from provider operation abc.', recoveryOwner: 'platform', }); expect(message).toBe('这次制作没有完成,请调整后再试。'); expect(message).not.toContain('HTTP'); }); it('explains unknown operator recovery without suggesting a duplicate run', () => { expect(youthTaskIssueMessage({ code: 'future_resolution_case', message: 'Manual reconciliation required.', recoveryOwner: 'operator', })).toBe('平台正在确认这次制作,不会重复制作或重复扣费。'); }); });