122 lines
3.7 KiB
JavaScript
122 lines
3.7 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
import {
|
|
createPreviewAppendParagraphValue,
|
|
createPreviewDeleteLineValue,
|
|
createPreviewExtractGalleryImageValue,
|
|
createPreviewGalleryReorderValue,
|
|
createPreviewImagesMergeValue,
|
|
createPreviewInsertAfterLineResult,
|
|
createPreviewInsertImageToGalleryValue,
|
|
createPreviewMergeWithPreviousLineValue,
|
|
createPreviewRemoveGalleryImageResult,
|
|
parseEditorImageLine,
|
|
replacePreviewLineRangeValue
|
|
} from '../lib/markdown-editor-preview-blocks.js'
|
|
|
|
test('단독 이미지 URL도 에디터 이미지 줄로 해석한다', () => {
|
|
assert.deepEqual(parseEditorImageLine('/uploads/posts/sample.png'), {
|
|
url: '/uploads/posts/sample.png',
|
|
width: 'regular',
|
|
pixelWidth: null,
|
|
caption: '',
|
|
useAlt: false
|
|
})
|
|
|
|
assert.equal(parseEditorImageLine('일반 텍스트'), null)
|
|
})
|
|
|
|
test('줄 범위 교체와 갤러리 순서 변경 값을 만든다', () => {
|
|
assert.equal(replacePreviewLineRangeValue({
|
|
value: 'a\nb\nc',
|
|
startLine: 1,
|
|
endLine: 1,
|
|
replacementLines: ['B', 'BB']
|
|
}), 'a\nB\nBB\nc')
|
|
|
|
assert.equal(createPreviewGalleryReorderValue({
|
|
value: '위\n:::gallery\n\n\n:::\n아래',
|
|
startLine: 1,
|
|
endLine: 4,
|
|
images: [
|
|
{ url: '/b.png', caption: '둘' },
|
|
{ url: '/a.png' }
|
|
]
|
|
}), '위\n:::gallery\n\n\n:::\n아래')
|
|
})
|
|
|
|
test('두 단일 이미지 줄을 드래그 원본 우선 순서로 갤러리 병합한다', () => {
|
|
assert.equal(createPreviewImagesMergeValue({
|
|
value: '앞\n\n중간\n\n뒤',
|
|
sourceLine: 3,
|
|
targetLine: 1
|
|
}), '앞\n:::gallery\n\n\n:::\n뒤')
|
|
})
|
|
|
|
test('단일 이미지 줄을 기존 갤러리에 삽입하고 원본 줄을 제거한다', () => {
|
|
assert.equal(createPreviewInsertImageToGalleryValue({
|
|
value: '\n본문\n:::gallery\n\n\n:::\n끝',
|
|
sourceLine: 0,
|
|
startLine: 2,
|
|
endLine: 5,
|
|
targetIndex: 1
|
|
}), '본문\n:::gallery\n\n\n\n:::\n끝')
|
|
})
|
|
|
|
test('갤러리 이미지 삭제는 남은 개수에 따라 갤러리 또는 단일 이미지로 바꾼다', () => {
|
|
assert.deepEqual(createPreviewRemoveGalleryImageResult({
|
|
value: '위\n:::gallery\n\n\n:::\n아래',
|
|
startLine: 1,
|
|
endLine: 4,
|
|
imageIndex: 0
|
|
}), {
|
|
value: '위\n\n아래',
|
|
focusLine: 1
|
|
})
|
|
|
|
assert.deepEqual(createPreviewRemoveGalleryImageResult({
|
|
value: '위\n:::gallery\n\n\n\n:::\n아래',
|
|
startLine: 1,
|
|
endLine: 5,
|
|
imageIndex: 1
|
|
}), {
|
|
value: '위\n:::gallery\n\n\n:::\n아래',
|
|
focusLine: 2
|
|
})
|
|
})
|
|
|
|
test('갤러리 이미지를 블록 사이로 분리한다', () => {
|
|
assert.equal(createPreviewExtractGalleryImageValue({
|
|
value: '위\n:::gallery\n\n\n\n:::\n아래',
|
|
startLine: 1,
|
|
endLine: 5,
|
|
imageIndex: 1,
|
|
insertBeforeLine: 6
|
|
}), '위\n:::gallery\n\n\n:::\n아래\n')
|
|
})
|
|
|
|
test('문단 추가·지정 줄 삽입·삭제·이전 줄 병합 값을 만든다', () => {
|
|
assert.equal(createPreviewAppendParagraphValue('a\n\n'), 'a\n\n')
|
|
assert.equal(createPreviewAppendParagraphValue(''), '')
|
|
|
|
assert.deepEqual(createPreviewInsertAfterLineResult({
|
|
value: 'a\nb',
|
|
afterLine: 0,
|
|
lines: ['x', 'y']
|
|
}), {
|
|
value: 'a\nx\ny\nb',
|
|
focusLine: 1
|
|
})
|
|
|
|
assert.equal(createPreviewDeleteLineValue({
|
|
value: 'a\nb\nc',
|
|
lineIndex: 1
|
|
}), 'a\nc')
|
|
|
|
assert.equal(createPreviewMergeWithPreviousLineValue({
|
|
value: 'a\nb\nc',
|
|
lineIndex: 1,
|
|
mergedLine: 'ab'
|
|
}), 'ab\nc')
|
|
})
|