에디터 미디어 업로드 검증 로직 분리
This commit is contained in:
@@ -2,6 +2,7 @@ import assert from 'node:assert/strict'
|
||||
import test from 'node:test'
|
||||
import {
|
||||
createMediaBlockMarkdown,
|
||||
findUploadSizeLimitError,
|
||||
formatMediaFileSize,
|
||||
getGallerySelectionOrder,
|
||||
getMediaItemKind,
|
||||
@@ -9,8 +10,10 @@ import {
|
||||
isMediaItemSelectableForTarget,
|
||||
isUploadFileAllowedForMediaTarget,
|
||||
resolveSelectedMediaItems,
|
||||
resolveUploadFetchErrorMessage,
|
||||
toggleMediaSelectionState
|
||||
} from '../lib/markdown-editor-media.js'
|
||||
import { buildDefaultUploadSizeLimits } from '../lib/upload-size-limit.js'
|
||||
|
||||
test('미디어 파일 크기를 표시 문자열로 변환한다', () => {
|
||||
assert.equal(formatMediaFileSize(512), '512 B')
|
||||
@@ -127,3 +130,58 @@ test('선택된 URL 순서대로 미디어 항목을 해석한다', () => {
|
||||
{ url: '/b.png', source: 'list' }
|
||||
])
|
||||
})
|
||||
|
||||
test('업로드 API 오류를 사용자 메시지로 변환한다', () => {
|
||||
assert.equal(resolveUploadFetchErrorMessage({
|
||||
data: {
|
||||
message: ' 서버 오류 '
|
||||
}
|
||||
}), '서버 오류')
|
||||
assert.equal(resolveUploadFetchErrorMessage({ statusCode: 413 }), '업로드 가능한 파일 크기를 초과했습니다.')
|
||||
assert.equal(resolveUploadFetchErrorMessage(new Error('네트워크 오류')), '네트워크 오류')
|
||||
assert.equal(resolveUploadFetchErrorMessage({}), '파일 업로드에 실패했습니다.')
|
||||
})
|
||||
|
||||
test('업로드 파일 한도 초과 메시지를 계산한다', () => {
|
||||
const uploadSizeLimits = buildDefaultUploadSizeLimits({
|
||||
image: 100
|
||||
})
|
||||
|
||||
assert.equal(findUploadSizeLimitError({
|
||||
files: [
|
||||
{ name: 'a.png', type: 'image/png', size: 10 },
|
||||
{ name: 'b.png', type: 'image/png', size: 10 }
|
||||
],
|
||||
maxFileCount: 1,
|
||||
maxTotalSize: 1000,
|
||||
uploadSizeLimits
|
||||
}), '한 번에 업로드할 수 있는 파일은 최대 1개입니다.')
|
||||
|
||||
assert.equal(findUploadSizeLimitError({
|
||||
files: [
|
||||
{ name: 'a.png', type: 'image/png', size: 60 },
|
||||
{ name: 'b.png', type: 'image/png', size: 60 }
|
||||
],
|
||||
maxFileCount: 5,
|
||||
maxTotalSize: 100,
|
||||
uploadSizeLimits
|
||||
}), '한 번에 업로드 가능한 전체 용량을 초과했습니다. (최대 100B)')
|
||||
|
||||
assert.equal(findUploadSizeLimitError({
|
||||
files: [
|
||||
{ name: 'a.png', type: 'image/png', size: 101 }
|
||||
],
|
||||
maxFileCount: 5,
|
||||
maxTotalSize: 1000,
|
||||
uploadSizeLimits
|
||||
}), '파일 크기가 너무 큽니다. (최대 100B)')
|
||||
|
||||
assert.equal(findUploadSizeLimitError({
|
||||
files: [
|
||||
{ name: 'a.png', type: 'image/png', size: 100 }
|
||||
],
|
||||
maxFileCount: 5,
|
||||
maxTotalSize: 1000,
|
||||
uploadSizeLimits
|
||||
}), null)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user