From 2e6dc57c82026548663b51af174a515431c0262f Mon Sep 17 00:00:00 2001 From: Jari Kolehmainen Date: Mon, 9 Aug 2021 10:46:39 +0300 Subject: [PATCH] fix/improve tests Signed-off-by: Jari Kolehmainen --- .../deployment-scale-dialog.test.tsx | 14 ++++++++++---- .../deployment-scale-dialog.tsx | 11 ++++++++--- .../replicaset-scale-dialog.test.tsx | 17 ++++++++++++----- .../replicaset-scale-dialog.tsx | 11 ++++++++--- .../statefulset-scale-dialog.test.tsx | 17 ++++++++++++----- .../statefulset-scale-dialog.tsx | 10 +++++++--- 6 files changed, 57 insertions(+), 23 deletions(-) diff --git a/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx b/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx index 905a01fba0..22c90dda2c 100644 --- a/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx +++ b/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx @@ -24,8 +24,7 @@ import { render, waitFor, fireEvent } from "@testing-library/react"; import "@testing-library/jest-dom/extend-expect"; import { DeploymentScaleDialog } from "./deployment-scale-dialog"; -jest.mock("../../../common/k8s-api/endpoints"); -import { Deployment, deploymentApi } from "../../../common/k8s-api/endpoints"; +import { Deployment, DeploymentApi } from "../../../common/k8s-api/endpoints/deployment.api"; const dummyDeployment: Deployment = { apiVersion: "v1", @@ -116,6 +115,13 @@ const dummyDeployment: Deployment = { }; describe("", () => { + let deploymentApi: DeploymentApi; + + beforeEach(() => { + deploymentApi = new DeploymentApi({ + objectConstructor: Deployment, + }); + }); it("renders w/o errors", () => { const { container } = render(); @@ -129,7 +135,7 @@ describe("", () => { const initReplicas = 3; deploymentApi.getReplicas = jest.fn().mockImplementationOnce(async () => initReplicas); - const { getByTestId } = render(); + const { getByTestId } = render(); DeploymentScaleDialog.open(dummyDeployment); // we need to wait for the DeploymentScaleDialog to show up @@ -150,7 +156,7 @@ describe("", () => { const initReplicas = 1; deploymentApi.getReplicas = jest.fn().mockImplementationOnce(async () => initReplicas); - const component = render(); + const component = render(); DeploymentScaleDialog.open(dummyDeployment); await waitFor(async () => { diff --git a/src/renderer/components/+workloads-deployments/deployment-scale-dialog.tsx b/src/renderer/components/+workloads-deployments/deployment-scale-dialog.tsx index 176df1ecff..f4dec0a9b9 100644 --- a/src/renderer/components/+workloads-deployments/deployment-scale-dialog.tsx +++ b/src/renderer/components/+workloads-deployments/deployment-scale-dialog.tsx @@ -26,13 +26,14 @@ import { computed, observable, makeObservable } from "mobx"; import { observer } from "mobx-react"; import { Dialog, DialogProps } from "../dialog"; import { Wizard, WizardStep } from "../wizard"; -import { Deployment, deploymentApi } from "../../../common/k8s-api/endpoints"; +import { Deployment, DeploymentApi, deploymentApi } from "../../../common/k8s-api/endpoints"; import { Icon } from "../icon"; import { Slider } from "../slider"; import { Notifications } from "../notifications"; import { cssNames } from "../../utils"; interface Props extends Partial { + deploymentApi: DeploymentApi } const dialogState = observable.object({ @@ -42,6 +43,10 @@ const dialogState = observable.object({ @observer export class DeploymentScaleDialog extends Component { + static defaultProps = { + deploymentApi + }; + @observable ready = false; @observable currentReplicas = 0; @observable desiredReplicas = 0; @@ -80,7 +85,7 @@ export class DeploymentScaleDialog extends Component { onOpen = async () => { const { deployment } = this; - this.currentReplicas = await deploymentApi.getReplicas({ + this.currentReplicas = await this.props.deploymentApi.getReplicas({ namespace: deployment.getNs(), name: deployment.getName(), }); @@ -102,7 +107,7 @@ export class DeploymentScaleDialog extends Component { try { if (currentReplicas !== desiredReplicas) { - await deploymentApi.scale({ + await this.props.deploymentApi.scale({ name: deployment.getName(), namespace: deployment.getNs(), }, desiredReplicas); diff --git a/src/renderer/components/+workloads-replicasets/replicaset-scale-dialog.test.tsx b/src/renderer/components/+workloads-replicasets/replicaset-scale-dialog.test.tsx index 4426a41d42..7f8c31e99c 100755 --- a/src/renderer/components/+workloads-replicasets/replicaset-scale-dialog.test.tsx +++ b/src/renderer/components/+workloads-replicasets/replicaset-scale-dialog.test.tsx @@ -21,11 +21,10 @@ import "@testing-library/jest-dom/extend-expect"; -jest.mock("../../../common/k8s-api/endpoints/replica-set.api"); import { ReplicaSetScaleDialog } from "./replicaset-scale-dialog"; import { render, waitFor, fireEvent } from "@testing-library/react"; import React from "react"; -import { ReplicaSet, replicaSetApi } from "../../../common/k8s-api/endpoints/replica-set.api"; +import { ReplicaSet, ReplicaSetApi } from "../../../common/k8s-api/endpoints/replica-set.api"; const dummyReplicaSet: ReplicaSet = { apiVersion: "v1", @@ -111,8 +110,16 @@ const dummyReplicaSet: ReplicaSet = { }; describe("", () => { + let replicaSetApi: ReplicaSetApi; + + beforeEach(() => { + replicaSetApi = new ReplicaSetApi({ + objectConstructor: ReplicaSet + }); + }); + it("renders w/o errors", () => { - const { container } = render(); + const { container } = render(); expect(container).toBeInstanceOf(HTMLElement); }); @@ -123,7 +130,7 @@ describe("", () => { const initReplicas = 1; replicaSetApi.getReplicas = jest.fn().mockImplementationOnce(async () => initReplicas); - const { getByTestId } = render(); + const { getByTestId } = render(); ReplicaSetScaleDialog.open(dummyReplicaSet); // we need to wait for the replicaSetScaleDialog to show up @@ -143,7 +150,7 @@ describe("", () => { const initReplicas = 1; replicaSetApi.getReplicas = jest.fn().mockImplementationOnce(async () => initReplicas); - const component = render(); + const component = render(); ReplicaSetScaleDialog.open(dummyReplicaSet); await waitFor(async () => { diff --git a/src/renderer/components/+workloads-replicasets/replicaset-scale-dialog.tsx b/src/renderer/components/+workloads-replicasets/replicaset-scale-dialog.tsx index aeab6b58dd..3fda576d0e 100644 --- a/src/renderer/components/+workloads-replicasets/replicaset-scale-dialog.tsx +++ b/src/renderer/components/+workloads-replicasets/replicaset-scale-dialog.tsx @@ -30,9 +30,10 @@ import { Icon } from "../icon"; import { Slider } from "../slider"; import { Notifications } from "../notifications"; import { cssNames } from "../../utils"; -import { ReplicaSet, replicaSetApi } from "../../../common/k8s-api/endpoints/replica-set.api"; +import { ReplicaSet, ReplicaSetApi, replicaSetApi } from "../../../common/k8s-api/endpoints/replica-set.api"; interface Props extends Partial { + replicaSetApi: ReplicaSetApi } const dialogState = observable.object({ @@ -42,6 +43,10 @@ const dialogState = observable.object({ @observer export class ReplicaSetScaleDialog extends Component { + static defaultProps = { + replicaSetApi + }; + @observable ready = false; @observable currentReplicas = 0; @observable desiredReplicas = 0; @@ -71,7 +76,7 @@ export class ReplicaSetScaleDialog extends Component { onOpen = async () => { const { replicaSet } = this; - this.currentReplicas = await replicaSetApi.getReplicas({ + this.currentReplicas = await this.props.replicaSetApi.getReplicas({ namespace: replicaSet.getNs(), name: replicaSet.getName(), }); @@ -102,7 +107,7 @@ export class ReplicaSetScaleDialog extends Component { try { if (currentReplicas !== desiredReplicas) { - await replicaSetApi.scale({ + await this.props.replicaSetApi.scale({ name: replicaSet.getName(), namespace: replicaSet.getNs(), }, desiredReplicas); diff --git a/src/renderer/components/+workloads-statefulsets/statefulset-scale-dialog.test.tsx b/src/renderer/components/+workloads-statefulsets/statefulset-scale-dialog.test.tsx index 461f584bbf..b27d8b0892 100755 --- a/src/renderer/components/+workloads-statefulsets/statefulset-scale-dialog.test.tsx +++ b/src/renderer/components/+workloads-statefulsets/statefulset-scale-dialog.test.tsx @@ -21,8 +21,7 @@ import "@testing-library/jest-dom/extend-expect"; -jest.mock("../../../common/k8s-api/endpoints"); -import { StatefulSet, statefulSetApi } from "../../../common/k8s-api/endpoints"; +import { StatefulSet, StatefulSetApi } from "../../../common/k8s-api/endpoints"; import { StatefulSetScaleDialog } from "./statefulset-scale-dialog"; import { render, waitFor, fireEvent } from "@testing-library/react"; import React from "react"; @@ -121,8 +120,16 @@ const dummyStatefulSet: StatefulSet = { }; describe("", () => { + let statefulSetApi: StatefulSetApi; + + beforeEach(() => { + statefulSetApi = new StatefulSetApi({ + objectConstructor: StatefulSet + }); + }); + it("renders w/o errors", () => { - const { container } = render(); + const { container } = render(); expect(container).toBeInstanceOf(HTMLElement); }); @@ -133,7 +140,7 @@ describe("", () => { const initReplicas = 1; statefulSetApi.getReplicas = jest.fn().mockImplementationOnce(async () => initReplicas); - const { getByTestId } = render(); + const { getByTestId } = render(); StatefulSetScaleDialog.open(dummyStatefulSet); // we need to wait for the StatefulSetScaleDialog to show up @@ -153,7 +160,7 @@ describe("", () => { const initReplicas = 1; statefulSetApi.getReplicas = jest.fn().mockImplementationOnce(async () => initReplicas); - const component = render(); + const component = render(); StatefulSetScaleDialog.open(dummyStatefulSet); await waitFor(async () => { diff --git a/src/renderer/components/+workloads-statefulsets/statefulset-scale-dialog.tsx b/src/renderer/components/+workloads-statefulsets/statefulset-scale-dialog.tsx index d5a1c8a5d8..7fb49fabbe 100644 --- a/src/renderer/components/+workloads-statefulsets/statefulset-scale-dialog.tsx +++ b/src/renderer/components/+workloads-statefulsets/statefulset-scale-dialog.tsx @@ -21,7 +21,7 @@ import "./statefulset-scale-dialog.scss"; -import { StatefulSet, statefulSetApi } from "../../../common/k8s-api/endpoints"; +import { StatefulSet, StatefulSetApi, statefulSetApi } from "../../../common/k8s-api/endpoints"; import React, { Component } from "react"; import { computed, makeObservable, observable } from "mobx"; import { observer } from "mobx-react"; @@ -33,6 +33,7 @@ import { Notifications } from "../notifications"; import { cssNames } from "../../utils"; interface Props extends Partial { + statefulSetApi: StatefulSetApi } const dialogState = observable.object({ @@ -42,6 +43,9 @@ const dialogState = observable.object({ @observer export class StatefulSetScaleDialog extends Component { + static defaultProps = { + statefulSetApi + }; @observable ready = false; @observable currentReplicas = 0; @observable desiredReplicas = 0; @@ -71,7 +75,7 @@ export class StatefulSetScaleDialog extends Component { onOpen = async () => { const { statefulSet } = this; - this.currentReplicas = await statefulSetApi.getReplicas({ + this.currentReplicas = await this.props.statefulSetApi.getReplicas({ namespace: statefulSet.getNs(), name: statefulSet.getName(), }); @@ -102,7 +106,7 @@ export class StatefulSetScaleDialog extends Component { try { if (currentReplicas !== desiredReplicas) { - await statefulSetApi.scale({ + await this.props.statefulSetApi.scale({ name: statefulSet.getName(), namespace: statefulSet.getNs(), }, desiredReplicas);