import { beforeEach, describe, expect, it, vi } from 'vitest' import { fetchWikiPage, fetchWikiPageByTitle, fetchWikiPages } from '@/lib/wiki' const api = vi.hoisted (() => ({ apiGet: vi.fn (), })) vi.mock ('@/lib/api', () => api) describe ('wiki API functions', () => { beforeEach (() => { vi.clearAllMocks () }) it ('fetches wiki index and show pages with expected parameters', async () => { api.apiGet.mockResolvedValueOnce ([]) api.apiGet.mockResolvedValueOnce ({ id: 1 }) await fetchWikiPages ({ title: '虹' }) await fetchWikiPage ('1', { version: '3' }) expect (api.apiGet).toHaveBeenNthCalledWith ( 1, '/wiki', { params: { title: '虹' } }, ) expect (api.apiGet).toHaveBeenNthCalledWith ( 2, '/wiki/1', { params: { version: '3' } }, ) }) it ('encodes title path segments and returns null on misses', async () => { api.apiGet.mockResolvedValueOnce ({ id: 2 }) api.apiGet.mockRejectedValueOnce (new Error ('missing')) await fetchWikiPageByTitle ('a/b c', { version: undefined }) await expect (fetchWikiPageByTitle ('missing', {})).resolves.toBeNull () expect (api.apiGet).toHaveBeenNthCalledWith ( 1, '/wiki/title/a%2Fb%20c', { params: { version: undefined } }, ) }) })