atagen

malice

public
Star0
Watch0
e153508681c5c91d170d860a395f773ef22afa18
2
ssh://brewery@pls.lobotomise.me:33/atagen/malice.git

Blame: web/test/markdown.test.ts

6d6a4c34bdc1atagen2026-10-24 06:51 UTC1
import assert from 'node:assert/strict';
6d6a4c34bdc1atagen2026-10-24 06:51 UTC2
import { test } from 'node:test';
6d6a4c34bdc1atagen2026-10-24 06:51 UTC3
import { formatBody, insideOpenFence } from '../src/lib/markdown.ts';
6d6a4c34bdc1atagen2026-10-24 06:51 UTC4
6d6a4c34bdc1atagen2026-10-24 06:51 UTC5
test('plain text stays unformatted', () => {
6d6a4c34bdc1atagen2026-10-24 06:51 UTC6
  assert.equal(formatBody('hello\nthere', [], true), null);
6d6a4c34bdc1atagen2026-10-24 06:51 UTC7
  assert.equal(formatBody('**bold**', [], false), null);
6d6a4c34bdc1atagen2026-10-24 06:51 UTC8
});
6d6a4c34bdc1atagen2026-10-24 06:51 UTC9
6d6a4c34bdc1atagen2026-10-24 06:51 UTC10
test('renders the common chat markdown', () => {
6d6a4c34bdc1atagen2026-10-24 06:51 UTC11
  assert.equal(formatBody('*it* **bold** ~~gone~~', [], true), '<p><em>it</em> <strong>bold</strong> <del>gone</del></p>');
e822c659890fatagen2026-10-25 02:37 UTC12
  assert.equal(formatBody('> quoted\nstill', [], true), '<blockquote>quoted<br></blockquote>still');
6d6a4c34bdc1atagen2026-10-24 06:51 UTC13
  assert.equal(formatBody('run `ls <x>`', [], true), '<p>run <code>ls &lt;x&gt;</code></p>');
6d6a4c34bdc1atagen2026-10-24 06:51 UTC14
  assert.equal(
6d6a4c34bdc1atagen2026-10-24 06:51 UTC15
    formatBody('```js\nlet a = "<b>";\n```', [], true),
6d6a4c34bdc1atagen2026-10-24 06:51 UTC16
    '<pre><code class="language-js">let a = &quot;&lt;b&gt;&quot;;\n</code></pre>'
6d6a4c34bdc1atagen2026-10-24 06:51 UTC17
  );
6d6a4c34bdc1atagen2026-10-24 06:51 UTC18
});
6d6a4c34bdc1atagen2026-10-24 06:51 UTC19
6d6a4c34bdc1atagen2026-10-24 06:51 UTC20
test('raw html is escaped, not passed through', () => {
6d6a4c34bdc1atagen2026-10-24 06:51 UTC21
  assert.equal(formatBody('<b>hi</b> **x**', [], true), '<p>&lt;b&gt;hi&lt;/b&gt; <strong>x</strong></p>');
e822c659890fatagen2026-10-25 02:37 UTC22
  assert.equal(formatBody('<script>alert(1)</script>', [], true), null);
6d6a4c34bdc1atagen2026-10-24 06:51 UTC23
});
6d6a4c34bdc1atagen2026-10-24 06:51 UTC24
6d6a4c34bdc1atagen2026-10-24 06:51 UTC25
test('enter stays a newline inside an open fence', () => {
6d6a4c34bdc1atagen2026-10-24 06:51 UTC26
  assert.equal(insideOpenFence('```\ncode', 8), true);
6d6a4c34bdc1atagen2026-10-24 06:51 UTC27
  assert.equal(insideOpenFence('```\ncode\n```\n', 13), false);
6d6a4c34bdc1atagen2026-10-24 06:51 UTC28
  assert.equal(insideOpenFence('say ``` mid line', 16), false);
6d6a4c34bdc1atagen2026-10-24 06:51 UTC29
});