test: Fix MainLayout tests by providing ThemeProvider context

This commit is contained in:
Yunxiao Xu
2026-02-17 02:19:41 -08:00
parent ece12f951a
commit ec6760b5a7

View File

@@ -1,6 +1,7 @@
import { render, screen } from "@testing-library/react" import { render, screen } from "@testing-library/react"
import { describe, it, expect, vi } from "vitest" import { describe, it, expect, vi } from "vitest"
import { MainLayout } from "./MainLayout" import { MainLayout } from "./MainLayout"
import { ThemeProvider } from "../theme-provider"
describe("MainLayout", () => { describe("MainLayout", () => {
const mockProps = { const mockProps = {
@@ -14,22 +15,32 @@ describe("MainLayout", () => {
it("renders children correctly", () => { it("renders children correctly", () => {
render( render(
<ThemeProvider>
<MainLayout {...mockProps}> <MainLayout {...mockProps}>
<div data-testid="test-child">Test Content</div> <div data-testid="test-child">Test Content</div>
</MainLayout> </MainLayout>
</ThemeProvider>
) )
expect(screen.getByTestId("test-child")).toBeInTheDocument() expect(screen.getByTestId("test-child")).toBeInTheDocument()
expect(screen.getByText("Test Content")).toBeInTheDocument() expect(screen.getByText("Test Content")).toBeInTheDocument()
}) })
it("renders the sidebar", () => { it("renders the sidebar", () => {
render(<MainLayout {...mockProps}>Content</MainLayout>) render(
<ThemeProvider>
<MainLayout {...mockProps}>Content</MainLayout>
</ThemeProvider>
)
// Sidebar should have some identifying text or role // Sidebar should have some identifying text or role
expect(screen.getByRole("complementary")).toBeInTheDocument() expect(screen.getByRole("complementary")).toBeInTheDocument()
}) })
it("renders the header/navigation", () => { it("renders the header/navigation", () => {
render(<MainLayout {...mockProps}>Content</MainLayout>) render(
<ThemeProvider>
<MainLayout {...mockProps}>Content</MainLayout>
</ThemeProvider>
)
expect(screen.getByRole("navigation")).toBeInTheDocument() expect(screen.getByRole("navigation")).toBeInTheDocument()
}) })
}) })