このコミットが含まれているのは:
@@ -0,0 +1,54 @@
|
||||
import { screen } from '@testing-library/react'
|
||||
import { Route, Routes } from 'react-router-dom'
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
|
||||
import WikiDetailPage from '@/pages/wiki/WikiDetailPage'
|
||||
import { buildTag, buildWikiPage } from '@/test/factories'
|
||||
import { renderWithProviders } from '@/test/render'
|
||||
|
||||
const wikiApi = vi.hoisted (() => ({
|
||||
fetchWikiPage: vi.fn (),
|
||||
fetchWikiPageByTitle: vi.fn (),
|
||||
}))
|
||||
|
||||
const tagsApi = vi.hoisted (() => ({
|
||||
fetchTagByName: vi.fn (),
|
||||
}))
|
||||
|
||||
const postsApi = vi.hoisted (() => ({
|
||||
fetchPosts: vi.fn (),
|
||||
}))
|
||||
|
||||
vi.mock ('@/lib/wiki', () => wikiApi)
|
||||
vi.mock ('@/lib/tags', () => tagsApi)
|
||||
vi.mock ('@/lib/posts', () => postsApi)
|
||||
|
||||
describe ('WikiDetailPage', () => {
|
||||
it ('renders deprecated state outside the wiki title link', async () => {
|
||||
wikiApi.fetchWikiPageByTitle.mockResolvedValueOnce (buildWikiPage ({
|
||||
title: '旧タグ',
|
||||
deprecatedAt: '2026-06-01T00:00:00.000Z',
|
||||
}))
|
||||
tagsApi.fetchTagByName.mockResolvedValueOnce (buildTag ({
|
||||
name: '旧タグ',
|
||||
deprecatedAt: '2026-06-01T00:00:00.000Z',
|
||||
}))
|
||||
postsApi.fetchPosts.mockResolvedValueOnce ({ posts: [], count: 0 })
|
||||
|
||||
renderWithProviders (
|
||||
<Routes>
|
||||
<Route path="/wiki/:title" element={<WikiDetailPage/>}/>
|
||||
</Routes>,
|
||||
{ route: '/wiki/%E6%97%A7%E3%82%BF%E3%82%B0' },
|
||||
)
|
||||
|
||||
const marker = await screen.findByText ('(廃止)')
|
||||
const heading = marker.closest ('h1')
|
||||
const link = screen.getByRole ('link', { name: '旧タグ' })
|
||||
|
||||
expect (heading).not.toBeNull ()
|
||||
expect (heading!).toHaveTextContent ('旧タグ(廃止)')
|
||||
expect (link).toBeInTheDocument ()
|
||||
expect (marker.closest ('a')).toBeNull ()
|
||||
})
|
||||
})
|
||||
@@ -16,6 +16,7 @@ describe ('WikiDiffPage', () => {
|
||||
api.apiGet.mockResolvedValueOnce ({
|
||||
wikiPageId: 3,
|
||||
title: '差分対象',
|
||||
deprecatedAt: null,
|
||||
olderRevisionId: 1,
|
||||
newerRevisionId: 2,
|
||||
diff: [
|
||||
@@ -43,4 +44,26 @@ describe ('WikiDiffPage', () => {
|
||||
expect (screen.getByText ('added line')).toBeInTheDocument ()
|
||||
expect (screen.getByText ('removed line')).toBeInTheDocument ()
|
||||
})
|
||||
|
||||
it ('appends deprecated state to the wiki title', async () => {
|
||||
api.apiGet.mockResolvedValueOnce ({
|
||||
wikiPageId: 3,
|
||||
title: '廃止 Wiki',
|
||||
deprecatedAt: '2026-06-01T00:00:00.000Z',
|
||||
olderRevisionId: 1,
|
||||
newerRevisionId: 2,
|
||||
diff: [],
|
||||
})
|
||||
|
||||
renderWithProviders (
|
||||
<Routes>
|
||||
<Route path="/wiki/:id/diff" element={<WikiDiffPage/>}/>
|
||||
</Routes>,
|
||||
{ route: '/wiki/3/diff?from=1&to=2' },
|
||||
)
|
||||
|
||||
expect (await screen.findByRole ('heading', {
|
||||
name: '廃止 Wiki(廃止)',
|
||||
})).toBeInTheDocument ()
|
||||
})
|
||||
})
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
import { screen } from '@testing-library/react'
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
|
||||
import WikiHistoryPage from '@/pages/wiki/WikiHistoryPage'
|
||||
import { renderWithProviders } from '@/test/render'
|
||||
|
||||
const api = vi.hoisted (() => ({
|
||||
apiGet: vi.fn (),
|
||||
}))
|
||||
|
||||
vi.mock ('@/lib/api', () => api)
|
||||
|
||||
describe ('WikiHistoryPage', () => {
|
||||
it ('renders deprecated state outside the wiki title link', async () => {
|
||||
api.apiGet.mockResolvedValueOnce ([{
|
||||
revisionId: 2,
|
||||
pred: 1,
|
||||
succ: null,
|
||||
wikiPage: {
|
||||
id: 3,
|
||||
title: '旧タグ',
|
||||
deprecatedAt: '2026-06-01T00:00:00.000Z',
|
||||
},
|
||||
user: { id: 4, name: 'tester' },
|
||||
kind: 'content',
|
||||
message: 'updated',
|
||||
timestamp: '2026-06-02T00:00:00.000Z',
|
||||
}])
|
||||
|
||||
renderWithProviders (<WikiHistoryPage/>)
|
||||
|
||||
const link = await screen.findByRole ('link', { name: '旧タグ' })
|
||||
const marker = screen.getByText ('(廃止)')
|
||||
|
||||
expect (link).toHaveAttribute ('href', '/wiki/%E6%97%A7%E3%82%BF%E3%82%B0?version=2')
|
||||
expect (marker.closest ('a')).toBeNull ()
|
||||
})
|
||||
})
|
||||
@@ -53,6 +53,10 @@ describe ('WikiSearchPage', () => {
|
||||
|
||||
renderWithProviders (<WikiSearchPage/>)
|
||||
|
||||
expect (await screen.findByRole ('link', { name: '旧タグ(廃止)' })).toBeInTheDocument ()
|
||||
const link = await screen.findByRole ('link', { name: '旧タグ' })
|
||||
const marker = screen.getByText ('(廃止)')
|
||||
|
||||
expect (link).toBeInTheDocument ()
|
||||
expect (marker.closest ('a')).toBeNull ()
|
||||
})
|
||||
})
|
||||
|
||||
新しい課題から参照
ユーザをブロックする