UNPKG

nimiq-vitepress-theme

Version:

Nimiq UI theme for VitePress

61 lines (60 loc) 2.08 kB
import { useData } from "vitepress"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { useSecondarySidebar } from "../useSecondarySidebar.mjs"; vi.mock("vitepress", () => ({ useData: vi.fn(), useRoute: vi.fn(() => ({})) })); vi.mock("@vueuse/core", () => ({ createSharedComposable: (fn) => fn, useScroll: vi.fn(() => ({ y: { value: 0 } })), useThrottleFn: vi.fn((fn) => fn) })); vi.mock("vue", () => ({ computed: vi.fn((fn) => ({ value: fn() })), nextTick: vi.fn(), onMounted: vi.fn((fn) => fn()), ref: vi.fn((val) => ({ value: val })), watch: vi.fn() })); describe("useSecondarySidebar", () => { beforeEach(() => { vi.clearAllMocks(); }); describe("layout behavior", () => { it("should hide sidebar for home layout", () => { vi.mocked(useData).mockReturnValue({ frontmatter: { value: { layout: "home" } } }); const { showSecondarySidebar, showOutline, showWidget } = useSecondarySidebar(); expect(showSecondarySidebar.value).toBe(false); expect(showOutline.value).toBe(false); expect(showWidget.value).toBe(false); }); it("should show sidebar for docs layout", () => { vi.mocked(useData).mockReturnValue({ frontmatter: { value: { layout: "docs" } } }); const { showSecondarySidebar, showOutline, showWidget } = useSecondarySidebar(); expect(showSecondarySidebar.value).toBe(true); expect(showOutline.value).toBe(false); expect(showWidget.value).toBe(true); }); it("should respect explicit frontmatter settings regardless of layout", () => { vi.mocked(useData).mockReturnValue({ frontmatter: { value: { layout: "home", secondarySidebar: true, outline: true, widget: true } } }); const { showSecondarySidebar, showOutline, showWidget } = useSecondarySidebar(); expect(showSecondarySidebar.value).toBe(true); expect(showOutline.value).toBe(true); expect(showWidget.value).toBe(true); }); }); });