import { describe, expect, it, vi } from 'vitest' import { renderToStaticMarkup } from 'react-dom/server' import type { PostStatus } from '~/domain/types' vi.mock('next-intl', () => ({ useTranslations: () => (key: string) => key, })) vi.mock('~/lib/entry-actions', () => ({ archiveEntry: vi.fn(), publishEntry: vi.fn(), resumeEntry: vi.fn(), scheduleEntry: vi.fn(), })) const { EntryStatusControl } = await import('~/components/admin/EntryStatusControl') function render(status: PostStatus): string { return renderToStaticMarkup() } describe('EntryStatusControl', () => { it('stellt jedem Status seine erlaubten Ziele zur Wahl', () => { const draft = render('draft') expect(draft).toContain('move.scheduled') expect(draft).toContain('move.published') expect(draft).toContain('move.archived') expect(draft).not.toContain('move.draft') }) it('lässt Veröffentlichtes nur zurückziehen', () => { const published = render('published') expect(published).toContain('move.archived') expect(published).not.toContain('move.published') expect(published).not.toContain('move.scheduled') }) it('führt Zurückgezogenes zurück in den Entwurf', () => { const archived = render('archived') expect(archived).toContain('move.draft') expect(archived).not.toContain('move.archived') }) it('zeigt den Status immer an', () => { expect(render('draft')).toContain('status.draft') expect(render('published')).toContain('status.published') }) })