/** * Tests for WordTemplateExporter */ const WordTemplateExporter = require('../src/wordTemplateExporter'); describe('WordTemplateExporter.preprocessMarkdownForWordExport', () => { test('removes HTML style blocks', () => { const input = ` # Heading `; const output = WordTemplateExporter.preprocessMarkdownForWordExport(input); expect(output).not.toContain(''); expect(output).not.toContain('sneh-a4-print'); expect(output).not.toContain('@media print'); expect(output).toContain('# Heading'); }); test('removes HTML comments outside style blocks', () => { const input = ` Hello world `; const output = WordTemplateExporter.preprocessMarkdownForWordExport(input); expect(output).not.toContain(''); expect(output).toContain('Hello world'); }); test('removes alignment div tags', () => { const input = `
Centered content
`; const output = WordTemplateExporter.preprocessMarkdownForWordExport(input); expect(output).not.toContain('
'); expect(output).not.toContain('
'); expect(output).toContain('Centered content'); }); test('preserves regular markdown content', () => { const input = `# Title | A | B | |---|---| | 1 | 2 | `; const output = WordTemplateExporter.preprocessMarkdownForWordExport(input); expect(output).toBe(input); }); test('handles content with no HTML artifacts', () => { const input = 'Plain text paragraph.'; const output = WordTemplateExporter.preprocessMarkdownForWordExport(input); expect(output).toBe(input); }); test('preserves HTML artifacts inside fenced code blocks', () => { const input = `# Title \`\`\`
text
\`\`\` After code. `; const output = WordTemplateExporter.preprocessMarkdownForWordExport(input); expect(output).toContain(''); expect(output).toContain(''); expect(output).toContain('
text
'); expect(output).toContain('After code.'); }); test('preserves HTML artifacts inside inline code', () => { const input = 'Use `
` for alignment.'; const output = WordTemplateExporter.preprocessMarkdownForWordExport(input); expect(output).toContain('`
`'); }); test('handles uppercase tags and unquoted attributes', () => { const input = `
Centered
`; const output = WordTemplateExporter.preprocessMarkdownForWordExport(input); expect(output).not.toContain(''); expect(output).toContain('Centered'); }); test('handles single-quoted attributes', () => { const input = `
Right
`; const output = WordTemplateExporter.preprocessMarkdownForWordExport(input); expect(output).not.toContain(''); expect(output).toContain('Right'); }); test('removes non-alignment div tags without leaving malformed HTML', () => { const input = `
Note text
`; const output = WordTemplateExporter.preprocessMarkdownForWordExport(input); expect(output).not.toContain(''); expect(output).toContain('Note text'); }); test('returns non-string input unchanged', () => { expect(WordTemplateExporter.preprocessMarkdownForWordExport(null)).toBeNull(); expect(WordTemplateExporter.preprocessMarkdownForWordExport(123)).toBe(123); }); });