From 27150bd487ff32901e9a19206fa20c188d79ef6d Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Tue, 9 Nov 2021 11:56:59 +0300 Subject: [PATCH] Adding tests Signed-off-by: Alex Andreev --- integration/__tests__/cluster-pages.tests.ts | 10 +++ .../layout/__tests__/sidebar-cluster.test.tsx | 75 +++++++++++++++++++ .../components/layout/sidebar-cluster.tsx | 9 ++- 3 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 src/renderer/components/layout/__tests__/sidebar-cluster.test.tsx diff --git a/integration/__tests__/cluster-pages.tests.ts b/integration/__tests__/cluster-pages.tests.ts index 36173c0e9d..64ca60380d 100644 --- a/integration/__tests__/cluster-pages.tests.ts +++ b/integration/__tests__/cluster-pages.tests.ts @@ -331,6 +331,14 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => { await cleanup(); }, 10*60*1000); + it("shows cluster context menu in sidebar", async () => { + await frame.click(`[data-testid="sidebar-cluster-dropdown"]`); + await frame.waitForSelector(`.Menu >> text="Add to Hotbar"`); + await frame.waitForSelector(`.Menu >> text="Settings"`); + await frame.waitForSelector(`.Menu >> text="Disconnect"`); + await frame.waitForSelector(`.Menu >> text="Delete"`); + }); + it("should navigate around common cluster pages", async () => { for (const test of commonPageTests) { if (isTopPageTest(test)) { @@ -362,6 +370,8 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => { } }, 10*60*1000); + + it("show logs and highlight the log search entries", async () => { await frame.click(`a[href="/workloads"]`); await frame.click(`a[href="/pods"]`); diff --git a/src/renderer/components/layout/__tests__/sidebar-cluster.test.tsx b/src/renderer/components/layout/__tests__/sidebar-cluster.test.tsx new file mode 100644 index 0000000000..040f7b0997 --- /dev/null +++ b/src/renderer/components/layout/__tests__/sidebar-cluster.test.tsx @@ -0,0 +1,75 @@ +/** + * Copyright (c) 2021 OpenLens Authors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import React from "react"; +import "@testing-library/jest-dom/extend-expect"; +import { render, fireEvent } from "@testing-library/react"; +import { SidebarCluster } from "../sidebar-cluster"; +import { KubernetesCluster } from "../../../../common/catalog-entities"; + +jest.mock("../../../../common/hotbar-store", () => ({ + HotbarStore: { + getInstance: () => ({ + isAddedToActive: jest.fn(), + }), + }, +})); + +const clusterEntity = new KubernetesCluster({ + metadata: { + uid: "test-uid", + name: "test-cluster", + source: "local", + labels: {}, + }, + spec: { + kubeconfigPath: "", + kubeconfigContext: "", + }, + status: { + phase: "connected", + }, +}); + +describe("", () => { + it("renders w/o errors", () => { + const { container } = render(); + + expect(container).toBeInstanceOf(HTMLElement); + }); + + it("renders cluster avatar and name", () => { + const { getByText } = render(); + + expect(getByText("tc")).toBeInTheDocument(); + expect(getByText("test-cluster")).toBeInTheDocument(); + }); + + it("renders cluster menu", async () => { + const { getByTestId, getByText } = render(); + const link = getByTestId("sidebar-cluster-dropdown"); + + // HotbarStore.createInstance(); + fireEvent.click(link); + expect(await getByText("Add to Hotbar")).toBeInTheDocument(); + }); +}); + diff --git a/src/renderer/components/layout/sidebar-cluster.tsx b/src/renderer/components/layout/sidebar-cluster.tsx index e86efd9a7c..8b47ac122f 100644 --- a/src/renderer/components/layout/sidebar-cluster.tsx +++ b/src/renderer/components/layout/sidebar-cluster.tsx @@ -97,7 +97,14 @@ export function SidebarCluster({ clusterEntity }: { clusterEntity: CatalogEntity const id = `cluster-${metadata.uid}`; return ( -