관리자 미디어 업로드 규칙 분리
This commit is contained in:
@@ -6,9 +6,12 @@ import {
|
||||
buildMediaPickerPageItems,
|
||||
buildMediaPickerRangeLabel,
|
||||
buildMediaPickerUploadHint,
|
||||
createMediaPickerFetchQuery,
|
||||
createMediaUploadFormData,
|
||||
createMediaBlockMarkdown,
|
||||
createDefaultMediaPickerPagination,
|
||||
createSelectedMediaInsertPlan,
|
||||
filterImageUploadFiles,
|
||||
findUploadSizeLimitError,
|
||||
formatMediaFileSize,
|
||||
getGallerySelectionOrder,
|
||||
@@ -20,9 +23,12 @@ import {
|
||||
isGalleryMediaPickerTarget,
|
||||
isMediaItemSelectableForTarget,
|
||||
isUploadFileAllowedForMediaTarget,
|
||||
normalizeMediaUploadFiles,
|
||||
normalizeMediaPickerPage,
|
||||
normalizeMediaPickerResponse,
|
||||
resolveImageUploadInsertTarget,
|
||||
resolveSelectedMediaItems,
|
||||
resolveUploadedMediaFiles,
|
||||
resolveUploadFetchErrorMessage,
|
||||
toggleMediaSelectionState
|
||||
} from '../lib/markdown-editor-media.js'
|
||||
@@ -145,6 +151,36 @@ test('미디어 선택 적용 버튼 상태를 계산한다', () => {
|
||||
})
|
||||
})
|
||||
|
||||
test('미디어 선택 목록 조회 query를 계산한다', () => {
|
||||
assert.deepEqual(createMediaPickerFetchQuery({
|
||||
page: 2,
|
||||
pageSize: 50,
|
||||
kind: 'image',
|
||||
searchQuery: ' 스크린샷 '
|
||||
}), {
|
||||
paged: '1',
|
||||
tab: 'library',
|
||||
page: 2,
|
||||
pageSize: 50,
|
||||
kind: 'image',
|
||||
search: '스크린샷'
|
||||
})
|
||||
|
||||
assert.deepEqual(createMediaPickerFetchQuery({
|
||||
page: 1,
|
||||
pageSize: 50,
|
||||
kind: 'all',
|
||||
searchQuery: ' '
|
||||
}), {
|
||||
paged: '1',
|
||||
tab: 'library',
|
||||
page: 1,
|
||||
pageSize: 50,
|
||||
kind: 'all',
|
||||
search: undefined
|
||||
})
|
||||
})
|
||||
|
||||
test('미디어 항목으로 fenced 미디어 블록을 만든다', () => {
|
||||
assert.deepEqual(createMediaBlockMarkdown('video', {
|
||||
url: '/uploads/a.mp4',
|
||||
@@ -252,6 +288,39 @@ test('선택 미디어 삽입 계획은 적용할 항목이 없으면 무시한
|
||||
})
|
||||
})
|
||||
|
||||
test('업로드 입력 파일 목록을 배열과 FormData로 정규화한다', () => {
|
||||
const imageFile = new File(['a'], 'a.png', { type: 'image/png' })
|
||||
const textFile = new File(['b'], 'b.txt', { type: 'text/plain' })
|
||||
const files = normalizeMediaUploadFiles([imageFile, null, textFile])
|
||||
|
||||
assert.deepEqual(files, [imageFile, textFile])
|
||||
|
||||
const formData = createMediaUploadFormData(files)
|
||||
assert.deepEqual(formData.getAll('files'), [imageFile, textFile])
|
||||
})
|
||||
|
||||
test('업로드 응답과 이미지 업로드 삽입 대상을 계산한다', () => {
|
||||
const uploadedFiles = [{ url: '/uploads/a.png' }]
|
||||
|
||||
assert.deepEqual(resolveUploadedMediaFiles({ files: uploadedFiles }), uploadedFiles)
|
||||
assert.deepEqual(resolveUploadedMediaFiles({}), [])
|
||||
|
||||
assert.equal(resolveImageUploadInsertTarget([
|
||||
new File(['a'], 'a.png', { type: 'image/png' })
|
||||
]), 'image')
|
||||
assert.equal(resolveImageUploadInsertTarget([
|
||||
new File(['a'], 'a.png', { type: 'image/png' }),
|
||||
new File(['b'], 'b.png', { type: 'image/png' })
|
||||
]), 'gallery')
|
||||
})
|
||||
|
||||
test('업로드 파일 목록에서 이미지만 골라낸다', () => {
|
||||
const imageFile = new File(['a'], 'a.png', { type: 'image/png' })
|
||||
const textFile = new File(['b'], 'b.txt', { type: 'text/plain' })
|
||||
|
||||
assert.deepEqual(filterImageUploadFiles([imageFile, textFile]), [imageFile])
|
||||
})
|
||||
|
||||
test('갤러리 선택 순서를 선택 URL 순서로 반환한다', () => {
|
||||
assert.equal(getGallerySelectionOrder(['/a.png', '/b.png'], '/b.png'), 2)
|
||||
assert.equal(getGallerySelectionOrder(['/a.png'], '/b.png'), 0)
|
||||
|
||||
Reference in New Issue
Block a user