에디터 히스토리 로직 분리
This commit is contained in:
59
tests/markdown-editor-history.test.js
Normal file
59
tests/markdown-editor-history.test.js
Normal file
@@ -0,0 +1,59 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import test from 'node:test'
|
||||
import {
|
||||
createEditorHistoryEntry,
|
||||
getEditorHistoryEntrySelection,
|
||||
getEditorHistoryEntryValue
|
||||
} from '../lib/markdown-editor-history.js'
|
||||
|
||||
test('히스토리 항목은 본문 길이 안으로 선택 범위를 보정한다', () => {
|
||||
assert.deepEqual(createEditorHistoryEntry('본문', {
|
||||
start: -10,
|
||||
end: 99
|
||||
}), {
|
||||
value: '본문',
|
||||
selectionStart: 0,
|
||||
selectionEnd: 2
|
||||
})
|
||||
})
|
||||
|
||||
test('히스토리 항목은 유효하지 않은 선택 값을 0으로 처리한다', () => {
|
||||
assert.deepEqual(createEditorHistoryEntry('abc', {
|
||||
start: Number.NaN,
|
||||
end: Infinity
|
||||
}), {
|
||||
value: 'abc',
|
||||
selectionStart: 0,
|
||||
selectionEnd: 0
|
||||
})
|
||||
})
|
||||
|
||||
test('문자열 히스토리 항목은 레거시 본문 값으로 읽는다', () => {
|
||||
assert.equal(getEditorHistoryEntryValue('legacy'), 'legacy')
|
||||
assert.equal(getEditorHistoryEntrySelection('legacy', 'legacy'), null)
|
||||
})
|
||||
|
||||
test('객체 히스토리 항목의 본문과 선택 위치를 읽는다', () => {
|
||||
const entry = {
|
||||
value: 'abcdef',
|
||||
selectionStart: 2,
|
||||
selectionEnd: 4
|
||||
}
|
||||
|
||||
assert.equal(getEditorHistoryEntryValue(entry), 'abcdef')
|
||||
assert.deepEqual(getEditorHistoryEntrySelection(entry, 'abcdef'), {
|
||||
start: 2,
|
||||
end: 4
|
||||
})
|
||||
})
|
||||
|
||||
test('복원 선택 위치는 복원된 본문 길이 안으로 보정한다', () => {
|
||||
assert.deepEqual(getEditorHistoryEntrySelection({
|
||||
value: 'abcdef',
|
||||
selectionStart: 2,
|
||||
selectionEnd: 99
|
||||
}, 'abc'), {
|
||||
start: 2,
|
||||
end: 3
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user