Keep package rows in their existing visible order across runtime state changes and remove obsolete automatic progress grouping. Require an active usable provider before starting or resuming downloads, recover temporary disk-write blocks without consuming normal retries, and surface disk waits and extraction failures at package level. Add focused regression coverage and prepare the v2.0.24 release metadata and changelog.
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import type { PackageEntry } from "../src/shared/types";
|
|
import { preservePackageOrderForDisplay } from "../src/renderer/package-order";
|
|
|
|
function createPackage(id: string, itemIds: string[], downloadStartedAt = 0): PackageEntry {
|
|
const now = Date.now();
|
|
return {
|
|
id,
|
|
name: id,
|
|
outputDir: "",
|
|
extractDir: "",
|
|
status: "queued",
|
|
itemIds,
|
|
cancelled: false,
|
|
enabled: true,
|
|
priority: "normal",
|
|
createdAt: now,
|
|
updatedAt: now,
|
|
downloadStartedAt
|
|
};
|
|
}
|
|
|
|
describe("preservePackageOrderForDisplay", () => {
|
|
it("keeps the exact queue order", () => {
|
|
const packages = [
|
|
createPackage("pkg-a", ["a1", "a2"]),
|
|
createPackage("pkg-c", ["c1"]),
|
|
createPackage("pkg-b", ["b1", "b2"])
|
|
];
|
|
expect(preservePackageOrderForDisplay(packages).map((pkg) => pkg.id)).toEqual(["pkg-a", "pkg-c", "pkg-b"]);
|
|
});
|
|
|
|
it("keeps the visible queue order stable across start and completion metadata", () => {
|
|
const packages = [
|
|
createPackage("pkg-first", ["first-item"], 100),
|
|
createPackage("pkg-second", ["second-item"], 200),
|
|
createPackage("pkg-third", ["third-item"], 300)
|
|
];
|
|
expect(preservePackageOrderForDisplay(packages).map((pkg) => pkg.id)).toEqual(["pkg-first", "pkg-second", "pkg-third"]);
|
|
});
|
|
});
|