fix(downloads): harden compact finalization status

Use the compact finalization text for status-cell titles so item tooltips cannot expose raw archive details in German or English.

Require exactly two non-empty finite fraction values with one slash and a positive total before deriving progress. Invalid, infinite, NaN, zero-total, and extra-part forms now resolve to the phase only, with regression coverage for every case.
This commit is contained in:
Sucukdeluxe
2026-08-12 00:16:26 +02:00
parent 1664478770
commit bfb901903d
2 changed files with 13 additions and 4 deletions
+7
View File
@@ -957,11 +957,18 @@ describe("download table row contracts", () => {
expect(html).toContain(`aria-label="${expectedStatus}"`);
expect(html.match(new RegExp(`>${expectedStatus}</span>`, "g"))).toHaveLength(2);
expect(html).not.toContain(">release.part1.rar</span>");
if (target === "item") expect(html).not.toMatch(/title="[^"]*release\.part1\.rar/);
});
it.each([
["Finalisieren (3/2) · release.part1.rar", "Finalisieren - 100%"],
["Finalizing (-1/2) · release.part1.rar", "Finalizing - 0%"],
["Finalisieren (/2) · release.part1.rar", "Finalisieren"],
["Finalizing (1/) · release.part1.rar", "Finalizing"],
["Finalisieren (1/2/3) · release.part1.rar", "Finalisieren"],
["Finalizing (not-a-number/2) · release.part1.rar", "Finalizing"],
["Finalisieren (Infinity/2) · release.part1.rar", "Finalisieren"],
["Finalizing (NaN/2) · release.part1.rar", "Finalizing"],
["Finalisieren (1/0) · release.part1.rar", "Finalisieren"],
["Finalizing (invalid/2) · release.part1.rar", "Finalizing"]
])("derives only finite finalization percentages", (rawStatus, expectedStatus) => {