import React from "react";
import { fireEvent, render, screen } from "@testing-library/react";
import Link from "../Link";
describe("Link", () => {
const ariaLabel = "Read more about the interesting article";
const text = "Read More";
const href = "https://www.monday.com";
let onClickMock: jest.Mock;
beforeEach(() => {
onClickMock = jest.fn();
render();
});
describe("default props", () => {
it("should open link in a new window", () => {
const element = screen.getByText(text).closest("a");
expect(element.target).toBe(Link.target.NEW_WINDOW);
});
it("should open link to have noreferrer attribute", () => {
const element = screen.getByText(text).closest("a");
expect(element.rel).toBe("noreferrer");
});
});
it("should call onClick", () => {
const element = screen.getByText(text).closest("a");
fireEvent.click(element);
expect(onClickMock.mock.calls.length).toBe(1);
});
it("should have the correct href", () => {
const element = screen.getByText(text).closest("a");
expect(element.href).toBe(`${href}/`);
});
it("should have the correct target", () => {
// eslint-disable-next-line jsx-a11y/anchor-is-valid
const { getByText } = render();
const element = getByText("test text").closest("a");
expect(element.target).toBe(Link.target.SELF);
});
it("should apply aria label correctly", () => {
const element = screen.getByLabelText(ariaLabel);
expect(element).toBeTruthy();
});
});