import assert from 'node:assert/strict'; import test from 'node:test'; import { createElement } from 'react'; import { renderToStaticMarkup } from 'react-dom/server'; import { FreeformFactPreview } from '../components/truthtrance'; const props = { target: 'target', leaderName: (id: string) => id, locationName: (id: string) => id, playerName: (id: string) => id, }; const preview = (text: string, scope: 'fact' | 'currentTurn' = 'fact') => renderToStaticMarkup(createElement(FreeformFactPreview, { ...props, scope, text })); void test('the editor previews No-Field and auction knowledge without revealing an answer', () => { const noField = preview('Do you have a concealed No-Field with printed value 3?'); assert.match(noField, /Recognized freeform question/); assert.match(noField, /you currently have a concealed No-Field with printed value 3/); const auction = preview('Is the current auction card you inspected a Shield?'); assert.match(auction, /Recognized freeform question/); assert.match(auction, /the current auction card you inspected is Shield/); assert.doesNotMatch(auction, /Your current game information establishes/); }); void test('the editor previews a mixed auction and force aggregate', () => { const text = 'Is the current auction card you inspected a Shield and do you have at least 3 forces in your reserves?'; const html = preview(text); assert.match(html, /Recognized freeform question/); assert.match(html, /the current auction card you inspected is Shield/); assert.match(html, /AND/); assert.match(html, /currently have at least 3 physical forces in your reserves/); assert.doesNotMatch(html, /Your current game information establishes/); assert.match(preview(text, 'currentTurn'), /not automatically interpreted/); }); void test('the editor leaves invalid or predictive inspection questions player-managed', () => { for (const text of [ 'Do you have a concealed No-Field with printed value 2?', 'Will the next auction card be a Shield?', ]) { const html = preview(text); assert.match(html, /not automatically interpreted/); assert.doesNotMatch(html, /Recognized freeform question/); } });