From 35e49fe6e60533fc14ffbd68430c2dc5b1931fac Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Fri, 8 Apr 2022 09:29:18 -0400 Subject: [PATCH] fix log-resource-selector.test.tsx tests Signed-off-by: Sebastian Malton --- package.json | 1 - src/common/k8s-api/endpoints/job.api.ts | 4 ++-- src/common/k8s-api/endpoints/pods.api.ts | 14 +++++------ src/extensions/main-api/k8s-api.ts | 2 +- src/extensions/renderer-api/k8s-api.ts | 2 +- .../+workloads-pods/pod-container-env.tsx | 4 ++-- .../+workloads-pods/pod-details-container.tsx | 4 ++-- .../__test__/log-resource-selector.test.tsx | 9 ++++---- .../logs/create-pod-logs-tab.injectable.ts | 4 ++-- .../dock/logs/resource-selector.tsx | 18 +++++++++------ yarn.lock | 23 ++++++------------- 11 files changed, 40 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index 46bc11c607..77b60b6fa5 100644 --- a/package.json +++ b/package.json @@ -319,7 +319,6 @@ "@types/react-beautiful-dnd": "^13.1.2", "@types/react-dom": "^17.0.14", "@types/react-router-dom": "^5.3.3", - "@types/react-select": "3.1.2", "@types/react-table": "^7.7.11", "@types/react-virtualized-auto-sizer": "^1.0.1", "@types/react-window": "^1.8.5", diff --git a/src/common/k8s-api/endpoints/job.api.ts b/src/common/k8s-api/endpoints/job.api.ts index 0f2277bebd..d84ffd8b50 100644 --- a/src/common/k8s-api/endpoints/job.api.ts +++ b/src/common/k8s-api/endpoints/job.api.ts @@ -6,7 +6,7 @@ import type { DerivedKubeApiOptions, IgnoredKubeApiOptions } from "../kube-api"; import { KubeApi } from "../kube-api"; import { metricsApi } from "./metrics.api"; -import type { IPodContainer, PodMetricData, PodSpec } from "./pods.api"; +import type { PodContainer, PodMetricData, PodSpec } from "./pods.api"; import { isClusterPageContext } from "../../utils/cluster-id-url-parsing"; import type { KubeObjectScope, KubeObjectStatus, LabelSelector } from "../kube-object"; import { KubeObject } from "../kube-object"; @@ -24,7 +24,7 @@ export interface JobSpec { }; spec: PodSpec; }; - containers?: IPodContainer[]; + containers?: PodContainer[]; restartPolicy?: string; terminationGracePeriodSeconds?: number; dnsPolicy?: string; diff --git a/src/common/k8s-api/endpoints/pods.api.ts b/src/common/k8s-api/endpoints/pods.api.ts index 2e94d7d30b..0f57ce7dfa 100644 --- a/src/common/k8s-api/endpoints/pods.api.ts +++ b/src/common/k8s-api/endpoints/pods.api.ts @@ -101,7 +101,7 @@ export interface VolumeMount { subPathExpr?: string; } -export interface IPodContainer extends Partial> { +export interface PodContainer extends Partial> { name: string; image: string; command?: string[]; @@ -702,7 +702,7 @@ export interface PodSpec { activeDeadlineSeconds?: number; affinity?: Affinity; automountServiceAccountToken?: boolean; - containers?: IPodContainer[]; + containers?: PodContainer[]; dnsPolicy?: string; enableServiceLinks?: boolean; ephemeralContainers?: unknown[]; @@ -712,7 +712,7 @@ export interface PodSpec { hostNetwork?: boolean; hostPID?: boolean; imagePullSecrets?: LocalObjectReference[]; - initContainers?: IPodContainer[]; + initContainers?: PodContainer[]; nodeName?: string; nodeSelector?: Record; overhead?: Record; @@ -906,19 +906,19 @@ export class Pod extends KubeObject>; } diff --git a/src/renderer/components/dock/logs/__test__/log-resource-selector.test.tsx b/src/renderer/components/dock/logs/__test__/log-resource-selector.test.tsx index 508c4f88bc..e05f367148 100644 --- a/src/renderer/components/dock/logs/__test__/log-resource-selector.test.tsx +++ b/src/renderer/components/dock/logs/__test__/log-resource-selector.test.tsx @@ -155,7 +155,7 @@ describe("", () => { mockFs.restore(); }); - describe.only("with one pod", () => { + describe("with one pod", () => { let model: LogTabViewModel; beforeEach(() => { @@ -175,7 +175,7 @@ describe("", () => { expect(ns).toHaveTextContent("default"); }); - it.only("renders proper selected items within dropdowns", async () => { + it("renders proper selected items within dropdowns", async () => { const { findByText } = render(); expect(await findByText("dockerExporter")).toBeInTheDocument(); @@ -185,9 +185,11 @@ describe("", () => { describe("with several pods", () => { let model: LogTabViewModel; + let renameTab: jest.MockedFunction; beforeEach(() => { - model = getFewPodsTabData("foobar"); + renameTab = jest.fn(); + model = getFewPodsTabData("foobar", { renameTab }); }); it("renders sibling pods in dropdown", async () => { @@ -223,7 +225,6 @@ describe("", () => { }); it("updates tab name if selected pod changes", async () => { - const renameTab = jest.fn(); const { findByText, container } = render(); const selector = container.querySelector(".pod-selector"); diff --git a/src/renderer/components/dock/logs/create-pod-logs-tab.injectable.ts b/src/renderer/components/dock/logs/create-pod-logs-tab.injectable.ts index b16e883535..ad7379e1de 100644 --- a/src/renderer/components/dock/logs/create-pod-logs-tab.injectable.ts +++ b/src/renderer/components/dock/logs/create-pod-logs-tab.injectable.ts @@ -3,13 +3,13 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import type { IPodContainer, Pod } from "../../../../common/k8s-api/endpoints"; +import type { PodContainer, Pod } from "../../../../common/k8s-api/endpoints"; import type { TabId } from "../dock/store"; import createLogsTabInjectable from "./create-logs-tab.injectable"; export interface PodLogsTabData { selectedPod: Pod; - selectedContainer: IPodContainer; + selectedContainer: PodContainer; } const createPodLogsTabInjectable = getInjectable({ diff --git a/src/renderer/components/dock/logs/resource-selector.tsx b/src/renderer/components/dock/logs/resource-selector.tsx index 04bef66db2..60867a543e 100644 --- a/src/renderer/components/dock/logs/resource-selector.tsx +++ b/src/renderer/components/dock/logs/resource-selector.tsx @@ -11,7 +11,7 @@ import { observer } from "mobx-react"; import { Badge } from "../../badge"; import { Select } from "../../select"; import type { LogTabViewModel } from "./logs-view-model"; -import type { Pod } from "../../../../common/k8s-api/endpoints"; +import type { PodContainer, Pod } from "../../../../common/k8s-api/endpoints"; import type { GroupBase } from "react-select"; export interface LogResourceSelectorProps { @@ -33,13 +33,15 @@ export const LogResourceSelector = observer(({ model }: LogResourceSelectorProps return null; } - const onContainerChange = (container: string | null) => { + const allContainers = pod.getAllContainers(); + const container = allContainers.find(container => container.name === selectedContainer) ?? null; + const onContainerChange = (container: PodContainer | null) => { if (!container) { return; } model.updateLogTabData({ - selectedContainer: container, + selectedContainer: container.name, }); model.reloadLogs(); }; @@ -60,11 +62,11 @@ export const LogResourceSelector = observer(({ model }: LogResourceSelectorProps const containerSelectOptions = [ { label: "Containers", - options: pod.getContainers().map(container => container.name), + options: pod.getContainers(), }, { label: "Init Containers", - options: pod.getInitContainers().map(container => container.name), + options: pod.getInitContainers(), }, ]; @@ -93,13 +95,15 @@ export const LogResourceSelector = observer(({ model }: LogResourceSelectorProps menuClass="pod-selector-menu" /> Container - > + > id="container-selector-input" options={containerSelectOptions} - value={selectedContainer} + value={container} onChange={onContainerChange} + getOptionLabel={opt => opt.name} className="container-selector" menuClass="container-selector-menu" + controlShouldRenderValue /> ); diff --git a/yarn.lock b/yarn.lock index 6f3c2d23ed..cfa4ef4104 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1843,15 +1843,6 @@ "@types/history" "*" "@types/react" "*" -"@types/react-select@3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@types/react-select/-/react-select-3.1.2.tgz#38627df4b49be9b28f800ed72b35d830369a624b" - integrity sha512-ygvR/2FL87R2OLObEWFootYzkvm67LRA+URYEAcBuvKk7IXmdsnIwSGm60cVXGaqkJQHozb2Cy1t94tCYb6rJA== - dependencies: - "@types/react" "*" - "@types/react-dom" "*" - "@types/react-transition-group" "*" - "@types/react-table@^7.7.11": version "7.7.11" resolved "https://registry.yarnpkg.com/@types/react-table/-/react-table-7.7.11.tgz#0efbb69aabf5b4b9c26c4c027b1e1ceb0f342303" @@ -1859,13 +1850,6 @@ dependencies: "@types/react" "*" -"@types/react-transition-group@*", "@types/react-transition-group@^4.4.0": - version "4.4.4" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" - integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== - dependencies: - "@types/react" "*" - "@types/react-transition-group@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.0.tgz#882839db465df1320e4753e6e9f70ca7e9b4d46d" @@ -1873,6 +1857,13 @@ dependencies: "@types/react" "*" +"@types/react-transition-group@^4.4.0": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" + integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== + dependencies: + "@types/react" "*" + "@types/react-virtualized-auto-sizer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.1.tgz#b3187dae1dfc4c15880c9cfc5b45f2719ea6ebd4"