1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

start cleaningup ipc work

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-06-16 14:43:35 -04:00
parent 0a7c214767
commit 6b09ee4937
4 changed files with 207 additions and 13 deletions

View File

@ -0,0 +1,69 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`cluster connection status renders 1`] = `
<body>
<div>
<div
class="StatusBar"
>
<div
class="leftSide"
/>
<div
class="rightSide"
/>
</div>
<div
class="Notifications flex column align-flex-end"
/>
</div>
</body>
`;
exports[`cluster connection status when navigating to cluster connection renders 1`] = `
<body>
<div>
<div
class="StatusBar"
>
<div
class="leftSide"
/>
<div
class="rightSide"
/>
</div>
<div
class="ClusterView flex column align-center"
>
<div
class="status flex column box center align-center justify-center box center"
data-testid="cluster-status"
>
<div
class="flex items-center column gaps"
>
<h2>
minikube
</h2>
<div
class="Spinner spinner"
/>
<pre
class="kube-auth-out"
>
<p>
Connecting
</p>
</pre>
<pre />
</div>
</div>
</div>
<div
class="Notifications flex column align-flex-end"
/>
</div>
</body>
`;

View File

@ -0,0 +1,103 @@
/**
* 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 type { ClusterStore } from "../../common/cluster-store/cluster-store";
import clusterStoreInjectable from "../../common/cluster-store/cluster-store.injectable";
import type { ClusterId } from "../../common/cluster-types";
import type { Cluster } from "../../common/cluster/cluster";
import navigateToClusterViewInjectable from "../../common/front-end-routing/routes/cluster-view/navigate-to-cluster-view.injectable";
import type { ReadFileSync } from "../../common/fs/read-file-sync.injectable";
import readFileSyncInjectable from "../../common/fs/read-file-sync.injectable";
import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
import createClusterInjectable from "../../renderer/create-cluster/create-cluster.injectable";
describe("cluster connection status", () => {
let clusterStore: ClusterStore;
let clusters: Map<ClusterId, Cluster>;
let cluster: Cluster;
let applicationBuilder: ApplicationBuilder;
let result: RenderResult;
beforeEach(async () => {
applicationBuilder = getApplicationBuilder();
const readFileSyncMock: ReadFileSync = (filePath) => {
expect(filePath).toBe("/some/file/path");
return JSON.stringify({
apiVersion: "v1",
clusters: [{
name: "minikube",
cluster: {
server: "https://192.168.64.3:8443",
},
}],
contexts: [{
context: {
cluster: "minikube",
user: "minikube",
},
name: "minikube",
}],
users: [{
name: "minikube",
}],
kind: "Config",
preferences: {},
});
};
applicationBuilder.dis.rendererDi.override(readFileSyncInjectable, () => readFileSyncMock);
clusterStore = ({
clusters,
get clustersList() {
return [...clusters.values()];
},
getById: (id) => clusters.get(id),
}) as ClusterStore;
applicationBuilder.dis.mainDi.override(clusterStoreInjectable, () => clusterStore);
applicationBuilder.dis.rendererDi.override(clusterStoreInjectable, () => clusterStore);
result = await applicationBuilder.render();
const createCluster = applicationBuilder.dis.rendererDi.inject(createClusterInjectable);
cluster = createCluster({
contextName: "minikube",
id: "some-cluster-id",
kubeConfigPath: "/some/file/path",
}, {
clusterServerUrl: "https://localhost:1234",
});
clusters = new Map();
clusters.set(cluster.id, cluster);
});
it("renders", () => {
expect(result.baseElement).toMatchSnapshot();
});
describe("when navigating to cluster connection", () => {
beforeEach(() => {
const navigateToClusterView = applicationBuilder.dis.rendererDi.inject(navigateToClusterViewInjectable);
navigateToClusterView(cluster.id);
});
it("renders", () => {
expect(result.baseElement).toMatchSnapshot();
});
it("shows cluster status screen", () => {
expect(result.queryByTestId("cluster-status")).not.toBeNull();
});
});
});

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { RenderResult } from "@testing-library/react";
import type { ClusterStore } from "../../common/cluster-store/cluster-store";
import clusterStoreInjectable from "../../common/cluster-store/cluster-store.injectable";
import type { ClusterId } from "../../common/cluster-types";
@ -19,6 +20,7 @@ describe("cluster connection status", () => {
let clusters: Map<ClusterId, Cluster>;
let cluster: Cluster;
let applicationBuilder: ApplicationBuilder;
let result: RenderResult;
beforeEach(async () => {
applicationBuilder = getApplicationBuilder();
@ -51,7 +53,19 @@ describe("cluster connection status", () => {
applicationBuilder.dis.rendererDi.override(readFileSyncInjectable, () => readFileSyncMock);
const navigateToClusterView = applicationBuilder.dis.rendererDi.inject(navigateToClusterViewInjectable);
clusterStore = ({
clusters,
get clustersList() {
return [...clusters.values()];
},
getById: (id) => clusters.get(id),
}) as ClusterStore;
applicationBuilder.dis.mainDi.override(clusterStoreInjectable, () => clusterStore);
applicationBuilder.dis.rendererDi.override(clusterStoreInjectable, () => clusterStore);
result = await applicationBuilder.render();
const createCluster = applicationBuilder.dis.rendererDi.inject(createClusterInjectable);
cluster = createCluster({
@ -65,20 +79,25 @@ describe("cluster connection status", () => {
clusters = new Map();
clusters.set(cluster.id, cluster);
});
clusterStore = ({
clusters,
get clustersList() {
return [...clusters.values()];
},
getById: (id) => clusters.get(id),
}) as ClusterStore;
it("renders", () => {
expect(result.baseElement).toMatchSnapshot();
});
applicationBuilder.dis.mainDi.override(clusterStoreInjectable, () => clusterStore);
applicationBuilder.dis.rendererDi.override(clusterStoreInjectable, () => clusterStore);
describe("when navigating to cluster connection", () => {
beforeEach(() => {
const navigateToClusterView = applicationBuilder.dis.rendererDi.inject(navigateToClusterViewInjectable);
await applicationBuilder.render();
navigateToClusterView(cluster.id);
});
navigateToClusterView(cluster.id);
it("renders", () => {
expect(result.baseElement).toMatchSnapshot();
});
it("shows cluster status screen", () => {
expect(result.queryByTestId("cluster-status")).not.toBeNull();
});
});
});

View File

@ -130,7 +130,10 @@ const NonInjectedClusterStatus = observer((props: ClusterStatusProps & Dependenc
};
return (
<div className={cssNames(styles.status, "flex column box center align-center justify-center", className)}>
<div
className={cssNames(styles.status, "flex column box center align-center justify-center", className)}
data-testid="cluster-status"
>
<div className="flex items-center column gaps">
<h2>{clusterName}</h2>
{renderStatusIcon()}