mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
chore: Fixup kube-object-menu tests
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
535bac4df9
commit
6741b94220
@ -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 { computed } from "mobx";
|
||||||
|
import catalogEntityRegistryInjectable from "./registry.injectable";
|
||||||
|
|
||||||
|
const activeEntityIdInjectable = getInjectable({
|
||||||
|
id: "active-entity-id",
|
||||||
|
instantiate: (di) => {
|
||||||
|
const entityRegistry = di.inject(catalogEntityRegistryInjectable);
|
||||||
|
|
||||||
|
return computed(() => entityRegistry.activeEntity?.getId());
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default activeEntityIdInjectable;
|
||||||
@ -5,16 +5,16 @@
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
import getClusterByIdInjectable from "../../../../features/cluster/storage/common/get-by-id.injectable";
|
import getClusterByIdInjectable from "../../../../features/cluster/storage/common/get-by-id.injectable";
|
||||||
import catalogEntityRegistryInjectable from "./registry.injectable";
|
import activeEntityIdInjectable from "./active-entity-id.injectable";
|
||||||
|
|
||||||
const activeEntityInternalClusterInjectable = getInjectable({
|
const activeEntityInternalClusterInjectable = getInjectable({
|
||||||
id: "active-entity-internal-cluster",
|
id: "active-entity-internal-cluster",
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const getClusterById = di.inject(getClusterByIdInjectable);
|
const getClusterById = di.inject(getClusterByIdInjectable);
|
||||||
const entityRegistry = di.inject(catalogEntityRegistryInjectable);
|
const activeEntityId = di.inject(activeEntityIdInjectable);
|
||||||
|
|
||||||
return computed(() => {
|
return computed(() => {
|
||||||
const entityId = entityRegistry.activeEntity?.getId();
|
const entityId = activeEntityId.get();
|
||||||
|
|
||||||
if (entityId) {
|
if (entityId) {
|
||||||
return getClusterById(entityId);
|
return getClusterById(entityId);
|
||||||
|
|||||||
@ -6,6 +6,7 @@ exports[`kube-object-menu given kube object renders 1`] = `
|
|||||||
<div>
|
<div>
|
||||||
<ul
|
<ul
|
||||||
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
||||||
|
data-testid="menu-actions-for-kube-object-menu-for-some-uid"
|
||||||
id="menu-actions-for-kube-object-menu-for-some-uid"
|
id="menu-actions-for-kube-object-menu-for-some-uid"
|
||||||
>
|
>
|
||||||
<li>
|
<li>
|
||||||
@ -13,7 +14,7 @@ exports[`kube-object-menu given kube object renders 1`] = `
|
|||||||
</li>
|
</li>
|
||||||
<li
|
<li
|
||||||
class="MenuItem"
|
class="MenuItem"
|
||||||
data-testid="menu-action-delete"
|
data-testid="menu-action-delete-for-/foo"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
@ -48,6 +49,7 @@ exports[`kube-object-menu given kube object when removing kube object renders 1`
|
|||||||
<div>
|
<div>
|
||||||
<ul
|
<ul
|
||||||
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
||||||
|
data-testid="menu-actions-for-kube-object-menu-for-some-uid"
|
||||||
id="menu-actions-for-kube-object-menu-for-some-uid"
|
id="menu-actions-for-kube-object-menu-for-some-uid"
|
||||||
>
|
>
|
||||||
<li>
|
<li>
|
||||||
@ -55,7 +57,7 @@ exports[`kube-object-menu given kube object when removing kube object renders 1`
|
|||||||
</li>
|
</li>
|
||||||
<li
|
<li
|
||||||
class="MenuItem"
|
class="MenuItem"
|
||||||
data-testid="menu-action-delete"
|
data-testid="menu-action-delete-for-/foo"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
@ -109,7 +111,7 @@ exports[`kube-object-menu given kube object when removing kube object renders 1`
|
|||||||
</b>
|
</b>
|
||||||
from
|
from
|
||||||
<b>
|
<b>
|
||||||
Some name
|
some-context-name
|
||||||
</b>
|
</b>
|
||||||
?
|
?
|
||||||
</p>
|
</p>
|
||||||
@ -143,11 +145,12 @@ exports[`kube-object-menu given kube object when rerendered with different kube
|
|||||||
<div>
|
<div>
|
||||||
<ul
|
<ul
|
||||||
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
||||||
|
data-testid="menu-actions-for-kube-object-menu-for-some-other-uid"
|
||||||
id="menu-actions-for-kube-object-menu-for-some-other-uid"
|
id="menu-actions-for-kube-object-menu-for-some-other-uid"
|
||||||
>
|
>
|
||||||
<li
|
<li
|
||||||
class="MenuItem"
|
class="MenuItem"
|
||||||
data-testid="menu-action-delete"
|
data-testid="menu-action-delete-for-/some-other-api-version/some-other-kind/some-other-namespace/some-other-name"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
@ -182,11 +185,12 @@ exports[`kube-object-menu given kube object when rerendered with different kube
|
|||||||
<div>
|
<div>
|
||||||
<ul
|
<ul
|
||||||
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
||||||
|
data-testid="menu-actions-for-kube-object-menu-for-some-other-uid"
|
||||||
id="menu-actions-for-kube-object-menu-for-some-other-uid"
|
id="menu-actions-for-kube-object-menu-for-some-other-uid"
|
||||||
>
|
>
|
||||||
<li
|
<li
|
||||||
class="MenuItem"
|
class="MenuItem"
|
||||||
data-testid="menu-action-delete"
|
data-testid="menu-action-delete-for-/some-other-api-version/some-other-kind/some-other-namespace/some-other-name"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
@ -240,7 +244,7 @@ exports[`kube-object-menu given kube object when rerendered with different kube
|
|||||||
</b>
|
</b>
|
||||||
from
|
from
|
||||||
<b>
|
<b>
|
||||||
Some name
|
some-context-name
|
||||||
</b>
|
</b>
|
||||||
?
|
?
|
||||||
</p>
|
</p>
|
||||||
@ -274,6 +278,7 @@ exports[`kube-object-menu given kube object with namespace when removing kube ob
|
|||||||
<div>
|
<div>
|
||||||
<ul
|
<ul
|
||||||
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
||||||
|
data-testid="menu-actions-for-kube-object-menu-for-some-uid"
|
||||||
id="menu-actions-for-kube-object-menu-for-some-uid"
|
id="menu-actions-for-kube-object-menu-for-some-uid"
|
||||||
>
|
>
|
||||||
<li>
|
<li>
|
||||||
@ -281,7 +286,7 @@ exports[`kube-object-menu given kube object with namespace when removing kube ob
|
|||||||
</li>
|
</li>
|
||||||
<li
|
<li
|
||||||
class="MenuItem"
|
class="MenuItem"
|
||||||
data-testid="menu-action-delete"
|
data-testid="menu-action-delete-for-/foo"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
@ -335,7 +340,7 @@ exports[`kube-object-menu given kube object with namespace when removing kube ob
|
|||||||
</b>
|
</b>
|
||||||
from
|
from
|
||||||
<b>
|
<b>
|
||||||
Some name
|
some-context-name
|
||||||
</b>
|
</b>
|
||||||
?
|
?
|
||||||
</p>
|
</p>
|
||||||
@ -369,6 +374,7 @@ exports[`kube-object-menu given kube object without namespace when removing kube
|
|||||||
<div>
|
<div>
|
||||||
<ul
|
<ul
|
||||||
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
||||||
|
data-testid="menu-actions-for-kube-object-menu-for-some-uid"
|
||||||
id="menu-actions-for-kube-object-menu-for-some-uid"
|
id="menu-actions-for-kube-object-menu-for-some-uid"
|
||||||
>
|
>
|
||||||
<li>
|
<li>
|
||||||
@ -376,7 +382,7 @@ exports[`kube-object-menu given kube object without namespace when removing kube
|
|||||||
</li>
|
</li>
|
||||||
<li
|
<li
|
||||||
class="MenuItem"
|
class="MenuItem"
|
||||||
data-testid="menu-action-delete"
|
data-testid="menu-action-delete-for-/foo"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
@ -430,7 +436,7 @@ exports[`kube-object-menu given kube object without namespace when removing kube
|
|||||||
</b>
|
</b>
|
||||||
from
|
from
|
||||||
<b>
|
<b>
|
||||||
Some name
|
some-context-name
|
||||||
</b>
|
</b>
|
||||||
?
|
?
|
||||||
</p>
|
</p>
|
||||||
@ -463,6 +469,7 @@ exports[`kube-object-menu given no kube object, renders 1`] = `
|
|||||||
<div>
|
<div>
|
||||||
<ul
|
<ul
|
||||||
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
class="Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
||||||
|
data-testid="menu-actions-for-kube-object-menu-for-undefined"
|
||||||
id="menu-actions-for-kube-object-menu-for-undefined"
|
id="menu-actions-for-kube-object-menu-for-undefined"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import { getDiForUnitTesting } from "../../getDiForUnitTesting";
|
|||||||
import { computed, runInAction } from "mobx";
|
import { computed, runInAction } from "mobx";
|
||||||
import type { DiRender } from "../test-utils/renderFor";
|
import type { DiRender } from "../test-utils/renderFor";
|
||||||
import { renderFor } from "../test-utils/renderFor";
|
import { renderFor } from "../test-utils/renderFor";
|
||||||
import type { Cluster } from "../../../common/cluster/cluster";
|
import { Cluster } from "../../../common/cluster/cluster";
|
||||||
import type { ApiManager } from "../../../common/k8s-api/api-manager";
|
import type { ApiManager } from "../../../common/k8s-api/api-manager";
|
||||||
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
|
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
|
||||||
import { KubeObjectMenu } from "./index";
|
import { KubeObjectMenu } from "./index";
|
||||||
@ -27,6 +27,9 @@ import { kubeObjectMenuItemInjectionToken } from "./kube-object-menu-item-inject
|
|||||||
import activeEntityInternalClusterInjectable from "../../api/catalog/entity/get-active-cluster-entity.injectable";
|
import activeEntityInternalClusterInjectable from "../../api/catalog/entity/get-active-cluster-entity.injectable";
|
||||||
import directoryForTempInjectable from "../../../common/app-paths/directory-for-temp/directory-for-temp.injectable";
|
import directoryForTempInjectable from "../../../common/app-paths/directory-for-temp/directory-for-temp.injectable";
|
||||||
import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
|
import hostedClusterIdInjectable from "../../cluster-frame-context/hosted-cluster-id.injectable";
|
||||||
|
import clustersStateInjectable from "../../../features/cluster/storage/common/state.injectable";
|
||||||
|
import activeEntityIdInjectable from "../../api/catalog/entity/active-entity-id.injectable";
|
||||||
|
|
||||||
// TODO: make `animated={false}` not required to make tests deterministic
|
// TODO: make `animated={false}` not required to make tests deterministic
|
||||||
describe("kube-object-menu", () => {
|
describe("kube-object-menu", () => {
|
||||||
@ -36,9 +39,17 @@ describe("kube-object-menu", () => {
|
|||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
di = getDiForUnitTesting();
|
di = getDiForUnitTesting();
|
||||||
|
|
||||||
|
di.override(hostedClusterIdInjectable, () => "some-cluster-id");
|
||||||
di.override(directoryForUserDataInjectable, () => "/some-directory-for-user-data");
|
di.override(directoryForUserDataInjectable, () => "/some-directory-for-user-data");
|
||||||
di.override(directoryForTempInjectable, () => "/some-directory-for-temp");
|
di.override(directoryForTempInjectable, () => "/some-directory-for-temp");
|
||||||
|
|
||||||
|
di.inject(clustersStateInjectable).set("some-cluster-id", new Cluster({
|
||||||
|
id: "some-cluster-id",
|
||||||
|
contextName: "some-context-name",
|
||||||
|
kubeConfigPath: "/some-path-to-a-kubeconfig",
|
||||||
|
}));
|
||||||
|
di.override(activeEntityIdInjectable, () => computed(() => "some-cluster-id"));
|
||||||
|
|
||||||
runInAction(() => {
|
runInAction(() => {
|
||||||
di.register(
|
di.register(
|
||||||
someMenuItemInjectable,
|
someMenuItemInjectable,
|
||||||
@ -49,13 +60,6 @@ describe("kube-object-menu", () => {
|
|||||||
|
|
||||||
render = renderFor(di);
|
render = renderFor(di);
|
||||||
|
|
||||||
di.override(
|
|
||||||
activeEntityInternalClusterInjectable,
|
|
||||||
() => computed(() => ({
|
|
||||||
name: computed(() => "Some name"),
|
|
||||||
} as Cluster)),
|
|
||||||
);
|
|
||||||
|
|
||||||
di.override(
|
di.override(
|
||||||
apiManagerInjectable,
|
apiManagerInjectable,
|
||||||
() =>
|
() =>
|
||||||
@ -138,7 +142,7 @@ describe("kube-object-menu", () => {
|
|||||||
name: "some-other-name",
|
name: "some-other-name",
|
||||||
resourceVersion: "some-other-resource-version",
|
resourceVersion: "some-other-resource-version",
|
||||||
namespace: "some-other-namespace",
|
namespace: "some-other-namespace",
|
||||||
selfLink: "some-other-api-version/some-other-kind/some-other-namespace/some-other-name",
|
selfLink: "/some-other-api-version/some-other-kind/some-other-namespace/some-other-name",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -161,7 +165,7 @@ describe("kube-object-menu", () => {
|
|||||||
|
|
||||||
describe("when removing new kube object", () => {
|
describe("when removing new kube object", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
userEvent.click(await screen.findByTestId("menu-action-delete"));
|
userEvent.click(await screen.findByTestId("menu-action-delete-for-/some-other-api-version/some-other-kind/some-other-namespace/some-other-name"));
|
||||||
});
|
});
|
||||||
|
|
||||||
it("renders", async () => {
|
it("renders", async () => {
|
||||||
@ -173,7 +177,7 @@ describe("kube-object-menu", () => {
|
|||||||
|
|
||||||
describe("when removing kube object", () => {
|
describe("when removing kube object", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
userEvent.click(await screen.findByTestId("menu-action-delete"));
|
userEvent.click(await screen.findByTestId("menu-action-delete-for-/foo"));
|
||||||
});
|
});
|
||||||
|
|
||||||
it("renders", async () => {
|
it("renders", async () => {
|
||||||
@ -236,7 +240,7 @@ describe("kube-object-menu", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("when removing kube object, renders confirmation dialog with namespace", async () => {
|
it("when removing kube object, renders confirmation dialog with namespace", async () => {
|
||||||
const menuItem = await screen.findByTestId("menu-action-delete");
|
const menuItem = await screen.findByTestId("menu-action-delete-for-/foo");
|
||||||
|
|
||||||
userEvent.click(menuItem);
|
userEvent.click(menuItem);
|
||||||
|
|
||||||
@ -274,7 +278,7 @@ describe("kube-object-menu", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("when removing kube object, renders confirmation dialog without namespace", async () => {
|
it("when removing kube object, renders confirmation dialog without namespace", async () => {
|
||||||
const menuItem = await screen.findByTestId("menu-action-delete");
|
const menuItem = await screen.findByTestId("menu-action-delete-for-/foo");
|
||||||
|
|
||||||
userEvent.click(menuItem);
|
userEvent.click(menuItem);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user