chore: update dependencies and remove unused MarkdownSection test

This commit is contained in:
Haitao Pan 2026-01-30 12:15:12 +08:00
parent 19d6641208
commit aaaf590b7a
3 changed files with 31 additions and 83 deletions

View File

@ -21,6 +21,7 @@
},
"dependencies": {
"@aws-sdk/client-s3": "^3.956.0",
"@floating-ui/dom": "^1.6.0",
"@radix-ui/react-alert-dialog": "^1.1.15",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.2",
@ -67,8 +68,7 @@
"sanitize-html": "^2.13.0",
"swr": "^2.3.0",
"tailwind-merge": "^3.4.0",
"zustand": "^4.5.4",
"@floating-ui/dom": "^1.6.0"
"zustand": "^4.5.4"
},
"devDependencies": {
"@playwright/test": "^1.49.1",
@ -82,6 +82,7 @@
"@types/node": "24.0.3",
"@types/prismjs": "^1.26.3",
"@types/react": "^18.3.26",
"@types/react-dom": "^18.2.0",
"@types/react-grid-layout": "^1.3.5",
"@types/sanitize-html": "^2.16.0",
"autoprefixer": "^10.4.16",
@ -95,12 +96,11 @@
"tsconfig-paths-webpack-plugin": "^4.2.0",
"tsx": "^4.7.1",
"typescript": "^5.4.2",
"vitest": "^4.0.7",
"@types/react-dom": "^18.2.0"
"vitest": "^4.0.7"
},
"resolutions": {
"glob": "10.5.0",
"@opentelemetry/api": "1.4.1"
},
"packageManager": "yarn@4.12.0"
}
}

View File

@ -1,73 +0,0 @@
import { render, screen, waitFor } from '@testing-library/react'
import { afterEach, describe, expect, it, vi } from 'vitest'
import MarkdownSection, { type MarkdownRenderResult } from '@components/MarkdownSection'
describe('MarkdownSection', () => {
afterEach(() => {
vi.restoreAllMocks()
})
it('renders prefetched content and notifies listeners', () => {
const prefetched: MarkdownRenderResult = {
path: 'homepage/intro.md',
html: '<p>Prefetched body</p>',
meta: { title: 'Intro Title', heading: 'h3' },
}
const onMetaChange = vi.fn()
const { container } = render(
<MarkdownSection src="homepage/intro.md" prefetched={prefetched} onMetaChange={onMetaChange} />
)
expect(screen.getByRole('region', { name: 'Intro Title' })).toBeInTheDocument()
expect(screen.getByRole('heading', { level: 3, name: 'Intro Title' })).toBeInTheDocument()
expect(container.querySelector('.prose')).toHaveTextContent('Prefetched body')
expect(onMetaChange).toHaveBeenCalledWith(prefetched.meta)
})
it('fetches markdown content when no prefetched data is provided', async () => {
const response: MarkdownRenderResult = {
path: 'homepage/features.md',
html: '<p>Loaded from network</p>',
meta: { title: 'Loaded Title', heading: 'h4' },
}
const fetchMock = vi.fn().mockResolvedValue({
ok: true,
json: () => Promise.resolve(response),
})
vi.stubGlobal('fetch', fetchMock)
const onMetaChange = vi.fn()
render(
<MarkdownSection src="homepage/features.md" onMetaChange={onMetaChange} />
)
expect(screen.getByText('Loading content…')).toBeInTheDocument()
await waitFor(() => {
expect(screen.getByRole('heading', { level: 4, name: 'Loaded Title' })).toBeInTheDocument()
})
expect(fetchMock).toHaveBeenCalledWith('/api/render-markdown?path=homepage%2Ffeatures.md', expect.any(Object))
expect(onMetaChange).toHaveBeenCalledWith(response.meta)
expect(screen.queryByText('Loading content…')).not.toBeInTheDocument()
})
it('shows the error fallback when the fetch fails', async () => {
const fetchMock = vi.fn().mockResolvedValue({
ok: false,
status: 500,
json: () => Promise.resolve({ error: 'Something went wrong' }),
})
vi.stubGlobal('fetch', fetchMock)
render(<MarkdownSection src="homepage/features.md" />)
await waitFor(() => {
expect(screen.getByText('Failed to load content.')).toBeInTheDocument()
})
expect(screen.queryByText('Loading content…')).not.toBeInTheDocument()
})
})

