mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix installing-helm-chart-from-new-tab tests
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
6a92ee2c7c
commit
8dd47b84db
@ -13,11 +13,8 @@ import getRandomInstallChartTabIdInjectable from "../../../renderer/components/d
|
|||||||
import type { RequestCreateHelmRelease } from "../../../common/k8s-api/endpoints/helm-releases.api/request-create.injectable";
|
import type { RequestCreateHelmRelease } from "../../../common/k8s-api/endpoints/helm-releases.api/request-create.injectable";
|
||||||
import requestCreateHelmReleaseInjectable from "../../../common/k8s-api/endpoints/helm-releases.api/request-create.injectable";
|
import requestCreateHelmReleaseInjectable from "../../../common/k8s-api/endpoints/helm-releases.api/request-create.injectable";
|
||||||
import currentPathInjectable from "../../../renderer/routes/current-path.injectable";
|
import currentPathInjectable from "../../../renderer/routes/current-path.injectable";
|
||||||
import namespaceStoreInjectable from "../../../renderer/components/+namespaces/store.injectable";
|
|
||||||
import type { NamespaceStore } from "../../../renderer/components/+namespaces/store";
|
|
||||||
import writeJsonFileInjectable from "../../../common/fs/write-json-file.injectable";
|
import writeJsonFileInjectable from "../../../common/fs/write-json-file.injectable";
|
||||||
import directoryForLensLocalStorageInjectable from "../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable";
|
import directoryForLensLocalStorageInjectable from "../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable";
|
||||||
import hostedClusterIdInjectable from "../../../renderer/cluster-frame-context/hosted-cluster-id.injectable";
|
|
||||||
import dockStoreInjectable from "../../../renderer/components/dock/dock/store.injectable";
|
import dockStoreInjectable from "../../../renderer/components/dock/dock/store.injectable";
|
||||||
import readJsonFileInjectable from "../../../common/fs/read-json-file.injectable";
|
import readJsonFileInjectable from "../../../common/fs/read-json-file.injectable";
|
||||||
import type { DiContainer } from "@ogre-tools/injectable";
|
import type { DiContainer } from "@ogre-tools/injectable";
|
||||||
@ -51,27 +48,12 @@ describe("installing helm chart from new tab", () => {
|
|||||||
|
|
||||||
builder.beforeWindowStart((windowDi) => {
|
builder.beforeWindowStart((windowDi) => {
|
||||||
windowDi.override(directoryForLensLocalStorageInjectable, () => "/some-directory-for-lens-local-storage");
|
windowDi.override(directoryForLensLocalStorageInjectable, () => "/some-directory-for-lens-local-storage");
|
||||||
windowDi.override(hostedClusterIdInjectable, () => "some-cluster-id");
|
|
||||||
windowDi.override(requestHelmChartsInjectable, () => requestHelmChartsMock);
|
windowDi.override(requestHelmChartsInjectable, () => requestHelmChartsMock);
|
||||||
windowDi.override(requestHelmChartVersionsInjectable, () => requestHelmChartVersionsMock);
|
windowDi.override(requestHelmChartVersionsInjectable, () => requestHelmChartVersionsMock);
|
||||||
windowDi.override(requestHelmChartReadmeInjectable, () => requestHelmChartReadmeMock);
|
windowDi.override(requestHelmChartReadmeInjectable, () => requestHelmChartReadmeMock);
|
||||||
windowDi.override(requestHelmChartValuesInjectable, () => requestHelmChartValuesMock);
|
windowDi.override(requestHelmChartValuesInjectable, () => requestHelmChartValuesMock);
|
||||||
windowDi.override(requestCreateHelmReleaseInjectable, () => requestCreateHelmReleaseMock);
|
windowDi.override(requestCreateHelmReleaseInjectable, () => requestCreateHelmReleaseMock);
|
||||||
|
|
||||||
// TODO: Replace store mocking with mock for the actual side-effect (where the namespaces are coming from)
|
|
||||||
windowDi.override(
|
|
||||||
namespaceStoreInjectable,
|
|
||||||
() =>
|
|
||||||
({
|
|
||||||
contextNamespaces: [],
|
|
||||||
items: [
|
|
||||||
{ getName: () => "default" },
|
|
||||||
{ getName: () => "some-other-namespace" },
|
|
||||||
],
|
|
||||||
selectNamespaces: () => {},
|
|
||||||
} as unknown as NamespaceStore),
|
|
||||||
);
|
|
||||||
|
|
||||||
windowDi.override(getRandomInstallChartTabIdInjectable, () =>
|
windowDi.override(getRandomInstallChartTabIdInjectable, () =>
|
||||||
jest
|
jest
|
||||||
.fn(() => "some-irrelevant-tab-id")
|
.fn(() => "some-irrelevant-tab-id")
|
||||||
@ -79,6 +61,9 @@ describe("installing helm chart from new tab", () => {
|
|||||||
.mockReturnValueOnce("some-second-tab-id"),
|
.mockReturnValueOnce("some-second-tab-id"),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
builder.namespaces.add("default");
|
||||||
|
builder.namespaces.add("some-other-namespace");
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("given tab for installing chart was not previously opened and application is started", () => {
|
describe("given tab for installing chart was not previously opened and application is started", () => {
|
||||||
|
|||||||
@ -67,11 +67,25 @@ import type { LensWindow } from "../../../main/start-main-application/lens-windo
|
|||||||
import type { FakeExtensionOptions } from "./get-extension-fake";
|
import type { FakeExtensionOptions } from "./get-extension-fake";
|
||||||
import { getExtensionFakeForMain, getExtensionFakeForRenderer } from "./get-extension-fake";
|
import { getExtensionFakeForMain, getExtensionFakeForRenderer } from "./get-extension-fake";
|
||||||
import namespaceApiInjectable from "../../../common/k8s-api/endpoints/namespace.api.injectable";
|
import namespaceApiInjectable from "../../../common/k8s-api/endpoints/namespace.api.injectable";
|
||||||
|
import { Namespace } from "../../../common/k8s-api/endpoints";
|
||||||
|
|
||||||
type Callback = (di: DiContainer) => void | Promise<void>;
|
type Callback = (di: DiContainer) => void | Promise<void>;
|
||||||
|
|
||||||
type LensWindowWithHelpers = LensWindow & { rendered: RenderResult; di: DiContainer };
|
type LensWindowWithHelpers = LensWindow & { rendered: RenderResult; di: DiContainer };
|
||||||
|
|
||||||
|
const createNamespacesFor = (namespaces: Set<string>): Namespace[] => (
|
||||||
|
Array.from(namespaces, (namespace) => new Namespace({
|
||||||
|
apiVersion: "v1",
|
||||||
|
kind: "Namespace",
|
||||||
|
metadata: {
|
||||||
|
name: namespace,
|
||||||
|
resourceVersion: "1",
|
||||||
|
selfLink: `/api/v1/namespaces/${namespace}`,
|
||||||
|
uid: `namespace-${namespace}`,
|
||||||
|
},
|
||||||
|
}))
|
||||||
|
);
|
||||||
|
|
||||||
export interface ApplicationBuilder {
|
export interface ApplicationBuilder {
|
||||||
mainDi: DiContainer;
|
mainDi: DiContainer;
|
||||||
setEnvironmentToClusterFrame: () => ApplicationBuilder;
|
setEnvironmentToClusterFrame: () => ApplicationBuilder;
|
||||||
@ -249,6 +263,7 @@ export const getApplicationBuilder = () => {
|
|||||||
let applicationHasStarted = false;
|
let applicationHasStarted = false;
|
||||||
|
|
||||||
const namespaces = observable.set<string>();
|
const namespaces = observable.set<string>();
|
||||||
|
const namespaceItems = observable.array<Namespace>();
|
||||||
const selectedNamespaces = observable.set<string>();
|
const selectedNamespaces = observable.set<string>();
|
||||||
|
|
||||||
const builder: ApplicationBuilder = {
|
const builder: ApplicationBuilder = {
|
||||||
@ -312,7 +327,10 @@ export const getApplicationBuilder = () => {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
namespaces: {
|
namespaces: {
|
||||||
add: action((namespace) => namespaces.add(namespace)),
|
add: action((namespace) => {
|
||||||
|
namespaces.add(namespace);
|
||||||
|
namespaceItems.replace(createNamespacesFor(namespaces));
|
||||||
|
}),
|
||||||
select: action((namespace) => selectedNamespaces.add(namespace)),
|
select: action((namespace) => selectedNamespaces.add(namespace)),
|
||||||
},
|
},
|
||||||
applicationMenu: {
|
applicationMenu: {
|
||||||
@ -469,6 +487,7 @@ export const getApplicationBuilder = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const clusterStub = {
|
const clusterStub = {
|
||||||
|
id: "some-cluster-id",
|
||||||
accessibleNamespaces: [],
|
accessibleNamespaces: [],
|
||||||
isAllowedResource: isAllowedResource(allowedResourcesState),
|
isAllowedResource: isAllowedResource(allowedResourcesState),
|
||||||
} as unknown as Cluster;
|
} as unknown as Cluster;
|
||||||
@ -477,7 +496,7 @@ export const getApplicationBuilder = () => {
|
|||||||
computed(() => catalogEntityFromCluster(clusterStub)),
|
computed(() => catalogEntityFromCluster(clusterStub)),
|
||||||
);
|
);
|
||||||
|
|
||||||
windowDi.override(hostedClusterIdInjectable, () => "irrelevant-hosted-cluster-id");
|
windowDi.override(hostedClusterIdInjectable, () => clusterStub.id);
|
||||||
|
|
||||||
// TODO: Figure out a way to remove this stub.
|
// TODO: Figure out a way to remove this stub.
|
||||||
const namespaceStoreStub = {
|
const namespaceStoreStub = {
|
||||||
@ -488,14 +507,14 @@ export const getApplicationBuilder = () => {
|
|||||||
get allowedNamespaces() {
|
get allowedNamespaces() {
|
||||||
return Array.from(namespaces);
|
return Array.from(namespaces);
|
||||||
},
|
},
|
||||||
contextItems: [],
|
contextItems: namespaceItems,
|
||||||
api: windowDi.inject(namespaceApiInjectable),
|
api: windowDi.inject(namespaceApiInjectable),
|
||||||
items: observable.array(),
|
items: namespaceItems,
|
||||||
selectNamespaces: () => {},
|
selectNamespaces: () => {},
|
||||||
getByPath: () => undefined,
|
getByPath: () => undefined,
|
||||||
pickOnlySelected: () => [],
|
pickOnlySelected: () => [],
|
||||||
isSelectedAll: () => false,
|
isSelectedAll: () => false,
|
||||||
getTotalCount: () => 0,
|
getTotalCount: () => namespaceItems.length,
|
||||||
} as Partial<NamespaceStore> as NamespaceStore;
|
} as Partial<NamespaceStore> as NamespaceStore;
|
||||||
|
|
||||||
const clusterFrameContextFake = new ClusterFrameContext(
|
const clusterFrameContextFake = new ClusterFrameContext(
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user