forked from phenom/healer-man
Release Healer Man 0.1.29
This commit is contained in:
1 parent
8c9809d3e0
commit
544c1bee91
120 files changed
+4363
-1036
No files matched your search
@@ -2,7 +2,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const content = vi.hoisted(() => ({
|
||||
usable: false,
|
||||
install: vi.fn(async () => undefined),
|
||||
install: vi.fn(async (): Promise<void> => undefined),
|
||||
remove: vi.fn(async () => undefined),
|
||||
listener: null as (() => void) | null,
|
||||
snapshot: {
|
||||
@@ -29,25 +29,53 @@ vi.mock("../content/contentManager", () => ({
|
||||
import {
|
||||
combatMediaPackReady,
|
||||
downloadCombatMediaPack,
|
||||
ensureCombatMediaPack,
|
||||
fetchCombatMediaAsset,
|
||||
removeCombatMediaPack,
|
||||
} from "./combatMediaPack";
|
||||
|
||||
beforeEach(() => {
|
||||
content.usable = false;
|
||||
content.install.mockClear();
|
||||
content.install.mockReset();
|
||||
content.remove.mockClear();
|
||||
vi.unstubAllGlobals();
|
||||
});
|
||||
|
||||
describe("optional combat media pack", () => {
|
||||
it("uses the shared verified content-pack installer only after an explicit request", async () => {
|
||||
describe("original combat media pack", () => {
|
||||
it("uses the shared verified content-pack installer", async () => {
|
||||
const progress = vi.fn();
|
||||
await expect(downloadCombatMediaPack(progress)).resolves.toEqual({ fileCount: 12 });
|
||||
expect(content.install).toHaveBeenCalledWith("core:combat-media");
|
||||
expect(progress).toHaveBeenLastCalledWith({ completed: 4, total: 8 });
|
||||
});
|
||||
|
||||
it("automatically installs missing default media and reuses installed media", async () => {
|
||||
content.install.mockImplementationOnce(async () => { content.usable = true; });
|
||||
await expect(ensureCombatMediaPack()).resolves.toBe(true);
|
||||
await expect(ensureCombatMediaPack()).resolves.toBe(true);
|
||||
expect(content.install).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("allows visual fallback after a failed download and retries on the next preparation", async () => {
|
||||
content.install.mockRejectedValueOnce(new Error("Offline"));
|
||||
await expect(ensureCombatMediaPack()).resolves.toBe(false);
|
||||
content.install.mockImplementationOnce(async () => { content.usable = true; });
|
||||
await expect(ensureCombatMediaPack()).resolves.toBe(true);
|
||||
expect(content.install).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
|
||||
it("shares an in-flight installation between automatic preparation and a download request", async () => {
|
||||
let finish!: () => void;
|
||||
content.install.mockImplementationOnce(() => new Promise<void>((resolve) => { finish = resolve; }));
|
||||
const preparation = ensureCombatMediaPack();
|
||||
const download = downloadCombatMediaPack();
|
||||
expect(content.install).toHaveBeenCalledTimes(1);
|
||||
content.usable = true;
|
||||
finish();
|
||||
await expect(preparation).resolves.toBe(true);
|
||||
await expect(download).resolves.toEqual({ fileCount: 12 });
|
||||
});
|
||||
|
||||
it("does not fetch source media while its pack is offloaded", async () => {
|
||||
const fetch = vi.fn();
|
||||
vi.stubGlobal("fetch", fetch);
|
||||
|
||||
Reference in new issue
Block a user