mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
chore: Update tests to use more business logic
- To have a higher confidence in the code, given that the old tests didn't save us from modifying the code before. Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
1 parent
bc149f0627
commit
5dc94f291b
9 files changed
+197
-866
No files matched your search
+7
-7
@@ -28,8 +28,8 @@ const editResourceModelInjectable = getInjectable({
|
||||
const store = di.inject(editResourceTabStoreInjectable);
|
||||
|
||||
const model = new EditResourceModel({
|
||||
callForResource: di.inject(requestKubeResourceInjectable),
|
||||
callForPatchResource: di.inject(requestPatchKubeResourceInjectable),
|
||||
requestKubeResource: di.inject(requestKubeResourceInjectable),
|
||||
requestPatchKubeResource: di.inject(requestPatchKubeResourceInjectable),
|
||||
showSuccessNotification: di.inject(showSuccessNotificationInjectable),
|
||||
showErrorNotification: di.inject(showErrorNotificationInjectable),
|
||||
store,
|
||||
@@ -50,8 +50,8 @@ const editResourceModelInjectable = getInjectable({
|
||||
export default editResourceModelInjectable;
|
||||
|
||||
interface Dependencies {
|
||||
callForResource: RequestKubeResource;
|
||||
callForPatchResource: RequestPatchKubeResource;
|
||||
requestKubeResource: RequestKubeResource;
|
||||
requestPatchKubeResource: RequestPatchKubeResource;
|
||||
waitForEditingResource: () => Promise<EditingResource>;
|
||||
showSuccessNotification: ShowNotification;
|
||||
showErrorNotification: ShowNotification;
|
||||
@@ -134,7 +134,7 @@ export class EditResourceModel {
|
||||
load = async (): Promise<void> => {
|
||||
await this.dependencies.waitForEditingResource();
|
||||
|
||||
let result = await this.dependencies.callForResource(this.selfLink);
|
||||
let result = await this.dependencies.requestKubeResource(this.selfLink);
|
||||
|
||||
if (!result.callWasSuccessful) {
|
||||
return void this.dependencies.showErrorNotification(`Loading resource failed: ${result.error}`);
|
||||
@@ -149,7 +149,7 @@ export class EditResourceModel {
|
||||
|
||||
parsed.apiVersion = result.response.metadata.labels[EditResourceLabelName];
|
||||
|
||||
result = await this.dependencies.callForResource(createKubeApiURL(parsed));
|
||||
result = await this.dependencies.requestKubeResource(createKubeApiURL(parsed));
|
||||
}
|
||||
|
||||
if (!result.callWasSuccessful) {
|
||||
@@ -205,7 +205,7 @@ export class EditResourceModel {
|
||||
return null;
|
||||
}
|
||||
|
||||
const result = await this.dependencies.callForPatchResource(selfLink, patches);
|
||||
const result = await this.dependencies.requestPatchKubeResource(selfLink, patches);
|
||||
|
||||
if (!result.callWasSuccessful) {
|
||||
this.dependencies.showErrorNotification((
|
||||
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getGlobalOverrideForFunction } from "@k8slens/test-utils";
|
||||
import requestKubeResourceInjectable from "./request-kube-resource.injectable";
|
||||
|
||||
export default getGlobalOverrideForFunction(requestKubeResourceInjectable);
|
||||
+3
-5
@@ -7,10 +7,10 @@ import type { KubeObjectMetadata, KubeObjectScope } from "../../../../../common/
|
||||
import { KubeObject } from "../../../../../common/k8s-api/kube-object";
|
||||
import type { AsyncResult } from "@k8slens/utilities";
|
||||
import { getErrorMessage } from "../../../../../common/utils/get-error-message";
|
||||
import apiKubeInjectable from "../../../../k8s/api-kube.injectable";
|
||||
import type { Writable } from "type-fest";
|
||||
import type { KubeJsonApiData } from "../../../../../common/k8s-api/kube-json-api";
|
||||
import { parseKubeApi } from "../../../../../common/k8s-api/kube-api-parse";
|
||||
import apiKubeGetInjectable from "../../../../k8s/api-kube-get.injectable";
|
||||
|
||||
export type RequestKubeResource = (selfLink: string) => AsyncResult<KubeObject | undefined>;
|
||||
|
||||
@@ -18,7 +18,7 @@ const requestKubeResourceInjectable = getInjectable({
|
||||
id: "request-kube-resource",
|
||||
|
||||
instantiate: (di): RequestKubeResource => {
|
||||
const apiKube = di.inject(apiKubeInjectable);
|
||||
const apiKubeGet = di.inject(apiKubeGetInjectable);
|
||||
|
||||
return async (selfLink) => {
|
||||
const parsed = parseKubeApi(selfLink);
|
||||
@@ -28,7 +28,7 @@ const requestKubeResourceInjectable = getInjectable({
|
||||
}
|
||||
|
||||
try {
|
||||
const rawData = await apiKube.get(selfLink) as KubeJsonApiData<KubeObjectMetadata<KubeObjectScope>, unknown, unknown>;
|
||||
const rawData = await apiKubeGet(selfLink) as KubeJsonApiData<KubeObjectMetadata<KubeObjectScope>, unknown, unknown>;
|
||||
|
||||
(rawData.metadata as Writable<typeof rawData.metadata>).selfLink = selfLink;
|
||||
|
||||
@@ -41,8 +41,6 @@ const requestKubeResourceInjectable = getInjectable({
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
causesSideEffects: true,
|
||||
});
|
||||
|
||||
export default requestKubeResourceInjectable;
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getGlobalOverrideForFunction } from "@k8slens/test-utils";
|
||||
import requestPatchKubeResourceInjectable from "./request-patch-kube-resource.injectable";
|
||||
|
||||
export default getGlobalOverrideForFunction(requestPatchKubeResourceInjectable);
|
||||
+4
-6
@@ -6,19 +6,19 @@ import { getInjectable } from "@ogre-tools/injectable";
|
||||
import type { AsyncResult } from "@k8slens/utilities";
|
||||
import type { JsonPatch } from "../../../../../common/k8s-api/kube-object.store";
|
||||
import { getErrorMessage } from "../../../../../common/utils/get-error-message";
|
||||
import apiKubeInjectable from "../../../../k8s/api-kube.injectable";
|
||||
import { patchTypeHeaders } from "../../../../../common/k8s-api/kube-api";
|
||||
import apiKubePatchInjectable from "../../../../k8s/api-kube-patch.injectable";
|
||||
|
||||
export type RequestPatchKubeResource = (selfLink: string, patch: JsonPatch) => AsyncResult<{ name: string; kind: string }>;
|
||||
|
||||
const requestPatchKubeResourceInjectable = getInjectable({
|
||||
id: "request-patch-kube-resource",
|
||||
instantiate: (di): RequestPatchKubeResource => {
|
||||
const apiKube = di.inject(apiKubeInjectable);
|
||||
const apiKubePatch = di.inject(apiKubePatchInjectable);
|
||||
|
||||
return async (selfLink, patch) => {
|
||||
try {
|
||||
const kubeObject = await apiKube.patch(selfLink, { data: patch }, {
|
||||
const { metadata, kind } = await apiKubePatch(selfLink, { data: patch }, {
|
||||
headers: {
|
||||
"content-type": patchTypeHeaders.json,
|
||||
},
|
||||
@@ -26,7 +26,7 @@ const requestPatchKubeResourceInjectable = getInjectable({
|
||||
|
||||
return {
|
||||
callWasSuccessful: true,
|
||||
response: { name: kubeObject.metadata.name, kind: kubeObject.kind },
|
||||
response: { name: metadata.name, kind },
|
||||
};
|
||||
} catch (e) {
|
||||
return {
|
||||
@@ -36,8 +36,6 @@ const requestPatchKubeResourceInjectable = getInjectable({
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
causesSideEffects: true,
|
||||
});
|
||||
|
||||
export default requestPatchKubeResourceInjectable;
|
||||
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import type { KubeJsonApi } from "../../common/k8s-api/kube-json-api";
|
||||
import apiKubeInjectable from "./api-kube.injectable";
|
||||
|
||||
export type ApiKubeGet = KubeJsonApi["get"];
|
||||
|
||||
const apiKubeGetInjectable = getInjectable({
|
||||
id: "api-kube-get",
|
||||
instantiate: (di): ApiKubeGet => {
|
||||
const apiKube = di.inject(apiKubeInjectable);
|
||||
|
||||
return (...params) => apiKube.get(...params);
|
||||
},
|
||||
});
|
||||
|
||||
export default apiKubeGetInjectable;
|
||||
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import type { KubeJsonApi } from "../../common/k8s-api/kube-json-api";
|
||||
import apiKubeInjectable from "./api-kube.injectable";
|
||||
|
||||
export type ApiKubePatch = KubeJsonApi["patch"];
|
||||
|
||||
const apiKubePatchInjectable = getInjectable({
|
||||
id: "api-kube-patch",
|
||||
instantiate: (di): ApiKubePatch => {
|
||||
const apiKube = di.inject(apiKubeInjectable);
|
||||
|
||||
return (...params) => apiKube.patch(...params);
|
||||
},
|
||||
});
|
||||
|
||||
export default apiKubePatchInjectable;
|
||||
Reference in new issue
Block a user