mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix app crash opening Install Chart dock tab (#6782)
* Change type of RequestHelmChartValues to be AsyncResult Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com> * Fixing tests Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com> * Linter fix Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com> Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
8b752981a0
commit
e0bccfabd4
@ -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",
|
||||
|
||||
@ -240,9 +240,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({
|
||||
@ -537,9 +538,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([]);
|
||||
});
|
||||
@ -702,9 +704,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", () => {
|
||||
@ -847,9 +850,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");
|
||||
});
|
||||
@ -920,9 +924,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",
|
||||
|
||||
@ -149,9 +149,10 @@ describe("installing helm chart from previously opened tab", () => {
|
||||
|
||||
describe("when configuration and version resolves", () => {
|
||||
beforeEach(async () => {
|
||||
await requestHelmChartValuesMock.resolve(
|
||||
"some-default-configuration",
|
||||
);
|
||||
await requestHelmChartValuesMock.resolve({
|
||||
callWasSuccessful: true,
|
||||
response: "some-default-configuration",
|
||||
});
|
||||
|
||||
await requestHelmChartVersionsMock.resolve([
|
||||
HelmChart.create({
|
||||
|
||||
@ -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,
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user