1
0
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:
Sebastian Malton 2023-04-21 12:13:36 -04:00
parent 535bac4df9
commit 6741b94220
4 changed files with 55 additions and 26 deletions

View File

@ -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;

View File

@ -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);

View File

@ -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>

View File

@ -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);