From 73e3dd95f4f23fd604b71e3a82d30e862a0e2ffd Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Thu, 4 Nov 2021 10:37:01 +0200 Subject: [PATCH] Make another dependency a segregated interface instead of concrete instance Notice how interface is in fact segregated, i.e. it only advertises the minimal properties currently required. With this we satisfy Interface Segregation Principle and thus permit e.g. minimal requirement for stubbing in future unit tests. Signed-off-by: Janne Savolainen --- src/main/cluster.ts | 6 +++++- .../components/kube-object-menu/kube-object-menu.tsx | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/cluster.ts b/src/main/cluster.ts index 2ec97c792a..cada76b655 100644 --- a/src/main/cluster.ts +++ b/src/main/cluster.ts @@ -37,12 +37,16 @@ import { ClusterMetadataKey, initialNodeShellImage, ClusterStatus } from "../com import { disposer, storedKubeConfigFolder, toJS } from "../common/utils"; import type { Response } from "request"; +export interface IHasName { + readonly name: string; +} + /** * Cluster * * @beta */ -export class Cluster implements ClusterModel, ClusterState { +export class Cluster implements ClusterModel, ClusterState, IHasName { /** Unique id for a cluster */ public readonly id: ClusterId; private kubeCtl: Kubectl; diff --git a/src/renderer/components/kube-object-menu/kube-object-menu.tsx b/src/renderer/components/kube-object-menu/kube-object-menu.tsx index 40f7c10d8f..4801457050 100644 --- a/src/renderer/components/kube-object-menu/kube-object-menu.tsx +++ b/src/renderer/components/kube-object-menu/kube-object-menu.tsx @@ -27,7 +27,7 @@ import identity from "lodash/identity"; import type { IHasGettableItemsForKind } from "../../../extensions/registries"; import type { IGettableStore } from "../../../common/k8s-api/api-manager"; -import type { Cluster } from "../../../main/cluster"; +import type { IHasName } from "../../../main/cluster"; export interface KubeObjectMenuProps extends MenuActionsProps { @@ -39,7 +39,7 @@ export interface KubeObjectMenuProps extends MenuActionsProps { interface KubeObjectMenuDependencies extends KubeObjectMenuProps{ apiManager: IGettableStore, kubeObjectMenuRegistry: IHasGettableItemsForKind - cluster: Cluster, + cluster: IHasName, hideDetails: Function, editResourceTab: Function, }