import { render, screen, userEvent } from "../../test/test-utils";
import { Program } from "../Program";
import { buildProgramWithPosition } from "../../test";
import { subMinutes, addMinutes } from "date-fns";
test("should render and show Program component properly", () => {
const program = buildProgramWithPosition();
render();
expect(screen.getByText(program.data.title)).toBeInTheDocument();
expect(screen.getByLabelText(/program time/i)).toBeInTheDocument();
expect(screen.getByLabelText(/program time/i)).toHaveTextContent(
`23:50 - 00:55`
);
});
test("should highlight live program", () => {
const since = subMinutes(new Date(), 60);
const till = addMinutes(new Date(), 60);
const program = buildProgramWithPosition({ program: { since, till } });
render();
expect(screen.getByRole("img", { name: /preview/i })).toBeInTheDocument();
expect(screen.getByRole("img", { name: /preview/i })).toHaveAttribute(
"src",
program.data.image
);
expect(screen.getByTestId(/program-content/i)).toHaveStyle(
`background: linear-gradient(to right, #051937, #002360,#002eb3)`
);
});
test("should handle onClick prop", () => {
const onClick = jest.fn();
const program = buildProgramWithPosition();
render(
);
userEvent.click(screen.getByTestId(/program-content/i));
expect(onClick).toHaveBeenCalled();
expect(onClick).toHaveBeenCalledTimes(1);
});