import * as React from "react"; import { screen, waitFor } from "@testing-library/react"; import QuicksightDashboard from "../../../src/components/QuicksightDashboard"; import { LibrariesData } from "../../../src/interfaces"; import buildStore from "../../../src/store"; import { setupServer } from "msw/node"; import { http, HttpResponse } from "msw"; import renderWithContext from "../testUtils/renderWithContext"; import { renderWithProviders } from "../testUtils/withProviders"; import QuicksightDashboardPage from "../../../src/components/QuicksightDashboardPage"; const libraries: LibrariesData = { libraries: [{ uuid: "my-uuid" }] }; const dashboardId = "test"; const embedUrl = "http://embedUrl"; const dashboardUrlData = { embedUrl: embedUrl }; describe("QuicksightDashboard", () => { const server = setupServer( http.get("/admin/libraries", () => HttpResponse.json(libraries)), http.get(`/admin/quicksight_embed/${dashboardId}`, ({ request }) => { const url = new URL(request.url); const libraryUuids = url.searchParams.get("libraryUuids"); if (libraryUuids === libraries["libraries"][0]["uuid"]) { return HttpResponse.json(dashboardUrlData); } }) ); beforeAll(() => { server.listen(); }); afterAll(() => { server.close(); }); it("embed url is retrieved and set in iframe", async () => { renderWithProviders( ); await waitFor(() => { expect(screen.getAllByTitle("Library Dashboard")[0]).toHaveAttribute( "src", embedUrl ); }); }); it("header renders without navigation links ", () => { renderWithProviders(); // Make sure we see the QuicksSight iFrame. expect(screen.getByTitle("Library Dashboard")).toBeInTheDocument(); // Make sure we have the branding image. expect( screen.getByAltText("Palace Collection Manager") ).toBeInTheDocument(); // Make sure we do not see other navigation links. ["Dashboard", "System Configuration"].forEach((name) => { expect(screen.queryByText(name)).not.toBeInTheDocument(); }); }); });