슬래시 메뉴 위치 계산 분리
This commit is contained in:
76
tests/markdown-slash-menu-position.test.js
Normal file
76
tests/markdown-slash-menu-position.test.js
Normal file
@@ -0,0 +1,76 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import test from 'node:test'
|
||||
import { calculateSlashMenuPosition } from '../lib/markdown-slash-menu-position.js'
|
||||
|
||||
test('슬래시 메뉴가 뷰포트 안에 있으면 후보 좌표를 유지한다', () => {
|
||||
assert.deepEqual(calculateSlashMenuPosition({
|
||||
top: 120,
|
||||
left: 40,
|
||||
anchorTop: 90,
|
||||
menuHeight: 200,
|
||||
menuWidth: 240,
|
||||
viewportHeight: 800,
|
||||
viewportWidth: 1000
|
||||
}), {
|
||||
top: 120,
|
||||
left: 40
|
||||
})
|
||||
})
|
||||
|
||||
test('슬래시 메뉴가 아래로 넘치면 기준 요소 위로 올린다', () => {
|
||||
assert.deepEqual(calculateSlashMenuPosition({
|
||||
top: 700,
|
||||
left: 40,
|
||||
anchorTop: 660,
|
||||
menuHeight: 200,
|
||||
menuWidth: 240,
|
||||
viewportHeight: 800,
|
||||
viewportWidth: 1000
|
||||
}), {
|
||||
top: 456,
|
||||
left: 40
|
||||
})
|
||||
})
|
||||
|
||||
test('위쪽 공간도 부족하면 뷰포트 하단 기준으로 보정한다', () => {
|
||||
assert.deepEqual(calculateSlashMenuPosition({
|
||||
top: 240,
|
||||
left: 40,
|
||||
anchorTop: 120,
|
||||
menuHeight: 700,
|
||||
menuWidth: 240,
|
||||
viewportHeight: 800,
|
||||
viewportWidth: 1000
|
||||
}), {
|
||||
top: 92,
|
||||
left: 40
|
||||
})
|
||||
})
|
||||
|
||||
test('슬래시 메뉴가 좌우로 넘치면 안쪽 여백 안으로 보정한다', () => {
|
||||
assert.deepEqual(calculateSlashMenuPosition({
|
||||
top: 120,
|
||||
left: 900,
|
||||
anchorTop: 90,
|
||||
menuHeight: 200,
|
||||
menuWidth: 240,
|
||||
viewportHeight: 800,
|
||||
viewportWidth: 1000
|
||||
}), {
|
||||
top: 120,
|
||||
left: 752
|
||||
})
|
||||
|
||||
assert.deepEqual(calculateSlashMenuPosition({
|
||||
top: 120,
|
||||
left: -20,
|
||||
anchorTop: 90,
|
||||
menuHeight: 200,
|
||||
menuWidth: 240,
|
||||
viewportHeight: 800,
|
||||
viewportWidth: 1000
|
||||
}), {
|
||||
top: 120,
|
||||
left: 8
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user