Files
sori.studio/tests/useAdminMarkdownSlashMenu.test.js

75 lines
2.6 KiB
JavaScript

import assert from 'node:assert/strict'
import test from 'node:test'
import { useAdminMarkdownSlashMenu } from '../composables/useAdminMarkdownSlashMenu.js'
test('관리자 Markdown 슬래시 메뉴 상태는 열기와 초기화를 관리한다', () => {
const slashMenu = useAdminMarkdownSlashMenu()
slashMenu.openLiveSlashMenu(2, 'image')
assert.equal(slashMenu.liveSlashVisible.value, true)
assert.equal(slashMenu.liveSlashSourceLine.value, 2)
assert.equal(slashMenu.liveSlashQuery.value, 'image')
assert.equal(slashMenu.visibleLiveSlashCommands.value[0]?.id, 'image')
slashMenu.clearLiveSlashState()
assert.equal(slashMenu.liveSlashVisible.value, false)
assert.equal(slashMenu.liveSlashSourceLine.value, null)
assert.equal(slashMenu.liveSlashQuery.value, '')
assert.equal(slashMenu.liveSlashHighlightedIndex.value, 0)
})
test('관리자 Markdown 슬래시 메뉴 억제 줄은 추가와 해제를 분리한다', () => {
const slashMenu = useAdminMarkdownSlashMenu()
slashMenu.suppressLiveSlashLine(3, '/image')
slashMenu.suppressLiveSlashLine(Number.NaN)
assert.equal(slashMenu.isLiveSlashLineSuppressed(3), true)
assert.equal(slashMenu.isLiveSlashLineSuppressed(3, '/image'), true)
assert.equal(slashMenu.isLiveSlashLineSuppressed(3, '/'), false)
assert.deepEqual(slashMenu.liveSlashSuppressedLineList.value, [3])
assert.deepEqual(slashMenu.liveSlashSuppressedLineValues.value, {
3: '/image'
})
slashMenu.releaseLiveSlashLine(3)
assert.equal(slashMenu.isLiveSlashLineSuppressed(3), false)
assert.deepEqual(slashMenu.liveSlashSuppressedLineList.value, [])
assert.deepEqual(slashMenu.liveSlashSuppressedLineValues.value, {})
})
test('관리자 Markdown 슬래시 메뉴 하이라이트는 검색어와 명령 개수에 맞춰 보정한다', () => {
const slashMenu = useAdminMarkdownSlashMenu()
slashMenu.liveSlashHighlightedIndex.value = 9
slashMenu.clampLiveSlashHighlightedIndex(3)
assert.equal(slashMenu.liveSlashHighlightedIndex.value, 2)
slashMenu.resetLiveSlashHighlightedIndex()
assert.equal(slashMenu.liveSlashHighlightedIndex.value, 0)
})
test('관리자 Markdown 슬래시 메뉴 키보드 탐색 상태는 타이머로 정리한다', async () => {
const slashMenu = useAdminMarkdownSlashMenu()
slashMenu.startLiveSlashKeyboardNavigation(10)
assert.equal(slashMenu.liveSlashKeyboardNav.value, true)
await new Promise((resolve) => {
globalThis.setTimeout(resolve, 20)
})
assert.equal(slashMenu.liveSlashKeyboardNav.value, false)
slashMenu.startLiveSlashKeyboardNavigation(100)
slashMenu.stopLiveSlashKeyboardNavigation()
assert.equal(slashMenu.liveSlashKeyboardNav.value, false)
})