77 lines
1.6 KiB
JavaScript
77 lines
1.6 KiB
JavaScript
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
|
|
})
|
|
})
|