슬래시 명령 로직 분리
This commit is contained in:
73
tests/markdown-slash-commands.test.js
Normal file
73
tests/markdown-slash-commands.test.js
Normal file
@@ -0,0 +1,73 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import test from 'node:test'
|
||||
import {
|
||||
getSlashCommandFocusTarget,
|
||||
insertMarkdownLinesAtSlashTarget,
|
||||
isMediaSlashAction,
|
||||
parseSlashInput,
|
||||
resolveSlashCommand,
|
||||
shouldIgnorePendingMediaSlashCommit
|
||||
} from '../lib/markdown-slash-commands.js'
|
||||
|
||||
test('슬래시 입력은 단일 줄 명령만 파싱한다', () => {
|
||||
assert.deepEqual(parseSlashInput('/image'), {
|
||||
query: 'image',
|
||||
raw: '/image'
|
||||
})
|
||||
assert.equal(parseSlashInput(' /image'), null)
|
||||
assert.equal(parseSlashInput('/image\n다음 줄'), null)
|
||||
})
|
||||
|
||||
test('정확한 슬래시 명령과 미디어 액션을 판별한다', () => {
|
||||
assert.equal(resolveSlashCommand('image')?.action, 'media-image')
|
||||
assert.equal(resolveSlashCommand('img')?.id, 'image')
|
||||
assert.equal(isMediaSlashAction('media-image'), true)
|
||||
assert.equal(isMediaSlashAction('lines'), false)
|
||||
})
|
||||
|
||||
test('미디어 슬래시 명령 지연 commit은 같은 줄 slash 원문일 때만 무시한다', () => {
|
||||
assert.equal(shouldIgnorePendingMediaSlashCommit({
|
||||
pendingInsertLine: 3,
|
||||
startLine: 3,
|
||||
replacementLines: ['/image']
|
||||
}), true)
|
||||
assert.equal(shouldIgnorePendingMediaSlashCommit({
|
||||
pendingInsertLine: 3,
|
||||
startLine: 4,
|
||||
replacementLines: ['/image']
|
||||
}), false)
|
||||
assert.equal(shouldIgnorePendingMediaSlashCommit({
|
||||
pendingInsertLine: 3,
|
||||
startLine: 3,
|
||||
replacementLines: ['본문']
|
||||
}), false)
|
||||
})
|
||||
|
||||
test('슬래시 명령 줄에 미디어를 삽입할 때 원문 줄을 교체한다', () => {
|
||||
const markdown = [
|
||||
'첫 줄',
|
||||
'/image',
|
||||
'마지막 줄'
|
||||
].join('\n')
|
||||
|
||||
assert.equal(insertMarkdownLinesAtSlashTarget(markdown, 1, ['']), [
|
||||
'첫 줄',
|
||||
'',
|
||||
'마지막 줄'
|
||||
].join('\n'))
|
||||
})
|
||||
|
||||
test('일반 줄에는 지정 위치 앞에 마크다운 줄을 삽입한다', () => {
|
||||
assert.equal(insertMarkdownLinesAtSlashTarget('첫 줄\n마지막 줄', 1, ['중간 줄']), '첫 줄\n중간 줄\n마지막 줄')
|
||||
})
|
||||
|
||||
test('슬래시 명령 포커스 대상은 단일 줄과 블록 삽입을 구분한다', () => {
|
||||
assert.deepEqual(getSlashCommandFocusTarget(2, ['## ']), {
|
||||
line: 2,
|
||||
offset: 3
|
||||
})
|
||||
assert.deepEqual(getSlashCommandFocusTarget(2, ['```', '', '```']), {
|
||||
line: 3,
|
||||
offset: 0
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user