chore: update dependencies and remove unused MarkdownSection test
This commit is contained in:
parent
19d6641208
commit
aaaf590b7a
10
package.json
10
package.json
@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@ -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()
|
||||
})
|
||||
})
|
||||
31
yarn.lock
31
yarn.lock
@ -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"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user