mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
added injectable for specifically getting the welcomeRoute, tests
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
This commit is contained in:
parent
9ac417bce5
commit
377cf49fb6
@ -4,19 +4,19 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
import packageJsonInjectable from "../../../vars/package-json.injectable";
|
import welcomeRouteConfigInjectable from "./welcome-route-config.injectable";
|
||||||
import { frontEndRouteInjectionToken } from "../../front-end-route-injection-token";
|
import { frontEndRouteInjectionToken } from "../../front-end-route-injection-token";
|
||||||
|
|
||||||
const defaultWelcomeRouteInjectable = getInjectable({
|
const defaultWelcomeRouteInjectable = getInjectable({
|
||||||
id: "default-welcome-route",
|
id: "default-welcome-route",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const packageJson = di.inject(packageJsonInjectable);
|
const welcomeRoute = di.inject(welcomeRouteConfigInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
path: "/welcome",
|
path: "/welcome",
|
||||||
clusterFrame: false,
|
clusterFrame: false,
|
||||||
isEnabled: computed(() => packageJson.config.welcomeRoute === "/welcome"),
|
isEnabled: computed(() => welcomeRoute === "/welcome"),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,18 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import packageJsonInjectable from "../../../vars/package-json.injectable";
|
||||||
|
|
||||||
|
const welcomeRouteConfigInjectable = getInjectable({
|
||||||
|
id: "welcome-route-config",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const packageJson = di.inject(packageJsonInjectable);
|
||||||
|
|
||||||
|
return packageJson.config.welcomeRoute;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default welcomeRouteConfigInjectable;
|
||||||
@ -4,17 +4,17 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
import packageJsonInjectable from "../../../vars/package-json.injectable";
|
import welcomeRouteConfigInjectable from "./welcome-route-config.injectable";
|
||||||
import { frontEndRouteInjectionToken } from "../../front-end-route-injection-token";
|
import { frontEndRouteInjectionToken } from "../../front-end-route-injection-token";
|
||||||
|
|
||||||
const welcomeRouteInjectable = getInjectable({
|
const welcomeRouteInjectable = getInjectable({
|
||||||
id: "welcome-route",
|
id: "welcome-route",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const packageJson = di.inject(packageJsonInjectable);
|
const welcomeRoute = di.inject(welcomeRouteConfigInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
path: packageJson.config.welcomeRoute,
|
path: welcomeRoute,
|
||||||
clusterFrame: false,
|
clusterFrame: false,
|
||||||
isEnabled: computed(() => true),
|
isEnabled: computed(() => true),
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,28 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export {};
|
|
||||||
|
|
||||||
describe("setting the welcome page", () => {
|
|
||||||
describe("given no extension sets the welcome page", () => {
|
|
||||||
it("sets the default welcome page", () => {
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
it("navigates to the default welcome page", () => {
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("given an extension sets a custom welcome page", () => {
|
|
||||||
it("sets the custom welcome page", () => {
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
it("navigates to the custom welcome page", () => {
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
99
src/features/welcome/setting-welcome-page.test.tsx
Normal file
99
src/features/welcome/setting-welcome-page.test.tsx
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type { RenderResult } from "@testing-library/react";
|
||||||
|
import React from "react";
|
||||||
|
import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
||||||
|
import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
||||||
|
import type { FakeExtensionOptions } from "../../renderer/components/test-utils/get-extension-fake";
|
||||||
|
import welcomeRouteConfigInjectable from "../../common/front-end-routing/routes/welcome/welcome-route-config.injectable";
|
||||||
|
import welcomeRouteInjectable from "../../common/front-end-routing/routes/welcome/welcome-route.injectable";
|
||||||
|
import type { Route } from "../../common/front-end-routing/front-end-route-injection-token";
|
||||||
|
|
||||||
|
|
||||||
|
describe("setting-welcome-page", () => {
|
||||||
|
let applicationBuilder: ApplicationBuilder;
|
||||||
|
let rendered : RenderResult;
|
||||||
|
let welcomeRoute: Route;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
applicationBuilder = getApplicationBuilder();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("given no extension sets the welcome page", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
applicationBuilder.beforeApplicationStart((mainDi) => {
|
||||||
|
mainDi.override(welcomeRouteConfigInjectable, () => "/welcome");
|
||||||
|
});
|
||||||
|
|
||||||
|
applicationBuilder.beforeWindowStart((windowDi) => {
|
||||||
|
windowDi.override(welcomeRouteConfigInjectable, () => "/welcome");
|
||||||
|
});
|
||||||
|
|
||||||
|
// enable the extension even though the welcomeRoute is not overriden
|
||||||
|
applicationBuilder.extensions.enable(extensionWithWelcomePage);
|
||||||
|
rendered = await applicationBuilder.render();
|
||||||
|
|
||||||
|
const windowDi = applicationBuilder.applicationWindow.only.di;
|
||||||
|
|
||||||
|
welcomeRoute = windowDi.inject(welcomeRouteInjectable);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("sets the default welcome page", () => {
|
||||||
|
expect(welcomeRoute.path).toEqual("/welcome");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("navigates to the default welcome page", () => {
|
||||||
|
const welcomePage = rendered.getByTestId("welcome-page"); // from the Welcome component (welcome.tsx)
|
||||||
|
|
||||||
|
expect(welcomePage).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("given an extension specifies a custom welcome page", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
applicationBuilder.beforeApplicationStart((mainDi) => {
|
||||||
|
mainDi.override(welcomeRouteConfigInjectable, () => "/extension/some-extension-name/some-welcome-page");
|
||||||
|
});
|
||||||
|
|
||||||
|
applicationBuilder.beforeWindowStart((windowDi) => {
|
||||||
|
windowDi.override(welcomeRouteConfigInjectable, () => "/extension/some-extension-name/some-welcome-page");
|
||||||
|
});
|
||||||
|
|
||||||
|
applicationBuilder.extensions.enable(extensionWithWelcomePage);
|
||||||
|
rendered = await applicationBuilder.render();
|
||||||
|
|
||||||
|
const windowDi = applicationBuilder.applicationWindow.only.di;
|
||||||
|
|
||||||
|
welcomeRoute = windowDi.inject(welcomeRouteInjectable);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("sets the custom welcome page", () => {
|
||||||
|
expect(welcomeRoute.path).toEqual("/extension/some-extension-name/some-welcome-page");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("navigates to the custom welcome page", () => {
|
||||||
|
const welcomePage = rendered.getByTestId("some-welcome-test-id");
|
||||||
|
|
||||||
|
expect(welcomePage).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const extensionWithWelcomePage: FakeExtensionOptions = {
|
||||||
|
id: "some-extension-id",
|
||||||
|
name: "some-extension-name",
|
||||||
|
|
||||||
|
rendererOptions: {
|
||||||
|
globalPages: [
|
||||||
|
{
|
||||||
|
id: "some-welcome-page",
|
||||||
|
components: {
|
||||||
|
Page: () => <div data-testid="some-welcome-test-id">Welcome page</div>,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
Loading…
Reference in New Issue
Block a user