ファイル
btrc-hub/frontend/src/pages/posts/PostHistoryPage.test.tsx
T
2026-09-24 08:46:22 +09:00

64 行
1.6 KiB
TypeScript

import { screen, waitFor } from '@testing-library/react'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import PostHistoryPage from '@/pages/posts/PostHistoryPage'
import { buildTag } from '@/test/factories'
import { renderWithProviders } from '@/test/render'
const postsApi = vi.hoisted (() => ({
fetchPostChanges: vi.fn (),
updatePost: vi.fn (),
}))
const tagsApi = vi.hoisted (() => ({
fetchTag: vi.fn (),
fetchExternalTag: vi.fn (),
}))
vi.mock ('@/lib/posts', () => postsApi)
vi.mock ('@/lib/tags', () => tagsApi)
describe ('PostHistoryPage', () => {
beforeEach (() => {
vi.clearAllMocks ()
postsApi.fetchPostChanges.mockResolvedValue ({
versions: [],
count: 0,
})
})
it ('shows the external tag name when filtering by external_tag', async () => {
const external = buildTag ({
id: 7,
name: 'nico:external_history',
category: 'nico',
})
tagsApi.fetchExternalTag.mockResolvedValue (external)
renderWithProviders (
<PostHistoryPage/>,
{ route: '/posts/changes?external_tag=7' },
)
await waitFor (() => {
expect (postsApi.fetchPostChanges).toHaveBeenCalledWith ({
externalTag: '7',
page: 1,
limit: 20,
})
})
expect (tagsApi.fetchExternalTag).toHaveBeenCalledWith ('7')
expect (tagsApi.fetchTag).not.toHaveBeenCalled ()
expect (
await screen.findByRole ('heading', {
level: 1,
name: '耕作履歴(nico:external_history)',
}),
).toBeInTheDocument ()
})
})