diff --git a/src/renderer/components/dock/logs/__test__/download-logs.test.tsx b/src/renderer/components/dock/logs/__test__/download-logs.test.tsx index 05020d6a6a..32e65b3639 100644 --- a/src/renderer/components/dock/logs/__test__/download-logs.test.tsx +++ b/src/renderer/components/dock/logs/__test__/download-logs.test.tsx @@ -15,7 +15,8 @@ import type { ApplicationBuilder } from "../../../test-utils/get-application-bui import { getApplicationBuilder } from "../../../test-utils/get-application-builder"; import dockStoreInjectable from "../../dock/store.injectable"; import areLogsPresentInjectable from "../are-logs-present.injectable"; -import callForLogsInjectable, { CallForLogs } from "../call-for-logs.injectable"; +import type { CallForLogs } from "../call-for-logs.injectable"; +import callForLogsInjectable from "../call-for-logs.injectable"; import createPodLogsTabInjectable from "../create-pod-logs-tab.injectable"; import getLogTabDataInjectable from "../get-log-tab-data.injectable"; import getLogsWithoutTimestampsInjectable from "../get-logs-without-timestamps.injectable"; @@ -125,23 +126,25 @@ describe("download logs options in pod logs dock tab", () => { describe("when call for logs resolves with logs", () => { beforeEach(() => { callForLogsMock.mockResolvedValue("all-logs"); - }) + }); describe("when selected 'download visible logs'", () => { beforeEach(() => { const button = rendered.getByTestId("download-visible-logs"); + button.click(); }); it("shows save dialog with proper attributes", () => { - expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain") + expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain"); }); - }) + }); describe("when selected 'download all logs'", () => { beforeEach(async () => { await act(async () => { const button = rendered.getByTestId("download-all-logs"); + button.click(); }); }); @@ -149,18 +152,18 @@ describe("download logs options in pod logs dock tab", () => { it("logs have been called with query", () => { expect(callForLogsMock).toHaveBeenCalledWith( { name: "dockerExporter", namespace: "default" }, - { "previous": true, "timestamps": false } + { "previous": true, "timestamps": false }, ); - }) + }); it("shows save dialog with proper attributes", async () => { - expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "all-logs", "text/plain") + expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "all-logs", "text/plain"); }); it("doesn't block download dropdown for interaction after click", async () => { - expect(rendered.getByTestId("download-logs-dropdown")).not.toHaveAttribute("disabled") + expect(rendered.getByTestId("download-logs-dropdown")).not.toHaveAttribute("disabled"); }); - }) + }); describe("blocking user interaction after menu item click", () => { it("block download dropdown for interaction when selected 'download all logs'", async () => { @@ -169,8 +172,8 @@ describe("download logs options in pod logs dock tab", () => { act(() => downloadMenuItem.click()); await waitFor(() => { - expect(rendered.getByTestId("download-logs-dropdown")).toHaveAttribute("disabled") - }) + expect(rendered.getByTestId("download-logs-dropdown")).toHaveAttribute("disabled"); + }); }); it("doesn't block dropdown for interaction when selected 'download visible logs'", () => { @@ -178,63 +181,67 @@ describe("download logs options in pod logs dock tab", () => { act(() => downloadMenuItem.click()); - expect(rendered.getByTestId("download-logs-dropdown")).not.toHaveAttribute("disabled") - }) - }) - }) + expect(rendered.getByTestId("download-logs-dropdown")).not.toHaveAttribute("disabled"); + }); + }); + }); describe("when call for logs resolves with no logs", () => { beforeEach(() => { callForLogsMock.mockResolvedValue(""); - }) + }); describe("when selected 'download visible logs'", () => { beforeEach(() => { const button = rendered.getByTestId("download-visible-logs"); + button.click(); }); it("shows save dialog with proper attributes", () => { - expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain") + expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain"); }); - }) + }); describe("when selected 'download all logs'", () => { beforeEach(async () => { await act(async () => { const button = rendered.getByTestId("download-all-logs"); + button.click(); }); }); it("doesn't show save dialog", async () => { - expect(openSaveFileDialogMock).not.toHaveBeenCalled() + expect(openSaveFileDialogMock).not.toHaveBeenCalled(); }); - }) - }) + }); + }); describe("when call for logs rejects", () => { beforeEach(() => { callForLogsMock.mockRejectedValue("error"); - }) + }); describe("when selected 'download visible logs'", () => { beforeEach(async () => { await act(async () => { const button = rendered.getByTestId("download-visible-logs"); + button.click(); }); }); it("shows save dialog with proper attributes", () => { - expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain") + expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain"); }); - }) + }); describe("when selected 'download all logs'", () => { beforeEach(async () => { await act(async () => { const button = rendered.getByTestId("download-all-logs"); + button.click(); }); }); @@ -242,15 +249,15 @@ describe("download logs options in pod logs dock tab", () => { it("logs have been called", () => { expect(callForLogsMock).toHaveBeenCalledWith( { name: "dockerExporter", namespace: "default" }, - { "previous": true, "timestamps": false } + { "previous": true, "timestamps": false }, ); - }) + }); it("doesn't show save dialog", async () => { - expect(openSaveFileDialogMock).not.toHaveBeenCalled() + expect(openSaveFileDialogMock).not.toHaveBeenCalled(); }); - }) - }) + }); + }); }); }); }); diff --git a/src/renderer/components/dock/logs/download-all-logs.injectable.ts b/src/renderer/components/dock/logs/download-all-logs.injectable.ts index d57c2b7bd4..abe87cc352 100644 --- a/src/renderer/components/dock/logs/download-all-logs.injectable.ts +++ b/src/renderer/components/dock/logs/download-all-logs.injectable.ts @@ -1,3 +1,7 @@ +/** + * 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 { PodLogsQuery } from "../../../../common/k8s-api/endpoints"; import type { ResourceDescriptor } from "../../../../common/k8s-api/kube-api"; @@ -10,19 +14,19 @@ const downloadAllLogsInjectable = getInjectable({ instantiate: (di) => { const callForLogs = di.inject(callForLogsInjectable); - const openSaveFileDialog = di.inject(openSaveFileDialogInjectable) + const openSaveFileDialog = di.inject(openSaveFileDialogInjectable); const logger = di.inject(loggerInjectable); return async (params: ResourceDescriptor, query: PodLogsQuery) => { const logs = await callForLogs(params, query).catch(error => { logger.error("Can't download logs: ", error); - }) + }); if (logs) { openSaveFileDialog(`${params.name}.log`, logs, "text/plain"); } - } + }; }, }); -export default downloadAllLogsInjectable; \ No newline at end of file +export default downloadAllLogsInjectable; diff --git a/src/renderer/components/dock/logs/download-logs-dropdown.tsx b/src/renderer/components/dock/logs/download-logs-dropdown.tsx index ca8da1b579..1da7b9f8a6 100644 --- a/src/renderer/components/dock/logs/download-logs-dropdown.tsx +++ b/src/renderer/components/dock/logs/download-logs-dropdown.tsx @@ -26,7 +26,7 @@ export function DownloadLogsDropdown({ downloadAllLogs, downloadVisibleLogs }: D } finally { setWaiting(false); } - } + }; return ( { - const openSaveFileDialog = di.inject(openSaveFileDialogInjectable) + const openSaveFileDialog = di.inject(openSaveFileDialogInjectable); return (filename: string, logs: string[]) => { openSaveFileDialog(filename, logs.join("\n"), "text/plain"); - } + }; }, }); -export default downloadLogsInjectable; \ No newline at end of file +export default downloadLogsInjectable; diff --git a/src/renderer/components/dock/logs/logs-view-model.ts b/src/renderer/components/dock/logs/logs-view-model.ts index a9b7b18214..85b8502df3 100644 --- a/src/renderer/components/dock/logs/logs-view-model.ts +++ b/src/renderer/components/dock/logs/logs-view-model.ts @@ -101,11 +101,11 @@ export class LogTabViewModel { if (pod && tabData) { const params = { name: pod.getName(), namespace: pod.getNs() }; - const query = { timestamps: tabData.showTimestamps, previous: tabData.showPrevious } + const query = { timestamps: tabData.showTimestamps, previous: tabData.showPrevious }; return this.dependencies.downloadAllLogs(params, query); } return; - } + }; } diff --git a/src/renderer/components/dropdown/dropdown.tsx b/src/renderer/components/dropdown/dropdown.tsx index 9cbe8ca78c..40efd877c6 100644 --- a/src/renderer/components/dropdown/dropdown.tsx +++ b/src/renderer/components/dropdown/dropdown.tsx @@ -3,7 +3,8 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import React, { HTMLAttributes, useState } from "react"; +import type { HTMLAttributes } from "react"; +import React, { useState } from "react"; import { Menu } from "../menu"; interface DropdownProps extends HTMLAttributes {