Files
makelore/tests/unit/youth-issue-copy.test.ts

50 lines
1.7 KiB
TypeScript

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('平台正在确认这次制作,不会重复制作或重复扣费。');
});
});