에디터 미디어 응답 상태 정규화 분리

This commit is contained in:
2026-07-24 18:12:33 +09:00
parent 1ec71cc985
commit 408d4aa420
7 changed files with 121 additions and 29 deletions

View File

@@ -4,6 +4,7 @@ import {
buildMediaPickerPageItems,
buildMediaPickerRangeLabel,
createMediaBlockMarkdown,
createDefaultMediaPickerPagination,
findUploadSizeLimitError,
formatMediaFileSize,
getGallerySelectionOrder,
@@ -11,6 +12,7 @@ import {
getMediaPickerPreviewUrl,
isMediaItemSelectableForTarget,
isUploadFileAllowedForMediaTarget,
normalizeMediaPickerResponse,
resolveSelectedMediaItems,
resolveUploadFetchErrorMessage,
toggleMediaSelectionState
@@ -237,3 +239,69 @@ test('미디어 선택 페이지 번호와 말줄임 항목을 계산한다', ()
pageCount: 12
}), [1, 'ellipsis-1-9', 9, 10, 11, 12])
})
test('미디어 선택 기본 페이지네이션 상태를 만든다', () => {
assert.deepEqual(createDefaultMediaPickerPagination(50), {
page: 1,
pageSize: 50,
total: 0,
pageCount: 1
})
assert.deepEqual(createDefaultMediaPickerPagination(20, 3), {
page: 1,
pageSize: 20,
total: 3,
pageCount: 1
})
})
test('미디어 선택 API 응답을 상태용 값으로 정규화한다', () => {
assert.deepEqual(normalizeMediaPickerResponse({
items: [{ url: '/a.png' }],
pagination: {
page: 2,
pageSize: 50,
total: 101,
pageCount: 3
}
}, 50), {
items: [{ url: '/a.png' }],
pagination: {
page: 2,
pageSize: 50,
total: 101,
pageCount: 3
}
})
assert.deepEqual(normalizeMediaPickerResponse({
items: [{ url: '/a.png' }]
}, 50), {
items: [{ url: '/a.png' }],
pagination: {
page: 1,
pageSize: 50,
total: 1,
pageCount: 1
}
})
assert.deepEqual(normalizeMediaPickerResponse({
items: 'invalid',
pagination: {
page: -2,
pageSize: 0,
total: -10,
pageCount: 0
}
}, 50), {
items: [],
pagination: {
page: 1,
pageSize: 50,
total: 0,
pageCount: 1
}
})
})