/** @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() }) })