diff --git a/packages/core/src/renderer/components/kube-detail-params/get-workload-kind-from-url.test.ts b/packages/core/src/renderer/components/kube-detail-params/get-workload-kind-from-url.test.ts new file mode 100644 index 0000000000..2fd3997e92 --- /dev/null +++ b/packages/core/src/renderer/components/kube-detail-params/get-workload-kind-from-url.test.ts @@ -0,0 +1,50 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { getWorkloadKindFromUrl } from "./get-workload-kind-from-url"; + +describe("getWorkloadKindFromUrl", () => { + it('returns "endpoints" for "/api/v1/namespaces/default/endpoints/kubernetes"', () => { + const str = "/api/v1/namespaces/default/endpoints/kubernetes"; + const lastSegment = getWorkloadKindFromUrl(str); + + expect(lastSegment).toEqual("endpoints"); + }); + + it('returns "namespaces" for "/api/v1/namespaces/acme-org"', () => { + const str = "/api/v1/namespaces/acme-org"; + const lastSegment = getWorkloadKindFromUrl(str); + + expect(lastSegment).toEqual("namespaces"); + }); + + it('returns "bar" for "/foo/bar/"', () => { + const str = "/foo/bar/"; + const lastSegment = getWorkloadKindFromUrl(str); + + expect(lastSegment).toEqual("bar"); + }); + + it('returns null for ""', () => { + const str = ""; + const lastSegment = getWorkloadKindFromUrl(str); + + expect(lastSegment).toBeNull(); + }); + + it('returns null for "/"', () => { + const str = "/"; + const lastSegment = getWorkloadKindFromUrl(str); + + expect(lastSegment).toBeNull(); + }); + + it('returns null for "invalidurl"', () => { + const str = "invalidurl"; + const lastSegment = getWorkloadKindFromUrl(str); + + expect(lastSegment).toBeNull(); + }); +}); diff --git a/packages/core/src/renderer/components/kube-detail-params/get-workload-kind-from-url.ts b/packages/core/src/renderer/components/kube-detail-params/get-workload-kind-from-url.ts new file mode 100644 index 0000000000..8d34af96db --- /dev/null +++ b/packages/core/src/renderer/components/kube-detail-params/get-workload-kind-from-url.ts @@ -0,0 +1,14 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +export function getWorkloadKindFromUrl(url: string) { + return getLastSegment(url); +} + +function getLastSegment(url: string) { + const regex = /\/([^/]*)\/[^/]*$/; + const result = regex.exec(url); + + return result ? result[1] : null; +}