import { test } from 'node:test'; import assert from 'node:assert/strict'; import { chapterQuality, requireChapterContent } from '../src/publications/chapter-quality.ts'; test('quality counts visible Unicode characters, ignores markup and rejects empty chapters', () => { assert.equal(chapterQuality(' δΈ­ζ–‡ πŸ˜€ \n', 'text/plain').characters, 3); assert.equal(chapterQuality('

δΈ­ ζ–‡ & πŸ˜€

', 'text/html').characters, 4); for (const body of [' ', '\u200b\u2060', '

 

', '']) { assert.throws(() => requireChapterContent(body, 'text/html'), { code: 'EMPTY_CHAPTER' }); } assert.equal(requireChapterContent('', 'text/html').images, 1); });