mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-04-30 03:10:16 +08:00
test: 支持更新下载时展示图标
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
|
|
||||||
import { createUpdateCenterStore } from "@/modules/updateCenter";
|
import { createUpdateCenterStore } from "@/modules/updateCenter";
|
||||||
|
import { downloads } from "@/global/downloadStatus";
|
||||||
|
|
||||||
const createSnapshot = (overrides = {}) => ({
|
const createSnapshot = (overrides = {}) => ({
|
||||||
items: [
|
items: [
|
||||||
@@ -33,6 +34,7 @@ describe("updateCenter store", () => {
|
|||||||
start.mockReset();
|
start.mockReset();
|
||||||
onState.mockReset();
|
onState.mockReset();
|
||||||
offState.mockReset();
|
offState.mockReset();
|
||||||
|
downloads.value = [];
|
||||||
|
|
||||||
Object.defineProperty(window, "updateCenter", {
|
Object.defineProperty(window, "updateCenter", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
@@ -97,6 +99,34 @@ describe("updateCenter store", () => {
|
|||||||
expect(start).toHaveBeenCalledWith(["aptss:spark-weather"]);
|
expect(start).toHaveBeenCalledWith(["aptss:spark-weather"]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("uses remoteIcon when adding update tasks to the download queue", async () => {
|
||||||
|
const snapshot = createSnapshot({
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
taskKey: "aptss:spark-weather",
|
||||||
|
packageName: "spark-weather",
|
||||||
|
displayName: "Spark Weather",
|
||||||
|
currentVersion: "1.0.0",
|
||||||
|
newVersion: "2.0.0",
|
||||||
|
source: "aptss" as const,
|
||||||
|
ignored: false,
|
||||||
|
remoteIcon: "https://example.com/icons/spark-weather.png",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
open.mockResolvedValue(snapshot);
|
||||||
|
const store = createUpdateCenterStore();
|
||||||
|
|
||||||
|
await store.open();
|
||||||
|
store.toggleSelection("aptss:spark-weather");
|
||||||
|
await store.startSelected();
|
||||||
|
|
||||||
|
expect(downloads.value).toHaveLength(1);
|
||||||
|
expect(downloads.value[0]?.icon).toBe(
|
||||||
|
"https://example.com/icons/spark-weather.png",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it("blocks close requests while the snapshot reports running tasks", () => {
|
it("blocks close requests while the snapshot reports running tasks", () => {
|
||||||
const store = createUpdateCenterStore();
|
const store = createUpdateCenterStore();
|
||||||
store.isOpen.value = true;
|
store.isOpen.value = true;
|
||||||
|
|||||||
@@ -155,18 +155,31 @@ export const createUpdateCenterStore = (): UpdateCenterStore => {
|
|||||||
|
|
||||||
// 在前端创建下载项,这样用户能在下载列表中看到更新任务
|
// 在前端创建下载项,这样用户能在下载列表中看到更新任务
|
||||||
const arch = window.apm_store.arch || "amd64";
|
const arch = window.apm_store.arch || "amd64";
|
||||||
let downloadIdCounter = downloads.value.length > 0 ? Math.max(...downloads.value.map(d => d.id)) + 1 : 1;
|
let downloadIdCounter =
|
||||||
|
downloads.value.length > 0
|
||||||
|
? Math.max(...downloads.value.map((d) => d.id)) + 1
|
||||||
|
: 1;
|
||||||
|
|
||||||
selectedItems.forEach((item) => {
|
selectedItems.forEach((item) => {
|
||||||
// 检查任务是否已存在
|
// 检查任务是否已存在
|
||||||
if (!downloads.value.find(d => d.pkgname === item.packageName && d.origin === (item.source === "apm" ? "apm" : "spark"))) {
|
if (
|
||||||
const finalArch = item.source === "apm" ? `${arch}-apm` : `${arch}-store`;
|
!downloads.value.find(
|
||||||
|
(d) =>
|
||||||
|
d.pkgname === item.packageName &&
|
||||||
|
d.origin === (item.source === "apm" ? "apm" : "spark"),
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
const finalArch =
|
||||||
|
item.source === "apm" ? `${arch}-apm` : `${arch}-store`;
|
||||||
|
const icon =
|
||||||
|
item.remoteIcon ||
|
||||||
|
`${APM_STORE_BASE_URL}/${finalArch}/unknown/${item.packageName}/icon.png`;
|
||||||
const download: DownloadItem = {
|
const download: DownloadItem = {
|
||||||
id: downloadIdCounter++,
|
id: downloadIdCounter++,
|
||||||
name: item.displayName,
|
name: item.displayName,
|
||||||
pkgname: item.packageName,
|
pkgname: item.packageName,
|
||||||
version: item.newVersion,
|
version: item.newVersion,
|
||||||
icon: `${APM_STORE_BASE_URL}/${finalArch}/unknown/${item.packageName}/icon.png`,
|
icon,
|
||||||
origin: item.source === "apm" ? "apm" : "spark",
|
origin: item.source === "apm" ? "apm" : "spark",
|
||||||
status: "queued",
|
status: "queued",
|
||||||
progress: 0,
|
progress: 0,
|
||||||
@@ -180,7 +193,9 @@ export const createUpdateCenterStore = (): UpdateCenterStore => {
|
|||||||
retry: false,
|
retry: false,
|
||||||
upgradeOnly: true,
|
upgradeOnly: true,
|
||||||
filename: item.fileName,
|
filename: item.fileName,
|
||||||
metalinkUrl: item.downloadUrl ? `${item.downloadUrl}.metalink` : undefined,
|
metalinkUrl: item.downloadUrl
|
||||||
|
? `${item.downloadUrl}.metalink`
|
||||||
|
: undefined,
|
||||||
};
|
};
|
||||||
downloads.value.push(download);
|
downloads.value.push(download);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user