diff --git a/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx b/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx
index fbfb425fe2..26a2d17c8d 100644
--- a/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx
+++ b/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx
@@ -16,10 +16,9 @@ import readJsonFileInjectable from "../../common/fs/read-json-file.injectable";
import type { DiContainer } from "@ogre-tools/injectable";
import { navigateToRouteInjectionToken } from "../../common/front-end-routing/navigate-to-route-injection-token";
import assert from "assert";
-import type { FakeExtensionData } from "../../renderer/components/test-utils/get-renderer-extension-fake";
-import { getRendererExtensionFakeFor } from "../../renderer/components/test-utils/get-renderer-extension-fake";
import hostedClusterIdInjectable from "../../renderer/cluster-frame-context/hosted-cluster-id.injectable";
import { advanceFakeTime, useFakeTime } from "../../common/test-utils/use-fake-time";
+import { getExtensionFakeFor } from "../../renderer/components/test-utils/get-extension-fake";
// TODO: Make tooltips free of side effects by making it deterministic
jest.mock("../../renderer/components/tooltip/withTooltip", () => ({
@@ -51,10 +50,75 @@ describe("cluster - sidebar and tab navigation for extensions", () => {
describe("given extension with cluster pages and cluster page menus", () => {
beforeEach(() => {
- const getRendererExtensionFake = getRendererExtensionFakeFor(applicationBuilder);
- const testExtension = getRendererExtensionFake(extensionStubWithSidebarItems);
+ const getExtensionFake = getExtensionFakeFor(applicationBuilder);
- applicationBuilder.extensions.renderer.enable(testExtension);
+ const testExtension = getExtensionFake({
+ id: "some-extension-id",
+ name: "some-extension-name",
+
+ rendererOptions: {
+ clusterPages: [
+ {
+ components: {
+ Page: () => {
+ throw new Error("should never come here");
+ },
+ },
+ },
+ {
+ id: "some-child-page-id",
+
+ components: {
+ Page: () =>
Some child page
,
+ },
+ },
+ {
+ id: "some-other-child-page-id",
+
+ components: {
+ Page: () => (
+ Some other child page
+ ),
+ },
+ },
+ ],
+
+ clusterPageMenus: [
+ {
+ id: "some-parent-id",
+ title: "Parent",
+
+ components: {
+ Icon: () => Some icon
,
+ },
+ },
+
+ {
+ id: "some-child-id",
+ target: { pageId: "some-child-page-id" },
+ parentId: "some-parent-id",
+ title: "Child 1",
+
+ components: {
+ Icon: null as never,
+ },
+ },
+
+ {
+ id: "some-other-child-id",
+ target: { pageId: "some-other-child-page-id" },
+ parentId: "some-parent-id",
+ title: "Child 2",
+
+ components: {
+ Icon: null as never,
+ },
+ },
+ ],
+ },
+ });
+
+ applicationBuilder.extensions.enable(testExtension);
});
describe("given no state for expanded sidebar items exists, and navigated to child sidebar item, when rendered", () => {
@@ -355,65 +419,3 @@ describe("cluster - sidebar and tab navigation for extensions", () => {
});
});
});
-
-const extensionStubWithSidebarItems: FakeExtensionData = {
- id: "some-extension-id",
- name: "some-extension-name",
- clusterPages: [
- {
- components: {
- Page: () => {
- throw new Error("should never come here");
- },
- },
- },
- {
- id: "some-child-page-id",
-
- components: {
- Page: () => Some child page
,
- },
- },
- {
- id: "some-other-child-page-id",
-
- components: {
- Page: () => (
- Some other child page
- ),
- },
- },
- ],
- clusterPageMenus: [
- {
- id: "some-parent-id",
- title: "Parent",
-
- components: {
- Icon: () => Some icon
,
- },
- },
-
- {
- id: "some-child-id",
- target: { pageId: "some-child-page-id" },
- parentId: "some-parent-id",
- title: "Child 1",
-
- components: {
- Icon: null as never,
- },
- },
-
- {
- id: "some-other-child-id",
- target: { pageId: "some-other-child-page-id" },
- parentId: "some-parent-id",
- title: "Child 2",
-
- components: {
- Icon: null as never,
- },
- },
- ],
-};
diff --git a/src/renderer/components/test-utils/get-extension-fake.ts b/src/renderer/components/test-utils/get-extension-fake.ts
index eb18881455..6237f2a83f 100644
--- a/src/renderer/components/test-utils/get-extension-fake.ts
+++ b/src/renderer/components/test-utils/get-extension-fake.ts
@@ -20,12 +20,17 @@ import type { DiContainer } from "@ogre-tools/injectable";
export class TestExtensionMain extends LensMainExtension {}
export class TestExtensionRenderer extends LensRendererExtension {}
-export type GetExtensionFake = (arg: {
+export interface FakeExtensionOptions {
id: string;
name: string;
rendererOptions?: Partial;
mainOptions?: Partial;
-}) => { main: TestExtensionMain; renderer: TestExtensionRenderer };
+}
+
+export type GetExtensionFake = (arg: FakeExtensionOptions) => {
+ main: TestExtensionMain;
+ renderer: TestExtensionRenderer;
+};
export const getExtensionFakeFor =
(builder: ApplicationBuilder): GetExtensionFake =>