Initial public release v1.7.233
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { buildLinkExportSelection, serializeLinkExportText } from "../src/main/link-export";
|
||||
import { parseCollectorInput } from "../src/main/link-parser";
|
||||
import type { UiSnapshot } from "../src/shared/types";
|
||||
|
||||
function buildSnapshot(): UiSnapshot {
|
||||
return {
|
||||
settings: {} as UiSnapshot["settings"],
|
||||
session: {
|
||||
version: 1,
|
||||
packageOrder: ["pkg-1", "pkg-2"],
|
||||
packages: {
|
||||
"pkg-1": {
|
||||
id: "pkg-1",
|
||||
name: "Dave Staffel 1",
|
||||
outputDir: "C:\\Downloads\\Dave Staffel 1",
|
||||
extractDir: "C:\\Extract\\Dave Staffel 1",
|
||||
status: "queued",
|
||||
itemIds: ["item-1", "item-2"],
|
||||
cancelled: false,
|
||||
enabled: true,
|
||||
priority: "normal",
|
||||
createdAt: 1,
|
||||
updatedAt: 1
|
||||
},
|
||||
"pkg-2": {
|
||||
id: "pkg-2",
|
||||
name: "Andere Staffel",
|
||||
outputDir: "C:\\Downloads\\Andere Staffel",
|
||||
extractDir: "C:\\Extract\\Andere Staffel",
|
||||
status: "queued",
|
||||
itemIds: ["item-3"],
|
||||
cancelled: false,
|
||||
enabled: true,
|
||||
priority: "normal",
|
||||
createdAt: 1,
|
||||
updatedAt: 1
|
||||
}
|
||||
},
|
||||
items: {
|
||||
"item-1": {
|
||||
id: "item-1",
|
||||
packageId: "pkg-1",
|
||||
url: "https://example.com/e01",
|
||||
provider: null,
|
||||
status: "queued",
|
||||
retries: 0,
|
||||
speedBps: 0,
|
||||
downloadedBytes: 0,
|
||||
totalBytes: null,
|
||||
progressPercent: 0,
|
||||
fileName: "Dave.S01E01.rar",
|
||||
targetPath: "",
|
||||
resumable: true,
|
||||
attempts: 0,
|
||||
lastError: "",
|
||||
fullStatus: "Wartet",
|
||||
createdAt: 1,
|
||||
updatedAt: 1
|
||||
},
|
||||
"item-2": {
|
||||
id: "item-2",
|
||||
packageId: "pkg-1",
|
||||
url: "https://example.com/e02",
|
||||
provider: null,
|
||||
status: "queued",
|
||||
retries: 0,
|
||||
speedBps: 0,
|
||||
downloadedBytes: 0,
|
||||
totalBytes: null,
|
||||
progressPercent: 0,
|
||||
fileName: "Dave.S01E02.rar",
|
||||
targetPath: "",
|
||||
resumable: true,
|
||||
attempts: 0,
|
||||
lastError: "",
|
||||
fullStatus: "Wartet",
|
||||
createdAt: 1,
|
||||
updatedAt: 1
|
||||
},
|
||||
"item-3": {
|
||||
id: "item-3",
|
||||
packageId: "pkg-2",
|
||||
url: "https://example.com/other",
|
||||
provider: null,
|
||||
status: "queued",
|
||||
retries: 0,
|
||||
speedBps: 0,
|
||||
downloadedBytes: 0,
|
||||
totalBytes: null,
|
||||
progressPercent: 0,
|
||||
fileName: "Andere.S01E01.rar",
|
||||
targetPath: "",
|
||||
resumable: true,
|
||||
attempts: 0,
|
||||
lastError: "",
|
||||
fullStatus: "Wartet",
|
||||
createdAt: 1,
|
||||
updatedAt: 1
|
||||
}
|
||||
},
|
||||
runStartedAt: 0,
|
||||
totalDownloadedBytes: 0,
|
||||
summaryText: "",
|
||||
reconnectUntil: 0,
|
||||
reconnectReason: "",
|
||||
paused: false,
|
||||
running: false,
|
||||
updatedAt: 1
|
||||
},
|
||||
summary: null,
|
||||
stats: {
|
||||
totalDownloaded: 0,
|
||||
totalDownloadedAllTime: 0,
|
||||
totalFilesSession: 0,
|
||||
totalFilesAllTime: 0,
|
||||
totalPackages: 2,
|
||||
sessionStartedAt: 0,
|
||||
appSessionStartedAt: 0,
|
||||
sessionRuntimeMs: 0,
|
||||
totalRuntimeMs: 0,
|
||||
runtimeMeasuredAt: 0
|
||||
},
|
||||
speedText: "",
|
||||
etaText: "",
|
||||
canStart: true,
|
||||
canStop: false,
|
||||
canPause: false,
|
||||
clipboardActive: false,
|
||||
reconnectSeconds: 0,
|
||||
packageSpeedBps: {}
|
||||
};
|
||||
}
|
||||
|
||||
describe("link-export", () => {
|
||||
it("keeps original package names when exporting selected items", () => {
|
||||
const selection = buildLinkExportSelection(buildSnapshot(), [], ["item-1", "item-3"]);
|
||||
expect(selection.packageCount).toBe(2);
|
||||
expect(selection.linkCount).toBe(2);
|
||||
expect(selection.packages.map((pkg) => pkg.name)).toEqual(["Dave Staffel 1", "Andere Staffel"]);
|
||||
});
|
||||
|
||||
it("roundtrips exported text back into parsed package inputs", () => {
|
||||
const selection = buildLinkExportSelection(buildSnapshot(), [], ["item-1", "item-2"]);
|
||||
const text = serializeLinkExportText(selection.packages);
|
||||
const reparsed = parseCollectorInput(text, "");
|
||||
|
||||
expect(reparsed).toHaveLength(1);
|
||||
expect(reparsed[0]?.name).toBe("Dave Staffel 1");
|
||||
expect(reparsed[0]?.links).toEqual(["https://example.com/e01", "https://example.com/e02"]);
|
||||
expect(reparsed[0]?.fileNames).toEqual(["Dave.S01E01.rar", "Dave.S01E02.rar"]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user