Hub-Inhalte: Claims korrigiert + Widerrufs-UI zurueckgebaut (B2B-only, E2)

- Registrierungs-Schritt ehrlich beschrieben (E-Mail/Google, Freischaltung
  nach E-Mail-Bestaetigung statt 'direkt freigeschaltet'; Magic-Link ist
  nur Anmeldeweg)
- Newsroom-Karte: 'getrennte Berechtigungen'/'mehrere Redakteure' durch
  belegbare Aussagen ersetzt (keine Team-Verwaltung im Panel)
- Kuendigungs-FAQ nach E5 (Jahreszahlweise 12 Monate, danach monatlich)
  + Link auf die Selfservice-Kuendigungsseite
- B2B-Erkennbarkeits-Satz im Tarife-Intro (AGB v0.6 / T14)
- Wording T16: 'Inhaltsprüfung' statt Redakteurs-Versprechen; 'kein
  automatisierter Durchlauf'-Behauptung entfernt
- Widerrufs-Button + Modal-Includes entfernt (Entscheidung E2 B2B-only,
  T3neu: Kuendigungsbutton bleibt freiwillig); Backend/Route bleibt
  schlafend erhalten, reaktivierbar bei B2C-Oeffnung
- Hub-FAQ/Footer verlinken die API-Seite statt der toten docs-Route

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-03 15:35:03 +00:00
parent f46795ba77
commit 9c9f7f7144
8 changed files with 47 additions and 319 deletions

View file

@ -11,9 +11,10 @@ test('static pages on the hub domain render the hub shell', function (string $pa
// Hub-Kopf: Utility-Bar + Hub-Header statt Spoke-Gerüst.
->toContain('Publisher-Hub für')
->toContain('Publisher · Hub')
// Hub-Footer inkl. gesetzlichem Widerrufsbutton + Modals.
->toContain('Vertrag widerrufen')
->toContain('open-withdrawal-modal')
// Hub-Footer inkl. Selfservice-Kündigungsbutton + Kontakt-Modal.
// Der Widerrufs-Button entfällt (Entscheidung E2: B2B-only).
->toContain('Verträge hier kündigen')
->not->toContain('open-withdrawal-modal')
->toContain('open-contact-modal')
// Kein Spoke-Portal-Branding im Gerüst.
->not->toContain('Pressemitteilungen · DACH');

View file

@ -6,18 +6,17 @@ use App\Models\WithdrawalRequest;
use Illuminate\Support\Facades\Mail;
use Tests\TestCase;
test('the hub shows the legally required withdrawal button and two-step modal', function () {
test('the withdrawal ui is retired on the hub (B2B-only, decision E2)', function () {
/** @var TestCase $this */
// Der Widerrufs-Button/-Modal entfällt seit der B2B-only-Entscheidung
// (E2, 03.07.2026); der POST-Endpunkt bleibt schlafend erhalten und ist
// bei einer B2C-Öffnung reaktivierbar (samt archivierter Belehrung).
$response = $this->get('https://pressekonto.test/')->assertSuccessful();
$content = $response->getContent();
expect($content)
->toContain('Vertrag widerrufen')
->toContain('open-withdrawal-modal')
->toContain('action="'.route('widerruf.store').'"')
->toContain('Jetzt widerrufen')
// Kein Widerrufsgrund-Feld — darf gesetzlich nicht verlangt werden.
->not->toContain('name="reason"');
->not->toContain('Vertrag widerrufen')
->not->toContain('open-withdrawal-modal');
});
test('a withdrawal is persisted and both mails are sent immediately', function () {