返回 oh-my-ppt
image-prompt.test.ts
根目录 / tests / unit / agent-runtime / image-prompt.test.ts
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
42 lines TYPESCRIPT