feat(FN-3564): isolate plugin loader test state to prevent cross-test conta
Refactored plugin-loader tests and implementation to isolate plugin test contamination, improving test independence in `@fusion/core`. Fusion-Task-Id: FN-3564
This commit is contained in:
@@ -1,9 +1,15 @@
|
||||
import { describe, it, expect, beforeAll } from "vitest";
|
||||
import { definePlugin } from "../index.js";
|
||||
import type { FusionPlugin } from "../../../core/src/plugin-types.js";
|
||||
import type { FusionPlugin, PluginUiContributionSurface } from "../../../core/src/plugin-types.js";
|
||||
import type { TaskStore } from "../../../core/src/store.js";
|
||||
import { validatePluginManifest } from "../../../core/src/plugin-types.js";
|
||||
|
||||
type AssertNever<T extends never> = T;
|
||||
type NoStaleStructuredSurface = AssertNever<Extract<
|
||||
PluginUiContributionSurface,
|
||||
"settings-integration-card" | "onboarding-recommendation-card"
|
||||
>>;
|
||||
|
||||
let validateFn: typeof validatePluginManifest;
|
||||
|
||||
beforeAll(async () => {
|
||||
@@ -238,10 +244,6 @@ describe("Plugin SDK", () => {
|
||||
expect(plugin.uiSlots).toHaveLength(1);
|
||||
expect(plugin.uiSlots![0].slotId).toBe("custom-tab");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
it("PluginDashboardViewDefinition can be used in FusionPlugin", () => {
|
||||
const plugin: FusionPlugin = {
|
||||
manifest: { id: "test", name: "Test", version: "1.0.0" },
|
||||
@@ -256,6 +258,16 @@ describe("Plugin SDK", () => {
|
||||
expect(plugin.dashboardViews).toHaveLength(1);
|
||||
expect(plugin.dashboardViews?.[0].viewId).toBe("graph");
|
||||
});
|
||||
|
||||
it("exposes only normalized structured surface names", () => {
|
||||
const surface: PluginUiContributionSurface = "settings-config-section";
|
||||
expect(surface).toBe("settings-config-section");
|
||||
|
||||
const compileGuard: NoStaleStructuredSurface | undefined = undefined;
|
||||
expect(compileGuard).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
// ── validatePluginManifest ───────────────────────────────────────────
|
||||
|
||||
describe("validatePluginManifest", () => {
|
||||
|
||||
@@ -51,6 +51,17 @@ export type {
|
||||
PluginRouteMethod,
|
||||
PluginUiSurface,
|
||||
PluginUiSlotDefinition,
|
||||
PluginUiContributionSurface,
|
||||
PluginUiContributionWhen,
|
||||
PluginUiActionDescriptor,
|
||||
SettingsProviderCardContribution,
|
||||
SettingsConfigSectionContribution,
|
||||
OnboardingProviderCardContribution,
|
||||
OnboardingSetupHelpContribution,
|
||||
OnboardingProviderRecommendationContribution,
|
||||
PostOnboardingRecommendationContribution,
|
||||
PluginUiContributionDefinition,
|
||||
PluginUiContributionInputDefinition,
|
||||
PluginDashboardViewDefinition,
|
||||
PluginRuntimeManifestMetadata,
|
||||
PluginRuntimeFactory,
|
||||
|
||||
Reference in New Issue
Block a user