1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Change type of RequestHelmChartValues to be AsyncResult

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
Alex Andreev 2022-12-19 15:13:54 +03:00
parent 5c6402b60a
commit 39252a17ec
3 changed files with 31 additions and 20 deletions

View File

@ -3,12 +3,13 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { AsyncResult } from "../../../utils/async-result";
import { urlBuilderFor } from "../../../utils/buildUrl";
import apiBaseInjectable from "../../api-base.injectable";
const requestValuesEndpoint = urlBuilderFor("/v2/charts/:repo/:name/values");
export type RequestHelmChartValues = (repo: string, name: string, version: string) => Promise<string>;
export type RequestHelmChartValues = (repo: string, name: string, version: string) => Promise<AsyncResult<string>>;
const requestHelmChartValuesInjectable = getInjectable({
id: "request-helm-chart-values",

View File

@ -237,9 +237,10 @@ describe("installing helm chart from new tab", () => {
describe("when default configuration and versions resolve", () => {
beforeEach(async () => {
await requestHelmChartValuesMock.resolve(
"some-default-configuration",
);
await requestHelmChartValuesMock.resolve({
callWasSuccessful: true,
response: "some-default-configuration",
});
await requestHelmChartVersionsMock.resolve([
HelmChart.create({
@ -531,9 +532,10 @@ describe("installing helm chart from new tab", () => {
describe("when configuration and versions resolve", () => {
beforeEach(async () => {
await requestHelmChartValuesMock.resolve(
"some-other-default-configuration",
);
await requestHelmChartValuesMock.resolve({
callWasSuccessful: true,
response: "some-other-default-configuration",
});
await requestHelmChartVersionsMock.resolve([]);
});
@ -696,9 +698,10 @@ describe("installing helm chart from new tab", () => {
describe("when default configuration resolves", () => {
beforeEach(async () => {
await requestHelmChartValuesMock.resolve(
"some-default-configuration-for-other-version",
);
await requestHelmChartValuesMock.resolve({
callWasSuccessful: true,
response: "some-default-configuration-for-other-version",
});
});
it("renders", () => {
@ -841,9 +844,10 @@ describe("installing helm chart from new tab", () => {
)
.selectOption("some-other-version");
await requestHelmChartValuesMock.resolve(
"some-default-configuration-for-other-version",
);
await requestHelmChartValuesMock.resolve({
callWasSuccessful: true,
response: "some-default-configuration-for-other-version",
});
expect(installButton).not.toHaveAttribute("disabled");
});
@ -914,9 +918,10 @@ describe("installing helm chart from new tab", () => {
)
.selectOption("some-other-version");
await requestHelmChartValuesMock.resolve(
"some-default-configuration-for-other-version",
);
await requestHelmChartValuesMock.resolve({
callWasSuccessful: true,
response: "some-default-configuration-for-other-version",
});
const input = rendered.getByTestId(
"monaco-editor-for-some-first-tab-id",

View File

@ -122,14 +122,18 @@ export class InstallChartModel {
this.configuration.isLoading.set(true);
});
const configuration = await this.dependencies.requestHelmChartValues(
const chartValuesRequest = await this.dependencies.requestHelmChartValues(
this.chart.repo,
this.chart.name,
version,
);
if (!chartValuesRequest.callWasSuccessful) {
throw chartValuesRequest.error;
}
runInAction(() => {
this.configuration.onChange(configuration);
this.configuration.onChange(chartValuesRequest.response);
this.configuration.isLoading.set(false);
});
},
@ -187,7 +191,7 @@ export class InstallChartModel {
load = async () => {
await this.dependencies.waitForChart();
const [defaultConfiguration, versions] = await Promise.all([
const [defaultConfigurationRequest, versions] = await Promise.all([
this.dependencies.requestHelmChartValues(
this.chart.repo,
this.chart.name,
@ -203,13 +207,14 @@ export class InstallChartModel {
runInAction(() => {
// TODO: Make "default" not hard-coded
const namespace = this.chart.namespace || "default";
const values = this.chart.values || (defaultConfigurationRequest.callWasSuccessful ? defaultConfigurationRequest.response : "");
this.versions.replace(versions);
this.save({
version: this.chart.version,
namespace,
values: this.chart.values || defaultConfiguration,
values,
releaseName: this.chart.releaseName,
});
});