gongxiangp2/lib/__tests__/material-upload-chunk-policy.test.ts
chenpei 7326e273e1 fix: harden media upload and release safety
Protect upload cleanup and atomic completion paths, add durable media worker leases and brand asset validation, and introduce verified migration/bootstrap/deployment gates.
2026-08-12 18:04:08 +08:00

41 lines
1.2 KiB
TypeScript

/** @jest-environment node */
import {
getExpectedUploadChunkBytes,
resolveUploadChunkSize,
} from '@/lib/material-upload-chunk-policy'
const MEBIBYTE = 1024 * 1024
describe('material upload chunk policy', () => {
test('accepts the declared browser layout and calculates the final remainder', () => {
const fileSize = 25 * MEBIBYTE
const chunkSize = 10 * MEBIBYTE
const totalChunks = 3
expect(resolveUploadChunkSize(fileSize, totalChunks, chunkSize)).toBe(chunkSize)
expect(getExpectedUploadChunkBytes({
fileSize,
totalChunks,
chunkSize,
chunkIndex: 0,
})).toBe(10 * MEBIBYTE)
expect(getExpectedUploadChunkBytes({
fileSize,
totalChunks,
chunkSize,
chunkIndex: 2,
})).toBe(5 * MEBIBYTE)
})
test('keeps already-open legacy 10/20MB browser uploads compatible', () => {
expect(resolveUploadChunkSize(25 * MEBIBYTE, 3)).toBe(10 * MEBIBYTE)
expect(resolveUploadChunkSize(25 * MEBIBYTE, 2)).toBe(20 * MEBIBYTE)
})
test('rejects a tiny declared file spread across many disk-writing chunks', () => {
expect(resolveUploadChunkSize(1, 1024)).toBeNull()
expect(resolveUploadChunkSize(1, 1024, 1)).toBeNull()
})
})