diff --git a/src/renderer/components/+workloads-pods/__tests__/__snapshots__/pod-details-list.test.tsx.snap b/src/renderer/components/+workloads-pods/__tests__/__snapshots__/pod-details-list.test.tsx.snap index d2bcb797ed..ed36d9c9f3 100644 --- a/src/renderer/components/+workloads-pods/__tests__/__snapshots__/pod-details-list.test.tsx.snap +++ b/src/renderer/components/+workloads-pods/__tests__/__snapshots__/pod-details-list.test.tsx.snap @@ -1,5 +1,230 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[` when few pods passed renders table with pods 1`] = ` +
+
+
+
+
+ Name + + + arrow_drop_down + + +
+
+
+ Node + + + arrow_drop_down + + +
+
+ Namespace + + + arrow_drop_down + + +
+
+ Ready +
+
+ CPU + + + arrow_drop_down + + +
+
+ Memory + + + arrow_drop_down + + +
+
+ Status +
+
+
+
+ foobar +
+
+
+
+ default +
+
+ 0 / 0 +
+
+ 0 +
+
+ 0 +
+
+ Running +
+
+
+
+ foobar-failed +
+
+
+
+ default +
+
+ 0 / 0 +
+
+ 0 +
+
+ 0 +
+
+ Failed +
+
+
+
+ foobar-pending +
+
+
+
+ default +
+
+ 0 / 0 +
+
+ 0 +
+
+ 0 +
+
+ Waiting +
+
+
+
+
+`; + exports[` when no pods passed and podStore is loaded renders 1`] = `
@@ -7,3 +232,15 @@ exports[` when no pods passed and podStore is loaded renders 1
`; + +exports[` when podStore is still loading renders spinner 1`] = ` +
+
+
+
+
+`; diff --git a/src/renderer/components/+workloads-pods/__tests__/pod-details-list.test.tsx b/src/renderer/components/+workloads-pods/__tests__/pod-details-list.test.tsx index 59906d0bf1..a2084637a8 100644 --- a/src/renderer/components/+workloads-pods/__tests__/pod-details-list.test.tsx +++ b/src/renderer/components/+workloads-pods/__tests__/pod-details-list.test.tsx @@ -7,7 +7,9 @@ import type { AsyncFnMock } from "@async-fn/jest"; import asyncFn from "@async-fn/jest"; import type { DiContainer } from "@ogre-tools/injectable"; import React from "react"; +import directoryForLensLocalStorageInjectable from "../../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable"; import fetchInjectable, { Fetch } from "../../../../common/fetch/fetch.injectable"; +import { Pod } from "../../../../common/k8s-api/endpoints"; import { getDiForUnitTesting } from "../../../getDiForUnitTesting"; import storesAndApisCanBeCreatedInjectable from "../../../stores-apis-can-be-created.injectable"; import { DiRender, renderFor } from "../../test-utils/renderFor"; @@ -15,6 +17,89 @@ import { PodDetailsList } from "../pod-details-list"; import type { PodStore } from "../store"; import podStoreInjectable from "../store.injectable"; +const runningPod = new Pod({ + apiVersion: "foo", + kind: "Pod", + metadata: { + name: "foobar", + resourceVersion: "foobar", + uid: "foobar", + ownerReferences: [{ + uid: "runningReplicaSet", + apiVersion: "v1", + kind: "ReplicaSet", + name: "running", + }], + namespace: "default", + selfLink: "/apis/apps/v1/replicasets/default/foobar", + }, + status: { + phase: "Running", + conditions: [ + { + type: "Initialized", + status: "True", + lastProbeTime: 1, + lastTransitionTime: "1", + }, + { + type: "Ready", + status: "True", + lastProbeTime: 1, + lastTransitionTime: "1", + }, + ], + hostIP: "10.0.0.1", + podIP: "10.0.0.1", + startTime: "now", + containerStatuses: [], + initContainerStatuses: [], + }, +}); + +const pendingPod = new Pod({ + apiVersion: "foo", + kind: "Pod", + metadata: { + name: "foobar-pending", + resourceVersion: "foobar", + uid: "foobar-pending", + ownerReferences: [{ + uid: "pendingReplicaSet", + apiVersion: "v1", + kind: "ReplicaSet", + name: "pending", + }], + namespace: "default", + selfLink: "/apis/apps/v1/replicasets/default/foobar-pending", + }, +}); + +const failedPod = new Pod({ + apiVersion: "foo", + kind: "Pod", + metadata: { + name: "foobar-failed", + resourceVersion: "foobar", + uid: "foobar-failed", + ownerReferences: [{ + uid: "failedReplicaSet", + apiVersion: "v1", + kind: "ReplicaSet", + name: "failed", + }], + namespace: "default", + selfLink: "/apis/apps/v1/replicasets/default/foobar-failed", + }, + status: { + phase: "Failed", + conditions: [], + hostIP: "10.0.0.1", + podIP: "10.0.0.1", + startTime: "now", + }, +}); + describe("", () => { let di: DiContainer; let podStore: PodStore; @@ -24,6 +109,10 @@ describe("", () => { beforeEach(() => { di = getDiForUnitTesting({ doGeneralOverrides: true }); di.override(storesAndApisCanBeCreatedInjectable, () => true); + di.override( + directoryForLensLocalStorageInjectable, + () => "/some-directory-for-lens-local-storage", + ); fetchMock = asyncFn(); podStore = di.inject(podStoreInjectable); @@ -58,4 +147,36 @@ describe("", () => { expect(result.getByText("No items found")).toBeInTheDocument(); }); }); + + describe("when podStore is still loading", () => { + it("renders spinner", () => { + const result = render( + + ); + + expect(result.container).toMatchSnapshot(); + }); + }); + + describe("when few pods passed", () => { + beforeEach(() => { + podStore.isLoaded = true; + }); + + it("renders table with pods", () => { + const result = render( + + ); + + expect(result.container).toMatchSnapshot(); + }); + }); }); \ No newline at end of file