From cc2f8fe756d39795052a81f4a78f338a59330687 Mon Sep 17 00:00:00 2001 From: Panu Horsmalahti Date: Thu, 2 Dec 2021 14:14:41 +0200 Subject: [PATCH] Add test. Fix typing. Signed-off-by: Panu Horsmalahti --- src/common/k8s-api/__tests__/kube-api.test.ts | 18 ++++++++++++++++++ src/common/k8s-api/kube-api.ts | 5 ++--- .../components/+namespaces/namespaces.tsx | 3 ++- .../components/+workloads-pods/pods.tsx | 3 ++- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/common/k8s-api/__tests__/kube-api.test.ts b/src/common/k8s-api/__tests__/kube-api.test.ts index 2ae2015437..04a2fd0c53 100644 --- a/src/common/k8s-api/__tests__/kube-api.test.ts +++ b/src/common/k8s-api/__tests__/kube-api.test.ts @@ -241,6 +241,24 @@ describe("KubeApi", () => { { op: "replace", path: "/spec/replicas", value: 2 }, ], "json"); }); + + it("allows deep partial patch", async () => { + expect.hasAssertions(); + + (fetch as any).mockResponse(async (request: Request) => { + expect(request.method).toEqual("PATCH"); + expect(request.headers.get("content-type")).toMatch("merge-patch"); + expect(request.body.toString()).toEqual(JSON.stringify({ metadata: { annotations: { provisioned: "true" } }})); + + return {}; + }); + + await api.patch( + { name: "test", namespace: "default" }, + { metadata: { annotations: { provisioned: "true" } } }, + "merge" + ); + }); }); describe("delete", () => { diff --git a/src/common/k8s-api/kube-api.ts b/src/common/k8s-api/kube-api.ts index beb4227a18..a8b19d81b5 100644 --- a/src/common/k8s-api/kube-api.ts +++ b/src/common/k8s-api/kube-api.ts @@ -37,7 +37,6 @@ import type { RequestInit } from "node-fetch"; import AbortController from "abort-controller"; import { Agent, AgentOptions } from "https"; import type { Patch } from "rfc6902"; -import type { PartialDeep } from "type-fest"; export interface IKubeApiOptions { /** @@ -527,7 +526,7 @@ export class KubeApi { return parsed; } - async patch(desc: ResourceDescriptor, data?: PartialDeep | Patch, strategy: KubeApiPatchType = "strategic"): Promise { + async patch(desc: ResourceDescriptor, data?: PartialKubeObject | Patch, strategy: KubeApiPatchType = "strategic") { await this.checkPreferredVersion(); const apiUrl = this.getUrl(desc); @@ -542,7 +541,7 @@ export class KubeApi { throw new Error(`PATCH request to ${apiUrl} returned an array: ${JSON.stringify(parsed)}`); } - return parsed; + return parsed as T | null; } async delete({ propagationPolicy = "Background", ...desc }: DeleteResourceDescriptor) { diff --git a/src/renderer/components/+namespaces/namespaces.tsx b/src/renderer/components/+namespaces/namespaces.tsx index 7c47ddef80..dd2bf9e476 100644 --- a/src/renderer/components/+namespaces/namespaces.tsx +++ b/src/renderer/components/+namespaces/namespaces.tsx @@ -49,7 +49,8 @@ export class Namespaces extends React.Component { ns.getName(), [columnId.labels]: ns => ns.getLabels(), diff --git a/src/renderer/components/+workloads-pods/pods.tsx b/src/renderer/components/+workloads-pods/pods.tsx index 7688861cdc..208fa1f2a2 100644 --- a/src/renderer/components/+workloads-pods/pods.tsx +++ b/src/renderer/components/+workloads-pods/pods.tsx @@ -92,7 +92,8 @@ export class Pods extends React.Component { render() { return (