/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import React from "react"; import { render } from "@testing-library/react"; import { MemoryRouter } from "react-router-dom"; import TopicareaSettings from "../TopicareaSettings"; jest.mock("../../hooks"); test("renders the title", async () => { const { getByRole } = render(, { wrapper: MemoryRouter, }); expect(getByRole("heading", { name: "Topic areas" })).toBeInTheDocument(); }); test("renders the title with set value of topic areas", async () => { const { getByRole } = render(, { wrapper: MemoryRouter, }); expect(getByRole("heading", { name: "Topic areas" })).toBeInTheDocument(); }); test("renders the description", async () => { const { getByText } = render(, { wrapper: MemoryRouter, }); expect( getByText( "Dashboards are organized by topic areas. A dashboard must have a topic area " + "and can have only one topic area.", ), ).toBeInTheDocument(); }); test("render topic area label header", async () => { const { getByRole } = render(, { wrapper: MemoryRouter, }); expect(getByRole("heading", { name: "Topic area name" })).toBeInTheDocument(); }); test("renders the topic area label edit description", async () => { const { getByText } = render(, { wrapper: MemoryRouter, }); expect( getByText( "You can customize the name 'topic area' and it will be replaced throughout the interface. " + "For example, 'topic area' can be renamed to 'department', 'ministry', 'program', 'agency', etc.", ), ).toBeInTheDocument(); }); test("render single topic area name header", async () => { const { getByText } = render(, { wrapper: MemoryRouter, }); expect(getByText("Single topic area name")).toBeInTheDocument(); }); test("renders an edit button for the topci area label", async () => { const { getAllByRole } = render(, { wrapper: MemoryRouter, }); const button = getAllByRole("button", { name: "Edit topic area name" }); expect(button[0]).toBeInTheDocument(); }); test("render multiple topic areas name header", async () => { const { getByText } = render(, { wrapper: MemoryRouter, }); expect(getByText("Multiple topic areas name")).toBeInTheDocument(); }); test("renders the dropdown menu", async () => { const { getByText } = render(, { wrapper: MemoryRouter, }); expect(getByText("Actions")).toBeInTheDocument(); }); test("renders a button to create topic area", async () => { const { getByRole } = render(, { wrapper: MemoryRouter, }); const button = getByRole("button", { name: "Create new topic area" }); expect(button).toBeInTheDocument(); }); test("renders a topic area table", async () => { const { getByText } = render(, { wrapper: MemoryRouter, }); const topicarea = getByText("Topic Area Bananas"); expect(topicarea).toBeInTheDocument(); }); test("topic area settings should match snapshot", async () => { const wrapper = render(, { wrapper: MemoryRouter, }); expect(wrapper.container).toMatchSnapshot(); });