mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-04-26 09:20:18 +08:00
Merge pull request #2 from vmomenv/feat-improve-download-status-tests-11721872646402320389
🧪 Improve removeDownloadItem tests
This commit is contained in:
@@ -7,12 +7,10 @@ describe("downloadStatus", () => {
|
|||||||
downloads.value = [];
|
downloads.value = [];
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("addDownload", () => {
|
const createMockDownload = (id: number, pkgname: string): DownloadItem => ({
|
||||||
it("should add a new download item", () => {
|
id,
|
||||||
const mockDownload: DownloadItem = {
|
name: `Test App ${id}`,
|
||||||
id: 1,
|
pkgname,
|
||||||
name: "Test App",
|
|
||||||
pkgname: "test-app",
|
|
||||||
version: "1.0.0",
|
version: "1.0.0",
|
||||||
icon: "",
|
icon: "",
|
||||||
status: "queued",
|
status: "queued",
|
||||||
@@ -25,7 +23,11 @@ describe("downloadStatus", () => {
|
|||||||
logs: [],
|
logs: [],
|
||||||
source: "Test",
|
source: "Test",
|
||||||
retry: false,
|
retry: false,
|
||||||
};
|
});
|
||||||
|
|
||||||
|
describe("addDownload", () => {
|
||||||
|
it("should add a new download item", () => {
|
||||||
|
const mockDownload = createMockDownload(1, "test-app");
|
||||||
|
|
||||||
downloads.value.push(mockDownload);
|
downloads.value.push(mockDownload);
|
||||||
|
|
||||||
@@ -36,28 +38,64 @@ describe("downloadStatus", () => {
|
|||||||
|
|
||||||
describe("removeDownloadItem", () => {
|
describe("removeDownloadItem", () => {
|
||||||
it("should remove download by pkgname", () => {
|
it("should remove download by pkgname", () => {
|
||||||
const mockDownload: DownloadItem = {
|
downloads.value.push(createMockDownload(1, "test-app"));
|
||||||
id: 1,
|
|
||||||
name: "Test App",
|
|
||||||
pkgname: "test-app",
|
|
||||||
version: "1.0.0",
|
|
||||||
icon: "",
|
|
||||||
status: "queued",
|
|
||||||
progress: 0,
|
|
||||||
downloadedSize: 0,
|
|
||||||
totalSize: 1000000,
|
|
||||||
speed: 0,
|
|
||||||
timeRemaining: 0,
|
|
||||||
startTime: Date.now(),
|
|
||||||
logs: [],
|
|
||||||
source: "Test",
|
|
||||||
retry: false,
|
|
||||||
};
|
|
||||||
|
|
||||||
downloads.value.push(mockDownload);
|
|
||||||
removeDownloadItem("test-app");
|
removeDownloadItem("test-app");
|
||||||
|
|
||||||
expect(downloads.value).toHaveLength(0);
|
expect(downloads.value).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should remove all items with matching pkgname when multiple exist", () => {
|
||||||
|
downloads.value.push(createMockDownload(1, "test-app"));
|
||||||
|
downloads.value.push(createMockDownload(2, "other-app"));
|
||||||
|
downloads.value.push(createMockDownload(3, "test-app"));
|
||||||
|
|
||||||
|
removeDownloadItem("test-app");
|
||||||
|
|
||||||
|
expect(downloads.value).toHaveLength(1);
|
||||||
|
expect(downloads.value[0].pkgname).toBe("other-app");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should not remove items that do not match the pkgname", () => {
|
||||||
|
downloads.value.push(createMockDownload(1, "app-1"));
|
||||||
|
downloads.value.push(createMockDownload(2, "app-2"));
|
||||||
|
|
||||||
|
removeDownloadItem("non-existent");
|
||||||
|
|
||||||
|
expect(downloads.value).toHaveLength(2);
|
||||||
|
expect(downloads.value.map((d) => d.pkgname)).toEqual(["app-1", "app-2"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should handle removing from an empty list", () => {
|
||||||
|
expect(() => removeDownloadItem("test-app")).not.toThrow();
|
||||||
|
expect(downloads.value).toHaveLength(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should only remove items with the exact pkgname match", () => {
|
||||||
|
downloads.value.push(createMockDownload(1, "test-app"));
|
||||||
|
downloads.value.push(createMockDownload(2, "test-app-pro"));
|
||||||
|
|
||||||
|
removeDownloadItem("test-app");
|
||||||
|
|
||||||
|
expect(downloads.value).toHaveLength(1);
|
||||||
|
expect(downloads.value[0].pkgname).toBe("test-app-pro");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should correctly handle removing items at the start, middle, and end", () => {
|
||||||
|
downloads.value.push(createMockDownload(1, "app-1"));
|
||||||
|
downloads.value.push(createMockDownload(2, "to-remove"));
|
||||||
|
downloads.value.push(createMockDownload(3, "app-2"));
|
||||||
|
downloads.value.push(createMockDownload(4, "to-remove"));
|
||||||
|
downloads.value.push(createMockDownload(5, "app-3"));
|
||||||
|
downloads.value.push(createMockDownload(6, "to-remove"));
|
||||||
|
|
||||||
|
removeDownloadItem("to-remove");
|
||||||
|
|
||||||
|
expect(downloads.value).toHaveLength(3);
|
||||||
|
expect(downloads.value.map((d) => d.pkgname)).toEqual([
|
||||||
|
"app-1",
|
||||||
|
"app-2",
|
||||||
|
"app-3",
|
||||||
|
]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user