mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
- Remove CatalogEntityItem as it is a needless abstraction - Refix transparent background bug after bad rebase - Improve type safety around CatalogEntities by having CatalogEntitySpec be Partial<Record<string, unknown>> - Cleanup implementation of catalogSyncToRendererInjectable - Always use EntityPreferencesStore as an injectable Signed-off-by: Sebastian Malton <sebastian@malton.name> Make CatalogEntityRegistry.init redundent - Make all IPC injectable Signed-off-by: Sebastian Malton <sebastian@malton.name> Ensure that catalog is initialized during startFrame Signed-off-by: Sebastian Malton <sebastian@malton.name> Fix tests that overroad catalog sync - Actually use the catalog sync Signed-off-by: Sebastian Malton <sebastian@malton.name> Add behavioural tests Signed-off-by: Sebastian Malton <sebastian@malton.name> Don't assign in a computed Signed-off-by: Sebastian Malton <sebastian@malton.name> Make each store have a seperate migration version - Allows each store to only bump its version when necessary - Allows more decoupling from the extension API version so that PRs go stale slower Signed-off-by: Sebastian Malton <sebastian@malton.name> Add behavioural tests for short name length Signed-off-by: Sebastian Malton <sebastian@malton.name> Fix uses of testUsingTakeTime Signed-off-by: Sebastian Malton <sebastian@malton.name> Fix test flakiness by removing animate delay in tests Signed-off-by: Sebastian Malton <sebastian@malton.name> Update snapshots after removing timing sideeffects Signed-off-by: Sebastian Malton <sebastian@malton.name>
188 lines
5.9 KiB
TypeScript
188 lines
5.9 KiB
TypeScript
/**
|
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
*/
|
|
|
|
import type { DiContainer } from "@ogre-tools/injectable";
|
|
import type { RenderResult } from "@testing-library/react";
|
|
import { computed } from "mobx";
|
|
import { KubernetesCluster, WebLink } from "../../common/catalog-entities";
|
|
import navigateToEntitySettingsInjectable from "../../common/front-end-routing/routes/entity-settings/navigate-to-entity-settings.injectable";
|
|
import catalogEntityRegistryInjectable from "../../main/catalog/entity-registry.injectable";
|
|
import { type ApplicationBuilder, getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
|
|
|
describe("Showing correct entity settings", () => {
|
|
let builder: ApplicationBuilder;
|
|
let rendered: RenderResult;
|
|
let windowDi: DiContainer;
|
|
let clusterEntity: KubernetesCluster;
|
|
let localClusterEntity: KubernetesCluster;
|
|
let otherEntity: WebLink;
|
|
|
|
beforeEach(async () => {
|
|
builder = getApplicationBuilder();
|
|
|
|
builder.beforeApplicationStart((mainDi) => {
|
|
clusterEntity = new KubernetesCluster({
|
|
metadata: {
|
|
labels: {},
|
|
name: "some-kubernetes-cluster",
|
|
uid: "some-entity-id",
|
|
},
|
|
spec: {
|
|
kubeconfigContext: "some-context",
|
|
kubeconfigPath: "/some/path/to/kubeconfig",
|
|
},
|
|
status: {
|
|
phase: "connecting",
|
|
},
|
|
});
|
|
localClusterEntity = new KubernetesCluster({
|
|
metadata: {
|
|
labels: {},
|
|
name: "some-local-kubernetes-cluster",
|
|
uid: "some-entity-id-2",
|
|
source: "local",
|
|
},
|
|
spec: {
|
|
kubeconfigContext: "some-context",
|
|
kubeconfigPath: "/some/path/to/local/kubeconfig",
|
|
},
|
|
status: {
|
|
phase: "connecting",
|
|
},
|
|
});
|
|
otherEntity = new WebLink({
|
|
metadata: {
|
|
labels: {},
|
|
name: "some-weblink",
|
|
uid: "some-weblink-id",
|
|
},
|
|
spec: {
|
|
url: "https://my-websome.com",
|
|
},
|
|
status: {
|
|
phase: "available",
|
|
},
|
|
});
|
|
|
|
mainDi.inject(catalogEntityRegistryInjectable).addComputedSource("test-id", computed(() => [clusterEntity, otherEntity, localClusterEntity]));
|
|
});
|
|
|
|
rendered = await builder.render();
|
|
windowDi = builder.applicationWindow.only.di;
|
|
});
|
|
|
|
it("renders", () => {
|
|
expect(rendered.baseElement).toMatchSnapshot();
|
|
});
|
|
|
|
it("does not show entity settings page yet", () => {
|
|
expect(rendered.queryByTestId("entity-settings")).not.toBeInTheDocument();
|
|
});
|
|
|
|
describe("when navigating to non-local cluster entity settings", () => {
|
|
beforeEach(() => {
|
|
const navigateToEntitySettings = windowDi.inject(navigateToEntitySettingsInjectable);
|
|
|
|
navigateToEntitySettings(clusterEntity.getId());
|
|
});
|
|
|
|
it("renders", () => {
|
|
expect(rendered.baseElement).toMatchSnapshot();
|
|
});
|
|
|
|
it("shows entity settings page", () => {
|
|
expect(rendered.queryByTestId("entity-settings")).toBeInTheDocument();
|
|
});
|
|
|
|
it("does not show the General setting tab header for non-local cluster", () => {
|
|
expect(rendered.queryByTestId("general-tab")).not.toBeInTheDocument();
|
|
});
|
|
|
|
it("shows Proxy setting tab header", () => {
|
|
expect(rendered.queryByTestId("proxy-tab")).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows Terminal setting tab header", () => {
|
|
expect(rendered.queryByTestId("terminal-tab")).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows Namespaces setting tab header", () => {
|
|
expect(rendered.queryByTestId("namespace-tab")).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows Metrics setting tab header", () => {
|
|
expect(rendered.queryByTestId("metrics-tab")).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows Node Shell setting tab header", () => {
|
|
expect(rendered.queryByTestId("node-shell-tab")).toBeInTheDocument();
|
|
});
|
|
});
|
|
|
|
describe("when navigating to local cluster entity settings", () => {
|
|
beforeEach(() => {
|
|
const navigateToEntitySettings = windowDi.inject(navigateToEntitySettingsInjectable);
|
|
|
|
navigateToEntitySettings(localClusterEntity.getId());
|
|
});
|
|
|
|
it("renders", () => {
|
|
expect(rendered.baseElement).toMatchSnapshot();
|
|
});
|
|
|
|
it("shows entity settings page", () => {
|
|
expect(rendered.queryByTestId("entity-settings")).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows the General setting tab header", () => {
|
|
expect(rendered.queryByTestId("general-tab")).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows Proxy setting tab header", () => {
|
|
expect(rendered.queryByTestId("proxy-tab")).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows Terminal setting tab header", () => {
|
|
expect(rendered.queryByTestId("terminal-tab")).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows Namespaces setting tab header", () => {
|
|
expect(rendered.queryByTestId("namespace-tab")).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows Metrics setting tab header", () => {
|
|
expect(rendered.queryByTestId("metrics-tab")).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows Node Shell setting tab header", () => {
|
|
expect(rendered.queryByTestId("node-shell-tab")).toBeInTheDocument();
|
|
});
|
|
});
|
|
|
|
describe("when navigating to weblink entity settings", () => {
|
|
beforeEach(() => {
|
|
const navigateToEntitySettings = windowDi.inject(navigateToEntitySettingsInjectable);
|
|
|
|
navigateToEntitySettings(otherEntity.getId());
|
|
});
|
|
|
|
it("renders", () => {
|
|
expect(rendered.baseElement).toMatchSnapshot();
|
|
});
|
|
|
|
it("shows entity settings page", () => {
|
|
expect(rendered.queryByTestId("entity-settings")).toBeInTheDocument();
|
|
});
|
|
|
|
it("does not show the unrelated settings", () => {
|
|
expect(rendered.queryByTestId("general-tab")).not.toBeInTheDocument();
|
|
});
|
|
|
|
it("shows the short name setting", () => {
|
|
expect(rendered.queryByTestId("short-name-tab")).toBeInTheDocument();
|
|
});
|
|
});
|
|
});
|