@praxisjs/composables 1.2.1 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/browser.d.ts +41 -18
  3. package/dist/browser.d.ts.map +1 -1
  4. package/dist/browser.js +114 -114
  5. package/dist/browser.js.map +1 -1
  6. package/dist/dom.d.ts +24 -16
  7. package/dist/dom.d.ts.map +1 -1
  8. package/dist/dom.js +75 -84
  9. package/dist/dom.js.map +1 -1
  10. package/dist/list.d.ts +4 -1
  11. package/dist/list.d.ts.map +1 -1
  12. package/dist/list.js +29 -11
  13. package/dist/list.js.map +1 -1
  14. package/dist/upload.d.ts.map +1 -1
  15. package/dist/upload.js +32 -12
  16. package/dist/upload.js.map +1 -1
  17. package/dist/utilities.d.ts +13 -1
  18. package/dist/utilities.d.ts.map +1 -1
  19. package/dist/utilities.js +88 -26
  20. package/dist/utilities.js.map +1 -1
  21. package/package.json +14 -5
  22. package/src/browser.ts +129 -115
  23. package/src/dom.ts +77 -85
  24. package/src/list.ts +29 -10
  25. package/src/upload.ts +30 -11
  26. package/src/utilities.ts +101 -24
  27. package/dist/__tests__/browser.test.d.ts +0 -2
  28. package/dist/__tests__/browser.test.d.ts.map +0 -1
  29. package/dist/__tests__/browser.test.js +0 -350
  30. package/dist/__tests__/browser.test.js.map +0 -1
  31. package/dist/__tests__/dom.test.d.ts +0 -2
  32. package/dist/__tests__/dom.test.d.ts.map +0 -1
  33. package/dist/__tests__/dom.test.js +0 -463
  34. package/dist/__tests__/dom.test.js.map +0 -1
  35. package/dist/__tests__/list.test.d.ts +0 -2
  36. package/dist/__tests__/list.test.d.ts.map +0 -1
  37. package/dist/__tests__/list.test.js +0 -156
  38. package/dist/__tests__/list.test.js.map +0 -1
  39. package/dist/__tests__/upload.test.d.ts +0 -2
  40. package/dist/__tests__/upload.test.d.ts.map +0 -1
  41. package/dist/__tests__/upload.test.js +0 -531
  42. package/dist/__tests__/upload.test.js.map +0 -1
  43. package/dist/__tests__/utilities.test.d.ts +0 -2
  44. package/dist/__tests__/utilities.test.d.ts.map +0 -1
  45. package/dist/__tests__/utilities.test.js +0 -251
  46. package/dist/__tests__/utilities.test.js.map +0 -1
  47. package/src/__tests__/browser.test.ts +0 -414
  48. package/src/__tests__/dom.test.ts +0 -567
  49. package/src/__tests__/list.test.ts +0 -210
  50. package/src/__tests__/upload.test.ts +0 -639
  51. package/src/__tests__/utilities.test.ts +0 -327
  52. package/tsconfig.json +0 -8
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.test.js","sourceRoot":"","sources":["../../src/__tests__/list.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=upload.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/upload.test.ts"],"names":[],"mappings":""}
@@ -1,531 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
3
- import { signal } from "@praxisjs/core/internal";
4
- import { FileSelection, DropZone, FileUpload, FilePreview, formatFileSize, validateFiles, } from "../index";
5
- function makeFile(name, size = 10, type = "text/plain") {
6
- return new File([new Uint8Array(size)], name, { type });
7
- }
8
- class FakeXHR {
9
- static instances = [];
10
- method = "";
11
- url = "";
12
- headers = {};
13
- withCredentials = false;
14
- body = null;
15
- status = 0;
16
- responseText = "";
17
- aborted = false;
18
- upload = {
19
- onprogress: null,
20
- };
21
- onload = null;
22
- onerror = null;
23
- onabort = null;
24
- constructor() {
25
- FakeXHR.instances.push(this);
26
- }
27
- open(method, url) {
28
- this.method = method;
29
- this.url = url;
30
- }
31
- setRequestHeader(key, value) {
32
- this.headers[key] = value;
33
- }
34
- send(body) {
35
- this.body = body;
36
- }
37
- abort() {
38
- this.aborted = true;
39
- this.onabort?.();
40
- }
41
- respond(status, text = "") {
42
- this.status = status;
43
- this.responseText = text;
44
- this.onload?.();
45
- }
46
- }
47
- // ── formatFileSize ────────────────────────────────────────────────────────────
48
- describe("formatFileSize", () => {
49
- it("formats bytes, KB, MB and GB", () => {
50
- expect(formatFileSize(0)).toBe("0 B");
51
- expect(formatFileSize(512)).toBe("512 B");
52
- expect(formatFileSize(1536)).toBe("1.5 KB");
53
- expect(formatFileSize(5 * 1024 * 1024)).toBe("5.0 MB");
54
- expect(formatFileSize(2 * 1024 ** 3, 0)).toBe("2 GB");
55
- });
56
- it("returns 0 B for invalid input", () => {
57
- expect(formatFileSize(-1)).toBe("0 B");
58
- expect(formatFileSize(NaN)).toBe("0 B");
59
- });
60
- });
61
- // ── validateFiles ─────────────────────────────────────────────────────────────
62
- describe("validateFiles", () => {
63
- it("accepts everything without options", () => {
64
- const files = [makeFile("a.txt"), makeFile("b.png", 5, "image/png")];
65
- const { accepted, rejected } = validateFiles(files, 0, {});
66
- expect(accepted).toEqual(files);
67
- expect(rejected).toEqual([]);
68
- });
69
- it("matches extension, exact mime and wildcard mime tokens", () => {
70
- const opts = { accept: ".pdf, image/*, text/csv" };
71
- const pdf = makeFile("Doc.PDF", 1, "");
72
- const png = makeFile("a.png", 1, "image/png");
73
- const csv = makeFile("a.csv", 1, "text/csv");
74
- const exe = makeFile("a.exe", 1, "application/x-msdownload");
75
- const { accepted, rejected } = validateFiles([pdf, png, csv, exe], 0, opts);
76
- expect(accepted).toEqual([pdf, png, csv]);
77
- expect(rejected.map((r) => r.code)).toEqual(["type"]);
78
- });
79
- it("accepts an array for accept", () => {
80
- const { accepted } = validateFiles([makeFile("a.png", 1, "image/png")], 0, { accept: ["image/png"] });
81
- expect(accepted).toHaveLength(1);
82
- });
83
- it("rejects files above maxSize and below minSize", () => {
84
- const big = makeFile("big.txt", 100);
85
- const tiny = makeFile("tiny.txt", 1);
86
- const { rejected } = validateFiles([big, tiny], 0, { maxSize: 50, minSize: 5 });
87
- expect(rejected.map((r) => r.code)).toEqual(["max-size", "min-size"]);
88
- });
89
- it("enforces maxFiles counting already held files", () => {
90
- const files = [makeFile("a"), makeFile("b"), makeFile("c")];
91
- const { accepted, rejected } = validateFiles(files, 1, { maxFiles: 2 });
92
- expect(accepted).toEqual([files[0]]);
93
- expect(rejected.map((r) => r.code)).toEqual(["max-files", "max-files"]);
94
- });
95
- });
96
- // ── FileSelection ─────────────────────────────────────────────────────────────
97
- describe("FileSelection", () => {
98
- it("starts empty", () => {
99
- const view = new FileSelection().setup();
100
- expect(view.files()).toEqual([]);
101
- expect(view.errors()).toEqual([]);
102
- });
103
- it("replaces the selection in single mode", () => {
104
- const view = new FileSelection().setup();
105
- const a = makeFile("a");
106
- const b = makeFile("b");
107
- view.add([a]);
108
- view.add([b]);
109
- expect(view.files()).toEqual([b]);
110
- });
111
- it("rejects extra files in single mode", () => {
112
- const view = new FileSelection().setup();
113
- view.add([makeFile("a"), makeFile("b")]);
114
- expect(view.files()).toHaveLength(1);
115
- expect(view.errors()[0].code).toBe("max-files");
116
- });
117
- it("appends in multiple mode up to maxFiles", () => {
118
- const view = new FileSelection({ maxFiles: 3 }).setup();
119
- view.add([makeFile("a"), makeFile("b")]);
120
- view.add([makeFile("c"), makeFile("d")]);
121
- expect(view.files().map((f) => f.name)).toEqual(["a", "b", "c"]);
122
- expect(view.errors()).toHaveLength(1);
123
- });
124
- it("keeps the previous file when the new one is rejected", () => {
125
- const view = new FileSelection({ maxSize: 20 }).setup();
126
- const ok = makeFile("ok", 10);
127
- view.add([ok]);
128
- view.add([makeFile("big", 100)]);
129
- expect(view.files()).toEqual([ok]);
130
- expect(view.errors()[0].code).toBe("max-size");
131
- });
132
- it("ignores empty input and calls onFiles with accepted files", () => {
133
- const onFiles = vi.fn();
134
- const view = new FileSelection({ multiple: true, onFiles }).setup();
135
- view.add(null);
136
- view.add([]);
137
- expect(onFiles).not.toHaveBeenCalled();
138
- const a = makeFile("a");
139
- view.add([a]);
140
- expect(onFiles).toHaveBeenCalledWith([a]);
141
- });
142
- it("remove and clear update the selection", () => {
143
- const view = new FileSelection({ multiple: true }).setup();
144
- const a = makeFile("a");
145
- const b = makeFile("b");
146
- view.add([a, b]);
147
- view.remove(a);
148
- expect(view.files()).toEqual([b]);
149
- view.add([makeFile("c", 1, "")]);
150
- view.clear();
151
- expect(view.files()).toEqual([]);
152
- expect(view.errors()).toEqual([]);
153
- });
154
- it("open() creates a file input configured from the options and adds the picked files", () => {
155
- let input;
156
- const original = document.createElement.bind(document);
157
- vi.spyOn(document, "createElement").mockImplementation((tag) => {
158
- const el = original(tag);
159
- if (tag === "input") {
160
- input = el;
161
- vi.spyOn(input, "click").mockImplementation(() => { });
162
- }
163
- return el;
164
- });
165
- const view = new FileSelection({ accept: [".png", "image/jpeg"], multiple: true }).setup();
166
- view.open();
167
- expect(input.type).toBe("file");
168
- expect(input.accept).toBe(".png,image/jpeg");
169
- expect(input.multiple).toBe(true);
170
- expect(input.click).toHaveBeenCalled();
171
- const file = makeFile("a.png", 1, "image/png");
172
- Object.defineProperty(input, "files", { value: [file], configurable: true });
173
- input.dispatchEvent(new Event("change"));
174
- expect(view.files()).toEqual([file]);
175
- vi.restoreAllMocks();
176
- });
177
- });
178
- describe("FileSelection without accept", () => {
179
- it("open() leaves the input's accept attribute unset and tolerates an empty dialog", () => {
180
- let input;
181
- const original = document.createElement.bind(document);
182
- vi.spyOn(document, "createElement").mockImplementation((tag) => {
183
- const el = original(tag);
184
- if (tag === "input") {
185
- input = el;
186
- vi.spyOn(input, "click").mockImplementation(() => { });
187
- }
188
- return el;
189
- });
190
- const view = new FileSelection().setup();
191
- view.open();
192
- expect(input.accept).toBe("");
193
- expect(input.multiple).toBe(false);
194
- input.dispatchEvent(new Event("change"));
195
- expect(view.files()).toEqual([]);
196
- vi.restoreAllMocks();
197
- });
198
- });
199
- // ── DropZone ──────────────────────────────────────────────────────────────────
200
- describe("DropZone", () => {
201
- function dragEvent(type, files = [], types = ["Files"]) {
202
- const e = new Event(type, { bubbles: true, cancelable: true });
203
- Object.defineProperty(e, "dataTransfer", { value: { files, types } });
204
- return e;
205
- }
206
- it("tracks dragging through nested dragenter/dragleave pairs", () => {
207
- const el = document.createElement("div");
208
- const dz = new DropZone({ current: el });
209
- const view = dz.setup();
210
- dz.onMount();
211
- el.dispatchEvent(dragEvent("dragenter"));
212
- el.dispatchEvent(dragEvent("dragenter"));
213
- expect(view.dragging()).toBe(true);
214
- el.dispatchEvent(dragEvent("dragleave"));
215
- expect(view.dragging()).toBe(true);
216
- el.dispatchEvent(dragEvent("dragleave"));
217
- expect(view.dragging()).toBe(false);
218
- });
219
- it("ignores drags that do not carry files", () => {
220
- const el = document.createElement("div");
221
- const dz = new DropZone({ current: el });
222
- const view = dz.setup();
223
- dz.onMount();
224
- const e = dragEvent("dragenter", [], ["text/plain"]);
225
- el.dispatchEvent(e);
226
- expect(view.dragging()).toBe(false);
227
- expect(e.defaultPrevented).toBe(false);
228
- });
229
- it("prevents default on dragover so the drop is allowed", () => {
230
- const el = document.createElement("div");
231
- const dz = new DropZone({ current: el });
232
- dz.setup();
233
- dz.onMount();
234
- const e = dragEvent("dragover");
235
- el.dispatchEvent(e);
236
- expect(e.defaultPrevented).toBe(true);
237
- });
238
- it("adds validated dropped files and stops dragging", () => {
239
- const el = document.createElement("div");
240
- const dz = new DropZone({ current: el }, { accept: "image/*", multiple: true });
241
- const view = dz.setup();
242
- dz.onMount();
243
- const png = makeFile("a.png", 1, "image/png");
244
- const txt = makeFile("a.txt");
245
- el.dispatchEvent(dragEvent("dragenter"));
246
- const drop = dragEvent("drop", [png, txt]);
247
- el.dispatchEvent(drop);
248
- expect(drop.defaultPrevented).toBe(true);
249
- expect(view.dragging()).toBe(false);
250
- expect(view.files()).toEqual([png]);
251
- expect(view.errors()[0].code).toBe("type");
252
- });
253
- it("does not allow drops for dragover events without files", () => {
254
- const el = document.createElement("div");
255
- const dz = new DropZone({ current: el });
256
- dz.setup();
257
- dz.onMount();
258
- const e = dragEvent("dragover", [], ["text/plain"]);
259
- el.dispatchEvent(e);
260
- expect(e.defaultPrevented).toBe(false);
261
- });
262
- it("ignores events with no dataTransfer and drops without one", () => {
263
- const el = document.createElement("div");
264
- const dz = new DropZone({ current: el });
265
- const view = dz.setup();
266
- dz.onMount();
267
- el.dispatchEvent(new Event("dragenter", { cancelable: true }));
268
- el.dispatchEvent(new Event("dragover", { cancelable: true }));
269
- expect(view.dragging()).toBe(false);
270
- el.dispatchEvent(new Event("drop", { cancelable: true }));
271
- expect(view.files()).toEqual([]);
272
- });
273
- it("dragleave without a matching dragenter keeps dragging false", () => {
274
- const el = document.createElement("div");
275
- const dz = new DropZone({ current: el });
276
- const view = dz.setup();
277
- dz.onMount();
278
- el.dispatchEvent(dragEvent("dragleave"));
279
- expect(view.dragging()).toBe(false);
280
- });
281
- it("onUnmount before onMount is a no-op", () => {
282
- const dz = new DropZone({ current: document.createElement("div") });
283
- dz.setup();
284
- expect(() => { dz.onUnmount(); }).not.toThrow();
285
- });
286
- it("does nothing when the ref is empty", () => {
287
- const dz = new DropZone({ current: null });
288
- dz.setup();
289
- expect(() => { dz.onMount(); dz.onUnmount(); }).not.toThrow();
290
- });
291
- it("removes listeners on unmount", () => {
292
- const el = document.createElement("div");
293
- const dz = new DropZone({ current: el });
294
- const view = dz.setup();
295
- dz.onMount();
296
- dz.onUnmount();
297
- el.dispatchEvent(dragEvent("dragenter"));
298
- expect(view.dragging()).toBe(false);
299
- });
300
- });
301
- // ── FileUpload ────────────────────────────────────────────────────────────────
302
- describe("FileUpload", () => {
303
- beforeEach(() => {
304
- FakeXHR.instances = [];
305
- vi.stubGlobal("XMLHttpRequest", FakeXHR);
306
- });
307
- afterEach(() => {
308
- vi.unstubAllGlobals();
309
- });
310
- it("uploads on add with the configured request", () => {
311
- const up = new FileUpload({
312
- url: "/api/upload",
313
- method: "PUT",
314
- headers: { Authorization: "Bearer x" },
315
- fieldName: "attachment",
316
- data: { folder: "docs" },
317
- withCredentials: true,
318
- });
319
- const view = up.setup();
320
- const file = makeFile("a.txt");
321
- view.add([file]);
322
- const xhr = FakeXHR.instances[0];
323
- expect(xhr.method).toBe("PUT");
324
- expect(xhr.url).toBe("/api/upload");
325
- expect(xhr.headers).toEqual({ Authorization: "Bearer x" });
326
- expect(xhr.withCredentials).toBe(true);
327
- expect(xhr.body?.get("attachment")).toBe(file);
328
- expect(xhr.body?.get("folder")).toBe("docs");
329
- expect(view.items()[0].status).toBe("uploading");
330
- expect(view.uploading()).toBe(true);
331
- });
332
- it("resolves url, headers and data from functions", () => {
333
- const up = new FileUpload({
334
- url: (f) => `/up/${f.name}`,
335
- headers: () => ({ "X-Token": "t" }),
336
- data: (f) => ({ name: f.name }),
337
- });
338
- const view = up.setup();
339
- view.add([makeFile("a.txt")]);
340
- const xhr = FakeXHR.instances[0];
341
- expect(xhr.url).toBe("/up/a.txt");
342
- expect(xhr.headers).toEqual({ "X-Token": "t" });
343
- expect(xhr.body?.get("name")).toBe("a.txt");
344
- expect(xhr.body?.get("file")).toBeInstanceOf(File);
345
- });
346
- it("reports progress per item and overall", () => {
347
- const view = new FileUpload({ url: "/u" }).setup();
348
- view.add([makeFile("a"), makeFile("b")]);
349
- FakeXHR.instances[0].upload.onprogress?.({ lengthComputable: true, loaded: 50, total: 100 });
350
- FakeXHR.instances[1].upload.onprogress?.({ lengthComputable: true, loaded: 100, total: 100 });
351
- expect(view.items()[0].progress).toBe(50);
352
- expect(view.items()[1].progress).toBe(100);
353
- expect(view.progress()).toBe(75);
354
- });
355
- it("ignores non-computable progress events", () => {
356
- const view = new FileUpload({ url: "/u" }).setup();
357
- view.add([makeFile("a")]);
358
- FakeXHR.instances[0].upload.onprogress?.({ lengthComputable: false, loaded: 5, total: 0 });
359
- expect(view.items()[0].progress).toBe(0);
360
- });
361
- it("marks success, parses JSON and calls onSuccess", () => {
362
- const onSuccess = vi.fn();
363
- const view = new FileUpload({ url: "/u", onSuccess }).setup();
364
- view.add([makeFile("a")]);
365
- FakeXHR.instances[0].respond(200, '{"id":7}');
366
- const item = view.items()[0];
367
- expect(item.status).toBe("success");
368
- expect(item.progress).toBe(100);
369
- expect(item.response).toEqual({ id: 7 });
370
- expect(onSuccess).toHaveBeenCalledWith(expect.objectContaining({ status: "success" }));
371
- expect(view.uploading()).toBe(false);
372
- });
373
- it("keeps raw text for non-JSON responses", () => {
374
- const view = new FileUpload({ url: "/u" }).setup();
375
- view.add([makeFile("a")]);
376
- FakeXHR.instances[0].respond(201, "ok");
377
- expect(view.items()[0].response).toBe("ok");
378
- });
379
- it("marks HTTP failures and calls onError", () => {
380
- const onError = vi.fn();
381
- const view = new FileUpload({ url: "/u", onError }).setup();
382
- view.add([makeFile("a")]);
383
- FakeXHR.instances[0].respond(500);
384
- expect(view.items()[0]).toMatchObject({ status: "error", error: "HTTP 500" });
385
- expect(onError).toHaveBeenCalledTimes(1);
386
- });
387
- it("marks network errors", () => {
388
- const view = new FileUpload({ url: "/u" }).setup();
389
- view.add([makeFile("a")]);
390
- FakeXHR.instances[0].onerror?.();
391
- expect(view.items()[0]).toMatchObject({ status: "error", error: "Network error" });
392
- });
393
- it("respects concurrency and starts queued files as slots free up", () => {
394
- const view = new FileUpload({ url: "/u", concurrency: 2 }).setup();
395
- view.add([makeFile("a"), makeFile("b"), makeFile("c")]);
396
- expect(FakeXHR.instances).toHaveLength(2);
397
- expect(view.items().map((i) => i.status)).toEqual(["uploading", "uploading", "pending"]);
398
- FakeXHR.instances[0].respond(200);
399
- expect(FakeXHR.instances).toHaveLength(3);
400
- expect(view.items()[2].status).toBe("uploading");
401
- });
402
- it("does not upload until start() when autoStart is false", () => {
403
- const view = new FileUpload({ url: "/u", autoStart: false }).setup();
404
- view.add([makeFile("a")]);
405
- expect(FakeXHR.instances).toHaveLength(0);
406
- expect(view.items()[0].status).toBe("pending");
407
- view.start();
408
- expect(FakeXHR.instances).toHaveLength(1);
409
- });
410
- it("validates files and exposes the rejections", () => {
411
- const view = new FileUpload({ url: "/u", maxSize: 5 }).setup();
412
- view.add([makeFile("big", 100)]);
413
- expect(view.items()).toEqual([]);
414
- expect(view.errors()[0].code).toBe("max-size");
415
- expect(FakeXHR.instances).toHaveLength(0);
416
- });
417
- it("counts existing items against maxFiles", () => {
418
- const view = new FileUpload({ url: "/u", maxFiles: 1 }).setup();
419
- view.add([makeFile("a")]);
420
- view.add([makeFile("b")]);
421
- expect(view.items()).toHaveLength(1);
422
- expect(view.errors()[0].code).toBe("max-files");
423
- });
424
- it("cancel aborts an in-flight upload", () => {
425
- const view = new FileUpload({ url: "/u" }).setup();
426
- view.add([makeFile("a")]);
427
- view.cancel(view.items()[0].id);
428
- expect(FakeXHR.instances[0].aborted).toBe(true);
429
- expect(view.items()[0].status).toBe("aborted");
430
- });
431
- it("cancel marks a queued upload as aborted so it never starts", () => {
432
- const view = new FileUpload({ url: "/u", autoStart: false }).setup();
433
- view.add([makeFile("a")]);
434
- view.cancel(view.items()[0].id);
435
- view.start();
436
- expect(view.items()[0].status).toBe("aborted");
437
- expect(FakeXHR.instances).toHaveLength(0);
438
- });
439
- it("cancel ignores unknown ids and finished items", () => {
440
- const view = new FileUpload({ url: "/u" }).setup();
441
- view.add([makeFile("a")]);
442
- FakeXHR.instances[0].respond(200);
443
- view.cancel(view.items()[0].id);
444
- view.cancel("missing");
445
- expect(view.items()[0].status).toBe("success");
446
- });
447
- it("retry ignores unknown ids", () => {
448
- const view = new FileUpload({ url: "/u" }).setup();
449
- view.retry("missing");
450
- expect(FakeXHR.instances).toHaveLength(0);
451
- });
452
- it("add ignores empty input", () => {
453
- const view = new FileUpload({ url: "/u" }).setup();
454
- view.add([]);
455
- expect(view.items()).toEqual([]);
456
- expect(view.errors()).toEqual([]);
457
- });
458
- it("retry re-uploads failed and aborted items only", () => {
459
- const view = new FileUpload({ url: "/u" }).setup();
460
- view.add([makeFile("a")]);
461
- const id = view.items()[0].id;
462
- view.retry(id);
463
- expect(FakeXHR.instances).toHaveLength(1);
464
- FakeXHR.instances[0].respond(500);
465
- view.retry(id);
466
- expect(FakeXHR.instances).toHaveLength(2);
467
- expect(view.items()[0]).toMatchObject({ status: "uploading", progress: 0, error: undefined });
468
- });
469
- it("remove aborts and drops the item; clear aborts everything", () => {
470
- const view = new FileUpload({ url: "/u" }).setup();
471
- view.add([makeFile("a"), makeFile("b")]);
472
- view.remove(view.items()[0].id);
473
- expect(FakeXHR.instances[0].aborted).toBe(true);
474
- expect(view.items()).toHaveLength(1);
475
- view.clear();
476
- expect(FakeXHR.instances[1].aborted).toBe(true);
477
- expect(view.items()).toEqual([]);
478
- expect(view.errors()).toEqual([]);
479
- });
480
- it("progress is 0 with no items", () => {
481
- const view = new FileUpload({ url: "/u" }).setup();
482
- expect(view.progress()).toBe(0);
483
- });
484
- it("onUnmount aborts in-flight requests and stops queueing", () => {
485
- const up = new FileUpload({ url: "/u", concurrency: 1 });
486
- const view = up.setup();
487
- view.add([makeFile("a"), makeFile("b")]);
488
- up.onUnmount();
489
- expect(FakeXHR.instances[0].aborted).toBe(true);
490
- expect(FakeXHR.instances).toHaveLength(1);
491
- });
492
- });
493
- // ── FilePreview ───────────────────────────────────────────────────────────────
494
- describe("FilePreview", () => {
495
- beforeEach(() => {
496
- let n = 0;
497
- URL.createObjectURL = vi.fn(() => `blob:preview-${++n}`);
498
- URL.revokeObjectURL = vi.fn();
499
- });
500
- it("is null without a file", () => {
501
- const { url } = new FilePreview(() => null).setup();
502
- expect(url()).toBeNull();
503
- expect(URL.createObjectURL).not.toHaveBeenCalled();
504
- });
505
- it("creates one object URL per file and reuses it", () => {
506
- const file = signal(makeFile("a.png"));
507
- const { url } = new FilePreview(file).setup();
508
- expect(url()).toBe("blob:preview-1");
509
- expect(url()).toBe("blob:preview-1");
510
- expect(URL.createObjectURL).toHaveBeenCalledTimes(1);
511
- });
512
- it("revokes the previous URL when the file changes", () => {
513
- const file = signal(makeFile("a.png"));
514
- const { url } = new FilePreview(file).setup();
515
- url();
516
- file.set(makeFile("b.png"));
517
- expect(url()).toBe("blob:preview-2");
518
- expect(URL.revokeObjectURL).toHaveBeenCalledWith("blob:preview-1");
519
- file.set(null);
520
- expect(url()).toBeNull();
521
- expect(URL.revokeObjectURL).toHaveBeenCalledWith("blob:preview-2");
522
- });
523
- it("revokes the URL on unmount", () => {
524
- const preview = new FilePreview(() => makeFile("a.png"));
525
- const { url } = preview.setup();
526
- url();
527
- preview.onUnmount();
528
- expect(URL.revokeObjectURL).toHaveBeenCalledWith("blob:preview-1");
529
- });
530
- });
531
- //# sourceMappingURL=upload.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload.test.js","sourceRoot":"","sources":["../../src/__tests__/upload.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utilities.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utilities.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/utilities.test.ts"],"names":[],"mappings":""}