Files
GerbilManager/gerbil-manager-web/src/api/__tests__/pages.test.ts
Gulum c20e6b5426 WEB-0b: CMS-Verwaltung der öffentlichen Webseite (Hand-Editier-UI)
Neuer Bereich /webseite im Manager (Nav: "Mehr"-Blatt) zur Pflege der 6
Webseiten-Seiten gegen Pams WEB-0-Backend (LAN-only, keine Auth):

- Übersicht: alle Seiten mit Status (Entwurf/Veröffentlicht).
- Seiten-Editor: Titel + SEO-Beschreibung + Status speichern.
- Geordneter Block-Editor: Blöcke hinzufügen (Überschrift, Textabschnitt/
  Markdown, Bild, Galerie, Kontaktangaben), bearbeiten, nach oben/unten
  verschieben (PUT .../blocks/order), löschen. Die dynamische AbgabetiereList
  ist nicht manuell anlegbar; nur ihr Einleitungstext ist editierbar.

Vertraege: GET /pages, GET /pages/{slug}, PUT /pages/{id},
POST /pages/{pageId}/blocks, PUT /blocks/{id}, DELETE /blocks/{id},
PUT /pages/{pageId}/blocks/order. Enums als Strings (Draft/Published, Heading...).

Deutsch via de.ts (LF beibehalten), mobile-first. e2e-Mock um die CMS-Routen
erweitert (zustandsbehaftet) + Smoke (Block anlegen/bearbeiten/verschieben,
bleibt erhalten). Gate gruen: build, eslint, vitest 69, e2e 68.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 11:23:34 +02:00

25 lines
1.0 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { ADDABLE_BLOCK_TYPES, defaultBlockData, type BlockType } from '../pages'
describe('defaultBlockData', () => {
it('liefert sinnvolle Startwerte je Block-Typ', () => {
expect(defaultBlockData('Heading')).toEqual({ text: '', level: 2 })
expect(defaultBlockData('RichText')).toEqual({ markdown: '' })
expect(defaultBlockData('Image')).toEqual({ url: '', alt: '' })
expect(defaultBlockData('Gallery')).toEqual({ images: [] })
expect(defaultBlockData('ContactInfo')).toEqual({ name: '', email: '', phone: '', address: '' })
expect(defaultBlockData('AbgabetiereList')).toEqual({ mode: 'auto', intro: '' })
})
it('deckt jeden addbaren Typ ab', () => {
for (const type of ADDABLE_BLOCK_TYPES) {
expect(defaultBlockData(type)).toBeTypeOf('object')
}
})
it('bietet die dynamische AbgabetiereList NICHT zum manuellen Anlegen an', () => {
const addable: readonly BlockType[] = ADDABLE_BLOCK_TYPES
expect(addable).not.toContain('AbgabetiereList')
})
})