Files
sori.studio/tests/markdown-block-context.test.js

69 lines
1.5 KiB
JavaScript

import assert from 'node:assert/strict'
import test from 'node:test'
import { resolveActiveBlockContext } from '../lib/markdown-block-context.js'
test('인용 옵션이 있는 블록 컨텍스트를 공통 인용 파서로 판별한다', () => {
assert.deepEqual(resolveActiveBlockContext([
'> {bg=purple}',
'> 첫 줄',
'> 둘째 줄',
'',
'다음 문단'
].join('\n'), 1), {
kind: 'quote',
startLine: 0,
endLine: 2,
quoteBackground: 'purple',
hasQuoteOptions: true
})
})
test('인용 옵션이 없는 블록 컨텍스트는 기본 배경을 사용한다', () => {
assert.deepEqual(resolveActiveBlockContext([
'이전 문단',
'> 첫 줄',
'> 둘째 줄'
].join('\n'), 2), {
kind: 'quote',
startLine: 1,
endLine: 2,
quoteBackground: 'gray',
hasQuoteOptions: false
})
})
test('아래쪽 코드 블록은 위의 리스트 줄 컨텍스트로 잡지 않는다', () => {
const markdown = [
':::gallery',
'![](/uploads/one.png)',
'![](/uploads/two.png)',
':::',
'',
':::callout emoji=none bg=blue',
'!!! 내용',
':::',
'',
'---',
'',
'',
'- 아아아',
'- 아아아아',
'- 아아아아',
'- 라라렘',
'',
'',
'```javascript',
'console.log("hello")',
'```'
].join('\n')
assert.equal(resolveActiveBlockContext(markdown, 15), null)
assert.deepEqual(resolveActiveBlockContext(markdown, 18), {
kind: 'code',
startLine: 18,
endLine: 20,
language: 'javascript',
showLineNumbers: false
})
})