- app/(mobile)/m/products/[id]/solo/page.tsx — hergebruikt SoloBoard 1:1 met desktop. 3-koloms-kanban blijft, NoActiveSprint-fallback ongewijzigd - T-332 verify-only: TaskDetailDialog regel 383 gebruikt entityDialogContentClasses → mobile-fullscreen erft automatisch uit ST-1133 - Tests: regressie-vangnet op SoloBoard-hergebruik, requireSession, NoActiveSprint, en op TaskDetailDialog-className-wiring (geen override) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
// ST-1138: regressie-vangnet voor mobile solo-page (server component).
|
|
import { describe, it, expect } from 'vitest'
|
|
import { readFileSync } from 'node:fs'
|
|
import { resolve } from 'node:path'
|
|
|
|
const PAGE = resolve(process.cwd(), 'app/(mobile)/m/products/[id]/solo/page.tsx')
|
|
const TASK_DETAIL = resolve(process.cwd(), 'components/solo/task-detail-dialog.tsx')
|
|
|
|
describe('mobile solo page (ST-1138)', () => {
|
|
const src = readFileSync(PAGE, 'utf-8')
|
|
|
|
it('hergebruikt SoloBoard zonder content-aanpassingen', () => {
|
|
expect(src).toContain('SoloBoard')
|
|
expect(src).toContain("from '@/components/solo/solo-board'")
|
|
})
|
|
|
|
it('auth via gedeelde requireSession()', () => {
|
|
expect(src).toContain("from '@/lib/auth-guard'")
|
|
expect(src).toContain('requireSession()')
|
|
})
|
|
|
|
it('geeft NoActiveSprint terug als geen actieve sprint (zelfde gedrag als desktop)', () => {
|
|
expect(src).toContain('NoActiveSprint')
|
|
})
|
|
})
|
|
|
|
describe('TaskDetailDialog erft mobile-fullscreen (ST-1138 T-332 verify-only)', () => {
|
|
// Beslissing A: TaskDetailDialog gebruikt entityDialogContentClasses; mobile-classes
|
|
// komen automatisch door uit T-317. Dit test bewijst de wiring blijft staan.
|
|
const src = readFileSync(TASK_DETAIL, 'utf-8')
|
|
|
|
it('rendert DialogContent met entityDialogContentClasses (geen eigen className-override)', () => {
|
|
expect(src).toContain('className={entityDialogContentClasses}')
|
|
})
|
|
})
|