라이브 미리보기 블록 계산 분리
This commit is contained in:
121
tests/markdown-editor-preview-blocks.test.js
Normal file
121
tests/markdown-editor-preview-blocks.test.js
Normal file
@@ -0,0 +1,121 @@
|
||||
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')
|
||||
})
|
||||
Reference in New Issue
Block a user