/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import type { DiContainer } from "@ogre-tools/injectable"; import "@testing-library/jest-dom/extend-expect"; import type { RenderResult } from "@testing-library/react"; import React from "react"; import subscribeStoresInjectable from "../../kube-watch-api/subscribe-stores.injectable"; import { getDiForUnitTesting } from "../../getDiForUnitTesting"; import kubeSelectedUrlParamInjectable from "../kube-detail-params/kube-selected-url.injectable"; import toggleKubeDetailsPaneInjectable from "../kube-detail-params/toggle-details.injectable"; import type { DiRender } from "../test-utils/renderFor"; import { renderFor } from "../test-utils/renderFor"; import { KubeObjectListLayout } from "./index"; import appPathsStateInjectable from "../../../common/app-paths/app-paths-state.injectable"; import podStoreInjectable from "../+workloads-pods/store.injectable"; import storesAndApisCanBeCreatedInjectable from "../../stores-apis-can-be-created.injectable"; import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable"; import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; import hostedClusterInjectable from "../../cluster-frame-context/hosted-cluster.injectable"; import createClusterInjectable from "../../../main/create-cluster/create-cluster.injectable"; import type { PodStore } from "../+workloads-pods/store"; describe("kube-object-list-layout", () => { let di: DiContainer; let render: DiRender; let podStore: PodStore; beforeEach(() => { di = getDiForUnitTesting({ doGeneralOverrides: true }); di.override(directoryForUserDataInjectable, () => "/some-user-store-path"); di.override(directoryForKubeConfigsInjectable, () => "/some-kube-configs"); di.override(storesAndApisCanBeCreatedInjectable, () => true); const createCluster = di.inject(createClusterInjectable); di.override(hostedClusterInjectable, () => createCluster({ contextName: "some-context-name", id: "some-cluster-id", kubeConfigPath: "/some-path-to-a-kubeconfig", }, { clusterServerUrl: "https://localhost:8080", })); render = renderFor(di); di.override(subscribeStoresInjectable, () => jest.fn().mockImplementation(() => jest.fn())); di.override(kubeSelectedUrlParamInjectable, () => ({ get: () => "path", })); di.override(toggleKubeDetailsPaneInjectable, () => null); di.override(appPathsStateInjectable, () => ({ get: () => ({}), })); podStore = di.inject(podStoreInjectable); }); describe("given pod store", () => { let result: RenderResult; it("renders", () => { result = render((
[
{pod.getName()}
, ]} />
)); expect(result.baseElement).toMatchSnapshot(); }); describe("given resourcename", () => { it("uses resourcename in search placeholder", () => { result = render((
[
{pod.getName()}
, ]} resourceName="My Custom Items" searchFilters={[() => null]} />
)); expect(result.getByPlaceholderText("Search My Custom Items...")).toBeInTheDocument(); }); }); }); });