import { describe, it, expect } from "vitest";
import * as React from "react";
import { render, screen } from "../../tests/test-utils";
import type { Title } from "../../types";
import { TitleInfo } from "./TitleInfo";
import titles from '../../mocks/data/titles.json';
const mockItem: Title = titles[0] as Title;
describe("TitleInfo Component", () => {
it("renders the title, type, and release year", async () => {
render();
const title = screen.getByText(mockItem.title);
const objectType = screen.getByText(mockItem.objectType);
const releaseYear = screen.getByText(String(mockItem.originalReleaseYear!));
expect(title).toBeInTheDocument();
expect(objectType).toBeInTheDocument();
expect(releaseYear).toBeInTheDocument();
});
it("highlights text based on the highlight prop", async () => {
const query = mockItem.title.substring(0, 3); // Get the first 3 characters of the title
render();
// Find the highlighted text wrapped in a element
const highlightedText = screen.getByText(query);
expect(highlightedText.tagName).toBe("MARK"); // Ensure the text is wrapped in a element
expect(highlightedText).toHaveTextContent(query); // Ensure the content is correct
});
it("renders details when the details prop is true", async () => {
render();
const directorLabel = screen.getByText("Director:");
const director = screen.getByText(mockItem.director!);
expect(directorLabel).toBeInTheDocument();
expect(director).toBeInTheDocument();
});
it("renders the ID when provided", async () => {
render();
const id = screen.getByText(mockItem.imdbId!);
expect(id).toBeInTheDocument();
});
it("renders the badge for the title type", async () => {
render();
const objectType = screen.getByText("movie");
expect(objectType).toBeInTheDocument();
});
});