View File

@ -1447,6 +1447,15 @@ __metadata:
languageName: node
linkType: hard
"@floating-ui/core@npm:^1.7.4":
version: 1.7.4
resolution: "@floating-ui/core@npm:1.7.4"
dependencies:
"@floating-ui/utils": "npm:^0.2.10"
checksum: 10/b750f306a99be879f0bce879108c440d5b0a67303d3d8318e153687f6ed1af27908428e27cc955475253bd902b95452a3434bd4f0cf96e66e5b5d0db1aa8ea3c
languageName: node
linkType: hard
"@floating-ui/dom@npm:^1.0.0, @floating-ui/dom@npm:^1.7.4":
version: 1.7.4
resolution: "@floating-ui/dom@npm:1.7.4"
@ -1457,6 +1466,16 @@ __metadata:
languageName: node
linkType: hard
"@floating-ui/dom@npm:^1.6.0":
version: 1.7.5
resolution: "@floating-ui/dom@npm:1.7.5"
dependencies:
"@floating-ui/core": "npm:^1.7.4"
"@floating-ui/utils": "npm:^0.2.10"
checksum: 10/2764990da82bd5cfe942211480aa82352926326008de93f5f3f19749cc8b171fe05b77526a2652605eadcbeab902c6506f18d60a4c43281f2651802047de100b
languageName: node
linkType: hard
"@floating-ui/react-dom@npm:^2.0.0":
version: 2.1.6
resolution: "@floating-ui/react-dom@npm:2.1.6"
@ -2203,10 +2222,10 @@ __metadata:
languageName: node
linkType: hard
"@opentelemetry/api@npm:^1.0.0, @opentelemetry/api@npm:^1.4.1":
version: 1.9.0
resolution: "@opentelemetry/api@npm:1.9.0"
checksum: 10/a607f0eef971893c4f2ee2a4c2069aade6ec3e84e2a1f5c2aac19f65c5d9eeea41aa72db917c1029faafdd71789a1a040bdc18f40d63690e22ccae5d7070f194
"@opentelemetry/api@npm:1.4.1":
version: 1.4.1
resolution: "@opentelemetry/api@npm:1.4.1"
checksum: 10/8637f66c2f7d94c377c9bb22a0528f1349e02a93c0c829de56e487aa4ae02561462a24bfb11a2be25c82e53af9f7737c1fc5d3533e0eb8b1ebf4928204f66ac6
languageName: node
linkType: hard
@ -4990,7 +5009,7 @@ __metadata:
languageName: node
linkType: hard
"@types/react-dom@npm:^18.0.0":
"@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.0":
version: 18.3.7
resolution: "@types/react-dom@npm:18.3.7"
peerDependencies:
@ -6764,6 +6783,7 @@ __metadata:
resolution: "dashboard@workspace:."
dependencies:
"@aws-sdk/client-s3": "npm:^3.956.0"
"@floating-ui/dom": "npm:^1.6.0"
"@playwright/test": "npm:^1.49.1"
"@radix-ui/react-alert-dialog": "npm:^1.1.15"
"@radix-ui/react-dialog": "npm:^1.1.15"
@ -6791,6 +6811,7 @@ __metadata:
"@types/node": "npm:24.0.3"
"@types/prismjs": "npm:^1.26.3"
"@types/react": "npm:^18.3.26"
"@types/react-dom": "npm:^18.2.0"
"@types/react-grid-layout": "npm:^1.3.5"
"@types/sanitize-html": "npm:^2.16.0"
"@vercel/analytics": "npm:^1.6.1"