From e45a0593ffa79a131a97b020244ead13deaba159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imobach=20Gonz=C3=A1lez=20Sosa?= Date: Wed, 17 Jul 2024 08:12:10 +0100 Subject: [PATCH] test(web): fix issues-related tests --- web/src/App.test.jsx | 6 ++ web/src/client/storage.test.js | 72 ------------------- .../components/overview/OverviewPage.test.jsx | 14 ++-- 3 files changed, 16 insertions(+), 76 deletions(-) diff --git a/web/src/App.test.jsx b/web/src/App.test.jsx index 74f65dbf48..a4a4b0d96d 100644 --- a/web/src/App.test.jsx +++ b/web/src/App.test.jsx @@ -29,6 +29,7 @@ import { STARTUP, CONFIG, INSTALL } from "~/client/phase"; import { IDLE, BUSY } from "~/client/status"; import { useL10nConfigChanges } from "./queries/l10n"; import { useProductChanges } from "./queries/software"; +import { useIssuesChanges } from "./queries/issues"; jest.mock("~/client"); @@ -52,6 +53,11 @@ jest.mock("~/queries/l10n", () => ({ useL10nConfigChanges: () => jest.fn(), })); +jest.mock("~/queries/issues", () => ({ + ...jest.requireActual("~/queries/issues"), + useIssuesChanges: () => jest.fn(), +})); + const mockClientStatus = { connected: true, error: false, diff --git a/web/src/client/storage.test.js b/web/src/client/storage.test.js index f481599a25..6b9d214d0a 100644 --- a/web/src/client/storage.test.js +++ b/web/src/client/storage.test.js @@ -1346,78 +1346,6 @@ describe.skip("#onDeprecate", () => { }); }); -describe("#getIssues", () => { - beforeEach(() => { - client = new StorageClient(http); - }); - - describe("if there are no issues", () => { - beforeEach(() => { - mockJsonFn.mockResolvedValue([]); - }); - - it("returns an empty list", async () => { - const issues = await client.getIssues(); - expect(issues).toEqual([]); - }); - }); - - describe("if there are issues", () => { - beforeEach(() => { - mockJsonFn.mockResolvedValue(contexts.withIssues()); - }); - - it("returns the list of issues", async () => { - const issues = await client.getIssues(); - expect(issues).toEqual( - expect.arrayContaining([ - { description: "Issue 1", details: "", source: "system", severity: "error" }, - { description: "Issue 2", details: "", source: "system", severity: "warn" }, - { description: "Issue 3", details: "", source: "config", severity: "error" }, - ]), - ); - }); - }); -}); - -describe("#getErrors", () => { - beforeEach(() => { - client = new StorageClient(http); - mockJsonFn.mockResolvedValue(contexts.withIssues()); - }); - - it("returns the issues with error severity", async () => { - const errors = await client.getErrors(); - expect(errors.map((e) => e.description)).toEqual( - expect.arrayContaining(["Issue 1", "Issue 3"]), - ); - }); -}); - -// @fixme See note at the test of onDeprecate about mocking signals -describe.skip("#onIssuesChange", () => { - it("runs the handler when the issues change", async () => { - client = new StorageClient(); - - const handler = jest.fn(); - client.onIssuesChange(handler); - - emitSignal("/org/opensuse/Agama/Storage1", "org.opensuse.Agama1.Issues", { - All: { - v: [ - ["Issue 1", "", 1, 0], - ["Issue 2", "", 2, 1], - ], - }, - }); - - expect(handler).toHaveBeenCalledWith([ - { description: "Issue 1", details: "", source: "system", severity: "warn" }, - { description: "Issue 2", details: "", source: "config", severity: "error" }, - ]); - }); -}); - describe("#system", () => { describe("#getDevices", () => { beforeEach(() => { diff --git a/web/src/components/overview/OverviewPage.test.jsx b/web/src/components/overview/OverviewPage.test.jsx index a5024b9284..c4463bd3df 100644 --- a/web/src/components/overview/OverviewPage.test.jsx +++ b/web/src/components/overview/OverviewPage.test.jsx @@ -24,9 +24,11 @@ import { screen } from "@testing-library/react"; import { installerRender } from "~/test-utils"; import { createClient } from "~/client"; import { OverviewPage } from "~/components/overview"; +import { IssuesList } from "~/types/issues"; const startInstallationFn = jest.fn(); let mockSelectedProduct = { id: "Tumbleweed" }; +const mockIssuesList = new IssuesList([], [], [], []); jest.mock("~/client"); jest.mock("~/queries/software", () => ({ @@ -35,6 +37,11 @@ jest.mock("~/queries/software", () => ({ useProductChanges: () => jest.fn(), })); +jest.mock("~/queries/issues", () => ({ + ...jest.requireActual("~/queries/issues"), + useIssuesChanges: () => jest.fn().mockResolvedValue(mockIssuesList), +})); + jest.mock("~/components/overview/L10nSection", () => () =>
Localization Section
); jest.mock("~/components/overview/StorageSection", () => () =>
Storage Section
); jest.mock("~/components/overview/SoftwareSection", () => () =>
Software Section
); @@ -46,7 +53,6 @@ beforeEach(() => { manager: { startInstallation: startInstallationFn, }, - issues: jest.fn().mockResolvedValue({ isEmpty: true }), }; }); }); @@ -58,9 +64,9 @@ describe("when a product is selected", () => { it("renders the overview page content and the Install button", async () => { installerRender(); - screen.getByText("Localization Section"); - screen.getByText("Storage Section"); - screen.getByText("Software Section"); + screen.findByText("Localization Section"); + screen.findByText("Storage Section"); + screen.findByText("Software Section"); screen.findByText("Install Button"); }); });