chore: move kube-api related tests from core

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen authored and Sebastian Malton committed 2023-05-29 09:38:24 -04:00
1 parent e8be89eb51
commit 7b8bd1e758
3 files changed
+83 -78

No files matched your search

@@ -0,0 +1,53 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { KubeJsonApi, DeploymentApi } from "@k8slens/kube-api";
describe("DeploymentApi", () => {
let deploymentApi: DeploymentApi;
let kubeJsonApi: jest.Mocked<KubeJsonApi>;
beforeEach(() => {
kubeJsonApi = {
getResponse: jest.fn(),
get: jest.fn(),
post: jest.fn(),
put: jest.fn(),
patch: jest.fn(),
del: jest.fn(),
} as never;
deploymentApi = new DeploymentApi({
logger: {
info: jest.fn(),
debug: jest.fn(),
error: jest.fn(),
} as any,
maybeKubeApi: kubeJsonApi,
});
});
describe("scale", () => {
it("requests Kubernetes API with PATCH verb and correct amount of replicas", async () => {
await deploymentApi.scale({ namespace: "default", name: "deployment-1" }, 5);
expect(kubeJsonApi.patch).toHaveBeenCalledWith(
"/apis/apps/v1/namespaces/default/deployments/deployment-1/scale",
{
data: {
spec: {
replicas: 5,
},
},
},
{
headers: {
"content-type": "application/merge-patch+json",
},
},
);
});
});
});
@@ -0,0 +1,69 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { KubeJsonApi, StatefulSetApi } from "@k8slens/kube-api";
import { flushPromises } from "@k8slens/test-utils";
import asyncFn from "@async-fn/jest";
import type { AsyncFnMock } from "@async-fn/jest";
describe("StatefulSetApi", () => {
let statefulSetApi: StatefulSetApi;
let kubeJsonApi: KubeJsonApi;
let kubeJsonApiPatchMock: AsyncFnMock<KubeJsonApi["patch"]>;
let kubeJsonApiGetMock: AsyncFnMock<KubeJsonApi["get"]>;
beforeEach(() => {
kubeJsonApiGetMock = asyncFn<KubeJsonApi["get"]>();
kubeJsonApiPatchMock = asyncFn<KubeJsonApi["patch"]>();
kubeJsonApi = {
get: kubeJsonApiGetMock,
patch: kubeJsonApiPatchMock,
} as Partial<KubeJsonApi> as KubeJsonApi;
statefulSetApi = new StatefulSetApi({
logger: {
info: jest.fn(),
debug: jest.fn(),
error: jest.fn(),
} as any,
maybeKubeApi: kubeJsonApi,
});
});
describe("scale", () => {
it("requests Kubernetes API with PATCH verb and correct amount of replicas", async () => {
const req = statefulSetApi.scale({ namespace: "default", name: "statefulset-1" }, 5);
await flushPromises();
expect(kubeJsonApiPatchMock).toHaveBeenCalledWith(
"/apis/apps/v1/namespaces/default/statefulsets/statefulset-1/scale",
{
data: {
spec: {
replicas: 5,
},
},
},
{
headers: {
"content-type": "application/merge-patch+json",
},
},
);
await kubeJsonApiPatchMock.resolve({});
await req;
});
it("requests Kubernetes API with GET verb and correct sub-resource", async () => {
const req = statefulSetApi.getReplicas({ namespace: "default", name: "statefulset-1" });
await flushPromises();
expect(kubeJsonApi.get).toHaveBeenCalledWith("/apis/apps/v1/namespaces/default/statefulsets/statefulset-1/scale");
await kubeJsonApiGetMock.resolve({ status: { replicas: 10 } });
expect(await req).toBe(10);
});
});
});