mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Increase credibility of some unit tests by using actual instance as stub
Signed-off-by: Janne Savolainen <janne.savolainen@houston-inc.com>
This commit is contained in:
parent
76a9973ab1
commit
3a124a6393
@ -7,9 +7,9 @@ exports[`kube-object-menu given kube object renders 1`] = `
|
|||||||
<ul
|
<ul
|
||||||
class="Animate opacity Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
class="Animate opacity Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
||||||
>
|
>
|
||||||
<div>
|
<li>
|
||||||
Some menu item
|
Some menu item
|
||||||
</div>
|
</li>
|
||||||
<li
|
<li
|
||||||
class="MenuItem"
|
class="MenuItem"
|
||||||
data-testid="menu-action-remove"
|
data-testid="menu-action-remove"
|
||||||
@ -55,9 +55,9 @@ exports[`kube-object-menu given kube object when removing kube object renders 1`
|
|||||||
<ul
|
<ul
|
||||||
class="Animate opacity Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
class="Animate opacity Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
||||||
>
|
>
|
||||||
<div>
|
<li>
|
||||||
Some menu item
|
Some menu item
|
||||||
</div>
|
</li>
|
||||||
<li
|
<li
|
||||||
class="MenuItem"
|
class="MenuItem"
|
||||||
data-testid="menu-action-remove"
|
data-testid="menu-action-remove"
|
||||||
@ -156,9 +156,9 @@ exports[`kube-object-menu given kube object with namespace when removing kube ob
|
|||||||
<ul
|
<ul
|
||||||
class="Animate opacity Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
class="Animate opacity Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
||||||
>
|
>
|
||||||
<div>
|
<li>
|
||||||
Some menu item
|
Some menu item
|
||||||
</div>
|
</li>
|
||||||
<li
|
<li
|
||||||
class="MenuItem"
|
class="MenuItem"
|
||||||
data-testid="menu-action-remove"
|
data-testid="menu-action-remove"
|
||||||
@ -257,9 +257,9 @@ exports[`kube-object-menu given kube object without namespace when removing kube
|
|||||||
<ul
|
<ul
|
||||||
class="Animate opacity Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
class="Animate opacity Menu MenuActions flex KubeObjectMenu toolbar gaps right bottom"
|
||||||
>
|
>
|
||||||
<div>
|
<li>
|
||||||
Some menu item
|
Some menu item
|
||||||
</div>
|
</li>
|
||||||
<li
|
<li
|
||||||
class="MenuItem"
|
class="MenuItem"
|
||||||
data-testid="menu-action-remove"
|
data-testid="menu-action-remove"
|
||||||
|
|||||||
@ -26,20 +26,18 @@ import { KubeObjectMenu, KubeObjectMenuDependencies } from "./kube-object-menu";
|
|||||||
import { KubeObject } from "../../../common/k8s-api/kube-object";
|
import { KubeObject } from "../../../common/k8s-api/kube-object";
|
||||||
import userEvent from "@testing-library/user-event";
|
import userEvent from "@testing-library/user-event";
|
||||||
import type { KubeApi } from "../../../common/k8s-api/kube-api";
|
import type { KubeApi } from "../../../common/k8s-api/kube-api";
|
||||||
import type {
|
import type { KubeObjectMenuRegistration } from "../../../extensions/registries";
|
||||||
IHasGettableItemsForKind,
|
|
||||||
KubeObjectMenuRegistration,
|
|
||||||
} from "../../../extensions/registries";
|
|
||||||
import type { IGettableStore } from "../../../common/k8s-api/api-manager";
|
import type { IGettableStore } from "../../../common/k8s-api/api-manager";
|
||||||
import type { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
|
import type { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
|
||||||
import { ConfirmDialog } from "../confirm-dialog";
|
import { ConfirmDialog } from "../confirm-dialog";
|
||||||
import asyncFn from "@async-fn/jest";
|
import asyncFn from "@async-fn/jest";
|
||||||
|
import { KubeObjectMenuRegistry } from "../../../extensions/registries";
|
||||||
|
|
||||||
describe("kube-object-menu", () => {
|
describe("kube-object-menu", () => {
|
||||||
let hideDetailsStub: () => void;
|
let hideDetailsStub: () => void;
|
||||||
let editResourceTabStub: () => void;
|
let editResourceTabStub: () => void;
|
||||||
let apiManagerStub: IGettableStore;
|
let apiManagerStub: IGettableStore;
|
||||||
let kubeObjectMenuRegistryStub: IHasGettableItemsForKind;
|
let kubeObjectMenuRegistry: KubeObjectMenuRegistry;
|
||||||
let objectStub: KubeObject | null;
|
let objectStub: KubeObject | null;
|
||||||
let dependencies: KubeObjectMenuDependencies<KubeObject>;
|
let dependencies: KubeObjectMenuDependencies<KubeObject>;
|
||||||
|
|
||||||
@ -61,20 +59,33 @@ describe("kube-object-menu", () => {
|
|||||||
): TKubeObjectStore | undefined => undefined,
|
): TKubeObjectStore | undefined => undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
const MenuItemComponentStub: React.FC = () => <div>Some menu item</div>;
|
// TODO: Remove global shared state
|
||||||
|
KubeObjectMenuRegistry.resetInstance();
|
||||||
|
KubeObjectMenuRegistry.createInstance();
|
||||||
|
kubeObjectMenuRegistry = KubeObjectMenuRegistry.getInstance();
|
||||||
|
|
||||||
const dynamicMenuItemStub: KubeObjectMenuRegistration = {
|
const MenuItemComponent: React.FC = () => <li>Some menu item</li>;
|
||||||
apiVersions: ["irrelevant"],
|
|
||||||
components: { MenuItem: MenuItemComponentStub },
|
|
||||||
kind: "irrelevant",
|
|
||||||
};
|
|
||||||
|
|
||||||
kubeObjectMenuRegistryStub = {
|
addDynamicMenuItem({
|
||||||
// eslint-disable-next-line unused-imports/no-unused-vars-ts
|
kubeObjectMenuRegistry,
|
||||||
getItemsForKind: (kind: string, apiVersion: string): any => [
|
MenuItemComponent,
|
||||||
dynamicMenuItemStub,
|
apiVersions: ["some-api-version"],
|
||||||
],
|
kind: "some-kind",
|
||||||
};
|
});
|
||||||
|
|
||||||
|
addDynamicMenuItem({
|
||||||
|
kubeObjectMenuRegistry,
|
||||||
|
MenuItemComponent,
|
||||||
|
apiVersions: ["some-unrelated-api-version"],
|
||||||
|
kind: "some-kind",
|
||||||
|
});
|
||||||
|
|
||||||
|
addDynamicMenuItem({
|
||||||
|
kubeObjectMenuRegistry,
|
||||||
|
MenuItemComponent,
|
||||||
|
apiVersions: ["some-api-version"],
|
||||||
|
kind: "some-unrelated-kind",
|
||||||
|
});
|
||||||
|
|
||||||
hideDetailsStub = () => {};
|
hideDetailsStub = () => {};
|
||||||
|
|
||||||
@ -83,7 +94,7 @@ describe("kube-object-menu", () => {
|
|||||||
dependencies = {
|
dependencies = {
|
||||||
clusterName: "Some cluster name",
|
clusterName: "Some cluster name",
|
||||||
apiManager: apiManagerStub,
|
apiManager: apiManagerStub,
|
||||||
kubeObjectMenuRegistry: kubeObjectMenuRegistryStub,
|
kubeObjectMenuRegistry,
|
||||||
hideDetails: hideDetailsStub,
|
hideDetails: hideDetailsStub,
|
||||||
editResourceTab: editResourceTabStub,
|
editResourceTab: editResourceTabStub,
|
||||||
};
|
};
|
||||||
@ -178,7 +189,8 @@ describe("kube-object-menu", () => {
|
|||||||
it("when removal resolves, closes the confirmation dialog", async () => {
|
it("when removal resolves, closes the confirmation dialog", async () => {
|
||||||
await removeActionMock.resolve();
|
await removeActionMock.resolve();
|
||||||
|
|
||||||
expect(queryByTestId("confirmation-dialog")).toBeNull(); });
|
expect(queryByTestId("confirmation-dialog")).toBeNull();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -261,3 +273,23 @@ describe("kube-object-menu", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const addDynamicMenuItem = ({
|
||||||
|
kubeObjectMenuRegistry,
|
||||||
|
MenuItemComponent,
|
||||||
|
apiVersions,
|
||||||
|
kind,
|
||||||
|
}: {
|
||||||
|
kubeObjectMenuRegistry: KubeObjectMenuRegistry;
|
||||||
|
MenuItemComponent: React.ComponentType;
|
||||||
|
apiVersions: string[];
|
||||||
|
kind: string;
|
||||||
|
}) => {
|
||||||
|
const dynamicMenuItemStub: KubeObjectMenuRegistration = {
|
||||||
|
apiVersions,
|
||||||
|
kind,
|
||||||
|
components: { MenuItem: MenuItemComponent },
|
||||||
|
};
|
||||||
|
|
||||||
|
kubeObjectMenuRegistry.add(dynamicMenuItemStub);
|
||||||
|
};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user