Files
sori.studio/tests/markdown-editor-history.test.js

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
})
})