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 eece5531b8..1a1b67e121 100644 --- a/src/renderer/components/dock/logs/__test__/download-logs.test.tsx +++ b/src/renderer/components/dock/logs/__test__/download-logs.test.tsx @@ -4,16 +4,19 @@ */ import type { DiContainer } from "@ogre-tools/injectable"; -import { act, RenderResult, waitFor } from "@testing-library/react"; +import type { RenderResult } from "@testing-library/react"; +import { act, waitFor } from "@testing-library/react"; import { SearchStore } from "../../../../search-store/search-store"; import openSaveFileDialogInjectable from "../../../../utils/save-file.injectable"; -import { ApplicationBuilder, getApplicationBuilder } from "../../../test-utils/get-application-builder"; +import type { ApplicationBuilder } from "../../../test-utils/get-application-builder"; +import { getApplicationBuilder } from "../../../test-utils/get-application-builder"; import type { TabId } from "../../dock/store"; import dockStoreInjectable from "../../dock/store.injectable"; import callForAllLogsInjectable from "../call-for-all-logs.injectable"; import createPodLogsTabInjectable from "../create-pod-logs-tab.injectable"; import getRandomIdForPodLogsTabInjectable from "../get-random-id-for-pod-logs-tab.injectable"; -import { LogTabViewModel, LogTabViewModelDependencies } from "../logs-view-model"; +import type { LogTabViewModelDependencies } from "../logs-view-model"; +import { LogTabViewModel } from "../logs-view-model"; import logsViewModelInjectable from "../logs-view-model.injectable"; import { dockerPod } from "./pod.mock"; @@ -74,7 +77,7 @@ describe("download logs options in pod logs dock tab", () => { builder.beforeApplicationStart(({ rendererDi }) => { rendererDi.override(callForAllLogsInjectable, () => () => Promise.resolve("all-logs")); - rendererDi.override(logsViewModelInjectable, () => getOnePodViewModel("foobar")) + rendererDi.override(logsViewModelInjectable, () => getOnePodViewModel("foobar")); rendererDi.override(getRandomIdForPodLogsTabInjectable, () => jest .fn(() => "some-irrelevant-random-id") @@ -110,7 +113,7 @@ describe("download logs options in pod logs dock tab", () => { createLogsTab({ selectedPod: pod, - selectedContainer: container + selectedContainer: container, }); }); @@ -125,6 +128,7 @@ describe("download logs options in pod logs dock tab", () => { describe("when clicking on button", () => { beforeEach(() => { const button = rendered.getByTestId("download-logs-dropdown"); + act(() => button.click()); }); @@ -139,44 +143,44 @@ describe("download logs options in pod logs dock tab", () => { it("when selected 'download visible logs', shows save dialog with proper attributes", async () => { const downloadMenuItem = rendered.getByTestId("download-visible-logs"); - downloadMenuItem.click() + downloadMenuItem.click(); await waitFor(() => - expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain") + expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain"), ); }); it("when selected 'download all logs', shows save dialog with proper attributes", async () => { const downloadMenuItem = rendered.getByTestId("download-all-logs"); - downloadMenuItem.click() + downloadMenuItem.click(); await waitFor(() => - expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "all-logs", "text/plain") + expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "all-logs", "text/plain"), ); }); it("when selected 'download all logs', block download dropdown for interaction", async () => { const downloadMenuItem = rendered.getByTestId("download-all-logs"); - downloadMenuItem.click() + downloadMenuItem.click(); await waitFor(() => - expect(rendered.getByTestId("download-logs-dropdown")).toHaveAttribute("disabled") + expect(rendered.getByTestId("download-logs-dropdown")).toHaveAttribute("disabled"), ); }); it("when save file dialog opens, restore download button for interaction", async () => { const downloadMenuItem = rendered.getByTestId("download-all-logs"); - downloadMenuItem.click() + downloadMenuItem.click(); await waitFor(() => - expect(openSaveFileDialogMock).toHaveBeenCalled() + expect(openSaveFileDialogMock).toHaveBeenCalled(), ); - expect(rendered.getByTestId("download-logs-dropdown")).not.toHaveAttribute("disabled") + expect(rendered.getByTestId("download-logs-dropdown")).not.toHaveAttribute("disabled"); }); }); }); -}); \ No newline at end of file +}); diff --git a/src/renderer/components/dock/logs/call-for-all-logs.injectable.ts b/src/renderer/components/dock/logs/call-for-all-logs.injectable.ts index 6bd0d2af9e..af25504a90 100644 --- a/src/renderer/components/dock/logs/call-for-all-logs.injectable.ts +++ b/src/renderer/components/dock/logs/call-for-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 callForLogsInjectable from "./call-for-logs.injectable"; @@ -15,7 +19,7 @@ const callForAllLogsInjectable = getInjectable({ return logs; }; - } + }, }); -export default callForAllLogsInjectable; \ No newline at end of file +export default callForAllLogsInjectable; diff --git a/src/renderer/components/dock/logs/controls.tsx b/src/renderer/components/dock/logs/controls.tsx index 1cef55a39f..a5a221a582 100644 --- a/src/renderer/components/dock/logs/controls.tsx +++ b/src/renderer/components/dock/logs/controls.tsx @@ -55,7 +55,7 @@ const NonInjectedLogControls = observer(({ openSaveFileDialog, model, callForAll openSaveFileDialog(`${pod.getName()}.log`, logs, "text/plain"); } - } + }; const downloadLogs = () => { return new Promise((resolve) => { diff --git a/src/renderer/components/dock/logs/download-logs-dropdown.tsx b/src/renderer/components/dock/logs/download-logs-dropdown.tsx index c5e078f7ba..76907d87d1 100644 --- a/src/renderer/components/dock/logs/download-logs-dropdown.tsx +++ b/src/renderer/components/dock/logs/download-logs-dropdown.tsx @@ -10,8 +10,8 @@ import { Icon } from "../../icon"; import { Menu, MenuItem } from "../../menu"; interface DownloadLogsDropdownProps { - downloadVisibleLogs: () => Promise - downloadAllLogs: () => Promise + downloadVisibleLogs: () => Promise; + downloadAllLogs: () => Promise; } export function DownloadLogsDropdown({ downloadAllLogs, downloadVisibleLogs }: DownloadLogsDropdownProps) { @@ -24,12 +24,13 @@ export function DownloadLogsDropdown({ downloadAllLogs, downloadVisibleLogs }: D const downloadLogs = async (download: () => Promise) => { setWaiting(true); + try { await download(); } finally { setWaiting(false); } - } + }; return ( <>