/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
import React from "react";
import { render, fireEvent, act } from "@testing-library/react";
import { createMemoryHistory } from "history";
import { MemoryRouter, Router } from "react-router-dom";
import EditDashboard from "../EditDashboard";
import BackendService from "../../services/BackendService";
jest.mock("../../hooks");
jest.mock("../../services/BackendService");
test("renders the name of the dashboard", async () => {
const { getByRole } = render(, {
wrapper: MemoryRouter,
});
const name = getByRole("heading", {
name: "My AWS Dashboard",
});
expect(name).toBeInTheDocument();
});
test("renders the topic area as subtitle", async () => {
const { findByText } = render(, {
wrapper: MemoryRouter,
});
const subtitle = await findByText("Bananas");
expect(subtitle).toBeInTheDocument();
});
test("edit details link takes you to details screen", async () => {
const history = createMemoryHistory();
jest.spyOn(history, "push");
const { findByRole } = render(
,
);
const editHeader = await findByRole("link", {
name: "Edit header",
});
fireEvent.click(editHeader);
expect(history.push).toHaveBeenCalledWith("/admin/dashboard/edit/123/header");
});
test("moving down a widget calls api to set widget order", async () => {
const history = createMemoryHistory();
BackendService.setWidgetOrder = jest.fn();
const { getByRole } = render(
,
);
await act(async () => {
// Dummy text widget is defined in hooks/__mocks__/index.tsx
fireEvent.click(
getByRole("button", {
name: "Move Dummy text widget down",
}),
);
});
expect(BackendService.setWidgetOrder).toBeCalled();
});