Test partial upload cancellation

This commit is contained in:
“Naeel”
2026-09-06 13:46:06 +03:00
parent 67a4caa43c
commit 523b52a26c
+29
View File
@@ -231,3 +231,32 @@ test('uploadViaVM: прерывание через signal', async () => {
assert.equal(res.ok, false);
assert.equal(res.aborted, true);
});
test('uploadViaVM: отмена после первого файла не начинает второй PUT', async () => {
installFetch(async (url, opts) => ({
ok: true,
json: async () => ({ ok: true, session: 'partial-sid', count: 1 }),
}));
const ac = new AbortController();
const statuses = [];
const files = [new File(['first'], 'first.txt'), new File(['second'], 'second.txt')];
const p = uploadViaVM(files, {
vmUploadUrl: 'https://vm-buffer/upload/',
signal: ac.signal,
onFileStatus: (idx, status) => statuses.push({ idx, status }),
});
await tick();
assert.equal(lastXHR.url.endsWith('_0'), true);
lastXHR.status = 201;
lastXHR.onload();
ac.abort();
const res = await p;
assert.equal(res.ok, false);
assert.equal(res.aborted, true);
assert.equal(fetchCalls.length, 1);
assert.equal(lastXHR.url.endsWith('_0'), true);
assert.ok(statuses.some(({ idx, status }) => idx === 0 && status.includes('Доставлен')));
});