diff --git a/test/sdlc-plan-assets.test.js b/test/sdlc-plan-assets.test.js new file mode 100644 index 0000000..f9b07b3 --- /dev/null +++ b/test/sdlc-plan-assets.test.js @@ -0,0 +1,36 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { + assertNeutralPrompt, + assertTemplateSections, + readPrompt, + readTemplate, +} from './helpers/prompt-doc.js'; + +const prompt = readPrompt('sdlc-plan'); +const template = readTemplate('requirement-issue'); +const SECTIONS = ['總覽', '背景', '目標', '非目標', '領域名詞表', '文件', '驗收標準', '影響範圍', '未決事項']; + +test('plan prompt 使用文件段落並維持繁體中文', () => { + assertNeutralPrompt(prompt, 'sdlc-plan'); + assert.match(prompt, /領域名詞表、文件、驗收標準/); + assert.match(prompt, /全程使用繁體中文/); + assert.doesNotMatch(prompt, /流程圖/); +}); + +test('文件段落只允許 analyze 佔位或抽象節點與邊', () => { + assert.match(prompt, /`待 \/sdlc-analyze 產生`/); + assert.match(prompt, /抽象節點與邊的文字描述/); + assert.match(prompt, /不寫具體圖形語法/); + assert.match(prompt, /禁止產生 HTML、SVG、manifest、截圖、附件或任何平台 preview/); +}); + +test('plan 重跑沿用同標題議題,不建立重複議題', () => { + assert.match(prompt, /重跑以標題查重,不建立重複議題/); +}); + +test('需求議題模板與 plan prompt 使用相同九段落', () => { + assertTemplateSections(template, SECTIONS); + assert.match(template, /\{\{文件\}\}/); + assert.doesNotMatch(template, /^## 流程圖$/m); +});