Archived
53 lines
1.9 KiB
TypeScript
53 lines
1.9 KiB
TypeScript
import { html, svg } from "lit";
|
|
import { describe, expect, it, vi } from "vitest";
|
|
import type { PluginRuntimeContext } from "@jmfederico/pi-web/plugin-api";
|
|
import plugin from "./pi-web-plugin.js";
|
|
|
|
describe("Updates plugin actions", () => {
|
|
it("forces an update check through the host runtime context", async () => {
|
|
const action = plugin.activate({ apiVersion: 1, pluginId: "updates", html, svg }).contributions.actions?.find((candidate) => candidate.id === "check");
|
|
if (action === undefined) throw new Error("Expected update check action");
|
|
const checkForPiWebUpdates = vi.fn(() => Promise.resolve());
|
|
const context = runtimeContext({ checkForPiWebUpdates });
|
|
|
|
expect(action.enabled?.(context)).toBe(true);
|
|
await action.run(context);
|
|
|
|
expect(checkForPiWebUpdates).toHaveBeenCalledOnce();
|
|
});
|
|
|
|
it("disables the action on older hosts without the update-check helper", () => {
|
|
const action = plugin.activate({ apiVersion: 1, pluginId: "updates", html, svg }).contributions.actions?.find((candidate) => candidate.id === "check");
|
|
if (action === undefined) throw new Error("Expected update check action");
|
|
const context = runtimeContext();
|
|
|
|
expect(action.enabled?.(context)).toBe(false);
|
|
expect(action.disabledReason?.(context)).toContain("newer PI WEB gateway");
|
|
});
|
|
});
|
|
|
|
function runtimeContext(patch: Partial<PluginRuntimeContext> = {}): PluginRuntimeContext {
|
|
const noop = () => undefined;
|
|
return {
|
|
state: {},
|
|
prompt: { insertText: noop, getText: () => "", getSelection: () => null },
|
|
openActionPalette: noop,
|
|
focusPrompt: noop,
|
|
addProject: noop,
|
|
configureAuth: noop,
|
|
logoutAuth: noop,
|
|
openThemePicker: noop,
|
|
selectMainView: noop,
|
|
selectWorkspaceTool: noop,
|
|
openTerminal: noop,
|
|
refreshFiles: noop,
|
|
refreshGit: noop,
|
|
refreshAppData: noop,
|
|
reloadPage: noop,
|
|
startSession: noop,
|
|
archiveSession: noop,
|
|
stopActiveWork: noop,
|
|
...patch,
|
|
};
|
|
}
|