From 723e8452cf0abd91617573e7f48de3ce929ef226 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 25 May 2023 09:37:28 -0400 Subject: [PATCH] chore: Improve KubeObject tests Signed-off-by: Sebastian Malton --- packages/kube-object/src/kube-object.test.ts | 127 ++++++++++--------- 1 file changed, 64 insertions(+), 63 deletions(-) diff --git a/packages/kube-object/src/kube-object.test.ts b/packages/kube-object/src/kube-object.test.ts index 8f5a2b6276..ab97fefd25 100644 --- a/packages/kube-object/src/kube-object.test.ts +++ b/packages/kube-object/src/kube-object.test.ts @@ -6,35 +6,14 @@ describe("kube object tests", () => { () => new KubeObject({ apiVersion: "metrics.k8s.io/v1beta1", - containers: [ - { - name: "cert-manager", - usage: { - cpu: "472721n", - memory: "74404Ki", - }, - }, - ], kind: "PodMetrics", metadata: { creationTimestamp: "2023-05-24T14:17:01Z", - labels: { - app: "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.5.5", - "helm.sh/chart": "cert-manager-v1.5.5", - "pod-template-hash": "54cbdfb45c", - }, name: "cert-manager-54cbdfb45c-n4kp9", namespace: "cert-manager", selfLink: "/apis/metrics.k8s.io/v1beta1/namespaces/cert-manager/pods/cert-manager-54cbdfb45c-n4kp9", resourceVersion: "123", }, - timestamp: "2023-05-24T14:16:39Z", - window: "16s", }), ).not.toThrow(); }); @@ -44,35 +23,14 @@ describe("kube object tests", () => { () => new KubeObject({ apiVersion: "metrics.k8s.io/v1beta1", - containers: [ - { - name: "cert-manager", - usage: { - cpu: "472721n", - memory: "74404Ki", - }, - }, - ], kind: "PodMetrics", metadata: { creationTimestamp: "2023-05-24T14:17:01Z", - labels: { - app: "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.5.5", - "helm.sh/chart": "cert-manager-v1.5.5", - "pod-template-hash": "54cbdfb45c", - }, name: "cert-manager-54cbdfb45c-n4kp9", namespace: "cert-manager", selfLink: "/apis/metrics.k8s.io/v1beta1/namespaces/cert-manager/pods/cert-manager-54cbdfb45c-n4kp9", uid: "123", }, - timestamp: "2023-05-24T14:16:39Z", - window: "16s", }), ).not.toThrow(); }); @@ -82,35 +40,78 @@ describe("kube object tests", () => { () => new KubeObject({ apiVersion: "metrics.k8s.io/v1beta1", - containers: [ - { - name: "cert-manager", - usage: { - cpu: "472721n", - memory: "74404Ki", - }, - }, - ], kind: "PodMetrics", metadata: { creationTimestamp: "2023-05-24T14:17:01Z", - labels: { - app: "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.5.5", - "helm.sh/chart": "cert-manager-v1.5.5", - "pod-template-hash": "54cbdfb45c", - }, name: "cert-manager-54cbdfb45c-n4kp9", namespace: "cert-manager", selfLink: "/apis/metrics.k8s.io/v1beta1/namespaces/cert-manager/pods/cert-manager-54cbdfb45c-n4kp9", }, - timestamp: "2023-05-24T14:16:39Z", - window: "16s", }), ).not.toThrow(); }); + + it("KubeObject.getId() should return the uid if present", () => { + const obj = new KubeObject({ + apiVersion: "metrics.k8s.io/v1beta1", + kind: "PodMetrics", + metadata: { + creationTimestamp: "2023-05-24T14:17:01Z", + name: "cert-manager-54cbdfb45c-n4kp9", + namespace: "cert-manager", + selfLink: "/apis/metrics.k8s.io/v1beta1/namespaces/cert-manager/pods/cert-manager-54cbdfb45c-n4kp9", + uid: "foobar", + }, + }); + + expect(obj.getId()).toEqual("foobar"); + }); + + it("KubeObject.getId() should return the selfLink if uid is missing", () => { + const obj = new KubeObject({ + apiVersion: "metrics.k8s.io/v1beta1", + kind: "PodMetrics", + metadata: { + creationTimestamp: "2023-05-24T14:17:01Z", + name: "cert-manager-54cbdfb45c-n4kp9", + namespace: "cert-manager", + selfLink: "/apis/metrics.k8s.io/v1beta1/namespaces/cert-manager/pods/cert-manager-54cbdfb45c-n4kp9", + }, + }); + + expect(obj.getId()).toEqual( + "/apis/metrics.k8s.io/v1beta1/namespaces/cert-manager/pods/cert-manager-54cbdfb45c-n4kp9", + ); + }); + + it("KubeObject.getResourceVersion() should return the resourceVersion if it is present", () => { + const obj = new KubeObject({ + apiVersion: "metrics.k8s.io/v1beta1", + kind: "PodMetrics", + metadata: { + creationTimestamp: "2023-05-24T14:17:01Z", + name: "cert-manager-54cbdfb45c-n4kp9", + namespace: "cert-manager", + selfLink: "/apis/metrics.k8s.io/v1beta1/namespaces/cert-manager/pods/cert-manager-54cbdfb45c-n4kp9", + resourceVersion: "foobar", + }, + }); + + expect(obj.getResourceVersion()).toEqual("foobar"); + }); + + it("KubeObject.getResourceVersion() should return '' if the resourceVersion is missing", () => { + const obj = new KubeObject({ + apiVersion: "metrics.k8s.io/v1beta1", + kind: "PodMetrics", + metadata: { + creationTimestamp: "2023-05-24T14:17:01Z", + name: "cert-manager-54cbdfb45c-n4kp9", + namespace: "cert-manager", + selfLink: "/apis/metrics.k8s.io/v1beta1/namespaces/cert-manager/pods/cert-manager-54cbdfb45c-n4kp9", + }, + }); + + expect(obj.getResourceVersion()).toEqual(""); + }); });