60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
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
|
|
})
|
|
})
|