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>
25 lines
1.0 KiB
TypeScript
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')
|
|
})
|
|
})
|