45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { render, screen } from "@testing-library/react";
|
|
import Footer from "@/components/Footer";
|
|
|
|
describe("Footer", () => {
|
|
it("renders footer element", () => {
|
|
render(<Footer />);
|
|
expect(screen.getByRole("contentinfo")).toBeInTheDocument();
|
|
});
|
|
|
|
it("renders app name", () => {
|
|
render(<Footer />);
|
|
expect(screen.getByText(/Plant Disease/i)).toBeInTheDocument();
|
|
});
|
|
|
|
it("renders navigation links", () => {
|
|
render(<Footer />);
|
|
// Should have links
|
|
const links = screen.getAllByRole("link");
|
|
expect(links.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
it("renders copyright or year", () => {
|
|
render(<Footer />);
|
|
const container = screen.container;
|
|
expect(container.textContent).toMatch(/\d{4}/);
|
|
});
|
|
|
|
it("renders disclaimer text", () => {
|
|
render(<Footer />);
|
|
const container = screen.container;
|
|
expect(container.textContent).toMatch(/beta|preview|accuracy|disclaimer/i);
|
|
});
|
|
|
|
it("renders links section with nav links", () => {
|
|
render(<Footer />);
|
|
expect(screen.getByText(/Links/i)).toBeInTheDocument();
|
|
});
|
|
|
|
it("renders about section", () => {
|
|
render(<Footer />);
|
|
expect(screen.getByText(/About/i)).toBeInTheDocument();
|
|
});
|
|
});
|