Files
medusa-store/www/apps/api-reference/providers/__tests__/main-nav.test.tsx
Shahed Nasser 4d632e7a5d docs: added tests for components in api-reference project (#14428)
* add tests (WIP)

* added test for h2

* finished adding tests

* fixes

* fixes

* fixes
2026-01-05 10:56:56 +02:00

81 lines
2.0 KiB
TypeScript

import React from "react"
import { beforeEach, describe, expect, test, vi } from "vitest"
import { cleanup, render } from "@testing-library/react"
import { MainNavProvider } from "../main-nav"
// Mock functions
const mockGetNavDropdownItems = vi.fn((options: unknown) => [
{
title: "Test Item",
path: "/test",
},
])
vi.mock("docs-ui", () => ({
getNavDropdownItems: (options: unknown) => mockGetNavDropdownItems(options),
MainNavProvider: ({ children, navItems }: { children: React.ReactNode; navItems: unknown[] }) => (
<div data-testid="ui-main-nav-provider" data-nav-items={JSON.stringify(navItems)}>
{children}
</div>
),
}))
vi.mock("@/config", () => ({
config: {
baseUrl: "https://test.com",
},
}))
describe("MainNavProvider", () => {
beforeEach(() => {
vi.clearAllMocks()
cleanup()
})
describe("rendering", () => {
test("renders children", () => {
const { getByText } = render(
<MainNavProvider>
<div>Test Content</div>
</MainNavProvider>
)
expect(getByText("Test Content")).toBeInTheDocument()
})
test("renders UiMainNavProvider with navItems", () => {
const { getByTestId } = render(
<MainNavProvider>
<div>Test</div>
</MainNavProvider>
)
const uiProvider = getByTestId("ui-main-nav-provider")
expect(uiProvider).toBeInTheDocument()
expect(mockGetNavDropdownItems).toHaveBeenCalledWith({
basePath: "https://test.com",
})
})
})
describe("navigationDropdownItems", () => {
test("memoizes navigationDropdownItems", () => {
const { rerender } = render(
<MainNavProvider>
<div>Test</div>
</MainNavProvider>
)
const callCount = mockGetNavDropdownItems.mock.calls.length
rerender(
<MainNavProvider>
<div>Test</div>
</MainNavProvider>
)
// Should not call getNavDropdownItems again due to memoization
expect(mockGetNavDropdownItems.mock.calls.length).toBe(callCount)
})
})
})