mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Testing resolve/reject options for callForLogsInjectable
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
16aac15f1a
commit
3b3e6722fe
@ -814,9 +814,10 @@ exports[`download logs options in pod logs dock tab when opening pod logs render
|
|||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
<label
|
<label
|
||||||
class="Checkbox flex align-center show-previous"
|
class="Checkbox flex align-center show-previous checked"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
|
checked=""
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
/>
|
/>
|
||||||
<i
|
<i
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import type { ApplicationBuilder } from "../../../test-utils/get-application-bui
|
|||||||
import { getApplicationBuilder } from "../../../test-utils/get-application-builder";
|
import { getApplicationBuilder } from "../../../test-utils/get-application-builder";
|
||||||
import dockStoreInjectable from "../../dock/store.injectable";
|
import dockStoreInjectable from "../../dock/store.injectable";
|
||||||
import areLogsPresentInjectable from "../are-logs-present.injectable";
|
import areLogsPresentInjectable from "../are-logs-present.injectable";
|
||||||
import callForLogsInjectable from "../call-for-logs.injectable";
|
import callForLogsInjectable, { CallForLogs } from "../call-for-logs.injectable";
|
||||||
import createPodLogsTabInjectable from "../create-pod-logs-tab.injectable";
|
import createPodLogsTabInjectable from "../create-pod-logs-tab.injectable";
|
||||||
import getLogTabDataInjectable from "../get-log-tab-data.injectable";
|
import getLogTabDataInjectable from "../get-log-tab-data.injectable";
|
||||||
import getLogsWithoutTimestampsInjectable from "../get-logs-without-timestamps.injectable";
|
import getLogsWithoutTimestampsInjectable from "../get-logs-without-timestamps.injectable";
|
||||||
@ -29,8 +29,11 @@ import stopLoadingLogsInjectable from "../stop-loading-logs.injectable";
|
|||||||
import { dockerPod } from "./pod.mock";
|
import { dockerPod } from "./pod.mock";
|
||||||
|
|
||||||
describe("download logs options in pod logs dock tab", () => {
|
describe("download logs options in pod logs dock tab", () => {
|
||||||
|
let rendered: RenderResult;
|
||||||
|
let rendererDi: DiContainer;
|
||||||
let builder: ApplicationBuilder;
|
let builder: ApplicationBuilder;
|
||||||
let openSaveFileDialogMock: jest.MockedFunction<() => void>;
|
let openSaveFileDialogMock: jest.MockedFunction<() => void>;
|
||||||
|
let callForLogsMock: jest.MockedFunction<CallForLogs>;
|
||||||
const logs = new Map([["timestamp", "some-logs"]]);
|
const logs = new Map([["timestamp", "some-logs"]]);
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@ -40,8 +43,10 @@ describe("download logs options in pod logs dock tab", () => {
|
|||||||
|
|
||||||
builder.setEnvironmentToClusterFrame();
|
builder.setEnvironmentToClusterFrame();
|
||||||
|
|
||||||
|
callForLogsMock = jest.fn();
|
||||||
|
|
||||||
builder.beforeApplicationStart(({ rendererDi }) => {
|
builder.beforeApplicationStart(({ rendererDi }) => {
|
||||||
rendererDi.override(callForLogsInjectable, () => () => Promise.resolve("all-logs"));
|
rendererDi.override(callForLogsInjectable, () => callForLogsMock);
|
||||||
|
|
||||||
// Overriding internals of logsViewModelInjectable
|
// Overriding internals of logsViewModelInjectable
|
||||||
rendererDi.override(getLogsInjectable, () => () => ["some-logs"]);
|
rendererDi.override(getLogsInjectable, () => () => ["some-logs"]);
|
||||||
@ -52,7 +57,7 @@ describe("download logs options in pod logs dock tab", () => {
|
|||||||
selectedPodId: selectedPod.getId(),
|
selectedPodId: selectedPod.getId(),
|
||||||
selectedContainer: selectedPod.getContainers()[0].name,
|
selectedContainer: selectedPod.getContainers()[0].name,
|
||||||
namespace: "default",
|
namespace: "default",
|
||||||
showPrevious: false,
|
showPrevious: true,
|
||||||
showTimestamps: false,
|
showTimestamps: false,
|
||||||
}));
|
}));
|
||||||
rendererDi.override(setLogTabDataInjectable, () => jest.fn());
|
rendererDi.override(setLogTabDataInjectable, () => jest.fn());
|
||||||
@ -72,9 +77,6 @@ describe("download logs options in pod logs dock tab", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("when opening pod logs", () => {
|
describe("when opening pod logs", () => {
|
||||||
let rendered: RenderResult;
|
|
||||||
let rendererDi: DiContainer;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
rendered = await builder.render();
|
rendered = await builder.render();
|
||||||
rendererDi = builder.dis.rendererDi;
|
rendererDi = builder.dis.rendererDi;
|
||||||
@ -120,47 +122,105 @@ describe("download logs options in pod logs dock tab", () => {
|
|||||||
expect(rendered.getByTestId("download-all-logs")).toBeInTheDocument();
|
expect(rendered.getByTestId("download-all-logs")).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("when selected 'download visible logs', shows save dialog with proper attributes", async () => {
|
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")
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("when selected 'download all logs'", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await act(async () => {
|
||||||
|
const button = rendered.getByTestId("download-all-logs");
|
||||||
|
button.click();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("logs have been called with query", () => {
|
||||||
|
expect(callForLogsMock).toHaveBeenCalledWith(
|
||||||
|
{ name: "dockerExporter", namespace: "default" },
|
||||||
|
{ "previous": true, "timestamps": false }
|
||||||
|
);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("shows save dialog with proper attributes", async () => {
|
||||||
|
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")
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("blocking user interaction", () => {
|
||||||
|
it("block download dropdown for interaction when selected 'download all logs'", async () => {
|
||||||
|
const downloadMenuItem = rendered.getByTestId("download-all-logs");
|
||||||
|
|
||||||
|
act(() => downloadMenuItem.click());
|
||||||
|
|
||||||
|
await waitFor(() => {
|
||||||
|
expect(rendered.getByTestId("download-logs-dropdown")).toHaveAttribute("disabled")
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
it("doesn't block dropdown for interaction when selected 'download visible logs'", () => {
|
||||||
const downloadMenuItem = rendered.getByTestId("download-visible-logs");
|
const downloadMenuItem = rendered.getByTestId("download-visible-logs");
|
||||||
|
|
||||||
downloadMenuItem.click();
|
act(() => downloadMenuItem.click());
|
||||||
|
|
||||||
await waitFor(() =>
|
expect(rendered.getByTestId("download-logs-dropdown")).not.toHaveAttribute("disabled")
|
||||||
expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain"),
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
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")
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("when selected 'download all logs'", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await act(async () => {
|
||||||
|
const button = rendered.getByTestId("download-all-logs");
|
||||||
|
button.click();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("logs have been called", () => {
|
||||||
|
expect(callForLogsMock).toHaveBeenCalledWith(
|
||||||
|
{ name: "dockerExporter", namespace: "default" },
|
||||||
|
{ "previous": true, "timestamps": false }
|
||||||
);
|
);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("doesn't show save dialog", async () => {
|
||||||
|
expect(openSaveFileDialogMock).not.toHaveBeenCalled()
|
||||||
});
|
});
|
||||||
|
})
|
||||||
it("when selected 'download all logs', shows save dialog with proper attributes", async () => {
|
})
|
||||||
const downloadMenuItem = rendered.getByTestId("download-all-logs");
|
|
||||||
|
|
||||||
downloadMenuItem.click();
|
|
||||||
|
|
||||||
await waitFor(() =>
|
|
||||||
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();
|
|
||||||
|
|
||||||
await waitFor(() =>
|
|
||||||
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();
|
|
||||||
|
|
||||||
await waitFor(() =>
|
|
||||||
expect(openSaveFileDialogMock).toHaveBeenCalled(),
|
|
||||||
);
|
|
||||||
|
|
||||||
expect(rendered.getByTestId("download-logs-dropdown")).not.toHaveAttribute("disabled");
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user