import { act, fireEvent, screen, waitFor, within } from '@testing-library/react' import { Route, Routes, useLocation } from 'react-router-dom' import { beforeEach, describe, expect, it, vi } from 'vitest' import { apiPost } from '@/lib/api' import { getHelpTitleIndex } from '@/lib/help' import { tagsKeys, wikiKeys } from '@/lib/queryKeys' import WikiDetailPage from '@/pages/wiki/WikiDetailPage' import WikiNewPage from '@/pages/wiki/WikiNewPage' import { buildTag, buildUser, buildWikiPage } from '@/test/factories' import { renderWithProviders } from '@/test/render' const wikiApi = vi.hoisted (() => ({ fetchWikiPage: vi.fn (), fetchWikiPageByTitle: vi.fn (), fetchWikiPages: vi.fn (), })) const tagsApi = vi.hoisted (() => ({ fetchTagByName: vi.fn (), })) const postsApi = vi.hoisted (() => ({ fetchPosts: vi.fn (), })) vi.mock ('@/lib/wiki', () => ({ ...wikiApi, fetchWikiAutolinkCandidates: async () => [], fetchWikiPageByReference: (reference: string, ...args: unknown[]) => /^\d+$/.test (reference) ? wikiApi.fetchWikiPage (reference, ...args) : wikiApi.fetchWikiPageByTitle (reference, ...args) })) vi.mock ('@/lib/tags', () => tagsApi) vi.mock ('@/lib/posts', () => postsApi) vi.mock ('@/lib/help', () => ({ getHelpTitleIndex: vi.fn () })) vi.mock ('@/lib/api', async importOriginal => ({ ...await importOriginal (), apiPost: vi.fn () })) vi.mock ('@/components/ui/use-toast', () => ({ toast: vi.fn () })) vi.mock ('react-markdown-editor-lite', () => ({ default: ({ value, onChange }: { value: string onChange: (event: { text: string }) => void }) => (