forked from accordproject/template-playground
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNavbar.test.tsx
More file actions
54 lines (43 loc) · 1.45 KB
/
Navbar.test.tsx
File metadata and controls
54 lines (43 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import { render, screen } from "@testing-library/react";
import "@testing-library/jest-dom";
import Navbar from "../../components/Navbar";
import { MemoryRouter } from "react-router-dom";
import { vi } from "vitest";
vi.mock("../../components/ToggleDarkMode", () => ({
default: () => <div data-testid="toggle-dark-mode">Dark Mode Toggle</div>,
}));
const renderNavbar = () => {
render(
<MemoryRouter>
<Navbar scrollToExplore={() => {}} />
</MemoryRouter>
);
};
describe("Navbar", () => {
it("renders logo and title on small screens", () => {
renderNavbar();
const logoImage = screen.getByRole("img", { name: /Template Playground/i });
expect(logoImage).toBeInTheDocument();
const title = screen.getByText(/Template Playground/i);
expect(title).toBeInTheDocument();
});
it("renders Github link on all screens", () => {
renderNavbar();
const githubLink = screen.getByRole("link", { name: /Github/i });
expect(githubLink).toBeInTheDocument();
});
it("shows hover effect on menu items", () => {
renderNavbar();
const homeMenuItem = screen
.getByText(/Template Playground/i)
.closest("div");
expect(homeMenuItem).not.toHaveStyle({
backgroundColor: "rgba(255, 255, 255, 0.1)",
});
});
it("renders Dark Mode Toggle button", () => {
renderNavbar();
const toggleDarkMode = screen.getByTestId("toggle-dark-mode");
expect(toggleDarkMode).toBeInTheDocument();
});
});