75 lines
2.6 KiB
JavaScript
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)
|
|
})
|