| 1 | import { describe, expect, it } from 'vitest' |
| 2 | import { buildImagePromptGenerationMessages } from '../../../src/main/agent-runtime/prompt' |
| 3 | |
| 4 | const messageText = (message: { content: unknown }): string => |
| 5 | typeof message.content === 'string' ? message.content : JSON.stringify(message.content) |
| 6 | |
| 7 | describe('image prompt composer', () => { |
| 8 | it('loads the Chinese static instructions from the raw Markdown template', () => { |
| 9 | const [system, user] = buildImagePromptGenerationMessages({ |
| 10 | locale: 'zh', |
| 11 | userPrompt: '晨雾中的湖畔小屋', |
| 12 | pageTitle: '晨间复盘', |
| 13 | pageOutline: '用平静氛围引出一天的重点', |
| 14 | pageHtml: '<main class="ppt-page-content">{{preserve-me}}</main>' |
| 15 | }) |
| 16 | |
| 17 | expect(messageText(system)).toContain('PPT 生图描述改写助手') |
| 18 | expect(messageText(system)).toContain('避免任何可读文字、标题、logo、水印') |
| 19 | expect(messageText(system)).not.toMatch(/\{\{[^}]+\}\}/) |
| 20 | expect(messageText(user)).toContain('【页面标题】\n晨间复盘') |
| 21 | expect(messageText(user)).toContain('【用户想生成的画面】\n晨雾中的湖畔小屋') |
| 22 | expect(messageText(user)).toContain('{{preserve-me}}') |
| 23 | }) |
| 24 | |
| 25 | it('keeps the English request shape and fallback wording stable', () => { |
| 26 | const [system, user] = buildImagePromptGenerationMessages({ |
| 27 | locale: 'en', |
| 28 | userPrompt: '', |
| 29 | pageTitle: '', |
| 30 | pageOutline: '', |
| 31 | pageHtml: '<section>slide</section>' |
| 32 | }) |
| 33 | |
| 34 | expect(messageText(system)).toContain('Do not summarize the style.') |
| 35 | expect(messageText(user)).toContain('[Slide title]\n(untitled)') |
| 36 | expect(messageText(user)).toContain('[Slide outline]\n(no outline)') |
| 37 | expect(messageText(user)).toContain( |
| 38 | '(User did not provide one. Infer a visual subject from the current slide.)' |
| 39 | ) |
| 40 | }) |
| 41 | }) |
| 42 |