import { act, render, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import RobotButton from ".";
jest.mock("@robotical/webapp-types/dist-types/src/types/raft", () => ({
RaftTypeE: {
COG: "Cog",
MARTY: "Marty",
},
}));
jest.mock("../RaftSignal", () => () => (
));
jest.mock("../RaftBattery", () => () => (
));
describe("RobotButton", () => {
afterEach(() => {
jest.useRealTimers();
});
it("uses the resolved robot name for its accessible disconnect action", async () => {
jest.useFakeTimers();
const onClickDisconnect = jest.fn(async () => undefined);
const connectedRaft = {
id: "marty-1",
getBatteryStrength: jest.fn(() => 83),
getRSSI: jest.fn(() => -62),
getRaftName: jest.fn(async () => "Marty_90188a"),
};
render(
);
await act(async () => {
jest.advanceTimersByTime(500);
await Promise.resolve();
});
const disconnectButton = await screen.findByRole("button", {
name: "Disconnect Marty_90188a",
});
expect(disconnectButton.getAttribute("title")).toBe(
"Disconnect Marty_90188a"
);
expect(screen.getByTitle("Marty_90188a").textContent).toBe("Marty_90188a");
await act(async () => {
userEvent.click(disconnectButton);
await Promise.resolve();
});
expect(onClickDisconnect).toHaveBeenCalledWith("marty-1");
});
});