Datenschutzerklaerung v0.3 eingebaut, Cookie-Seite zurueckgebaut

- Datenschutz: vollstaendige v0.3 aus docs/legal, host-aware Bausteine
  (Hub: Kundenkonto/Login-Magic-Link/Stripe; Spokes: Medienprivileg,
  Newsroom, Aenderungslink-Variante); Systemwerte aufgeloest (Magic-Link
  15 Min. aus MagicLinkGenerator, Logs 14 Tage, Stripe Payments Europe);
  ersetzt den Platzhalter samt falscher Google-Analytics-Behauptung
- Cookie-Seite raus (Cookies stehen in Abschnitt 4 der Datenschutz-
  erklaerung, kein Banner noetig): Route -> 301 auf /datenschutz,
  Legacy-Alias cookies.html -> datenschutz, Footer + Sitemap bereinigt

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-03 16:17:59 +00:00
parent e2758ffdd3
commit 6438444a80
10 changed files with 563 additions and 200 deletions

View file

@ -18,7 +18,7 @@ test('static pages on the hub domain render the hub shell', function (string $pa
->toContain('open-contact-modal')
// Kein Spoke-Portal-Branding im Gerüst.
->not->toContain('Pressemitteilungen · DACH');
})->with(['impressum', 'agb', 'datenschutz', 'cookies', 'api']);
})->with(['impressum', 'agb', 'datenschutz', 'richtlinien', 'melden', 'api']);
test('the hub static page breadcrumb links back to the hub landing', function () {
/** @var TestCase $this */

View file

@ -2,15 +2,19 @@
use Tests\TestCase;
test('header and footer link to faq, hilfe and cookies and drop dead links', function () {
test('header and footer link to faq, hilfe and legal pages and drop dead links', function () {
/** @var TestCase $this */
$response = $this->get('https://businessportal24.test/de');
$response->assertSuccessful()
// Neu verlinkt (FAQ im Header + Footer, Hilfe + Cookies im Footer).
// Neu verlinkt (FAQ im Header + Footer, Hilfe + Rechtsseiten im Footer).
// Die Cookie-Seite wurde zurückgebaut (Cookies stehen in der
// Datenschutzerklärung, Abschnitt 4).
->assertSee('/de/faq', false)
->assertSee('/de/hilfe', false)
->assertSee('/de/cookies', false)
->assertSee('/de/richtlinien', false)
->assertSee('/de/melden', false)
->assertDontSee('/de/cookies', false)
// „Anmelden" führt jetzt in den Hub statt auf einen toten Anker.
->assertSee('/login', false)
->assertDontSee('href="#newsletter"', false)

View file

@ -106,7 +106,10 @@ test('legal pages are reachable on the hub domain', function () {
$this->get('https://pressekonto.test/de/impressum')->assertSuccessful();
$this->get('https://pressekonto.test/de/datenschutz')->assertSuccessful();
$this->get('https://pressekonto.test/de/agb')->assertSuccessful();
$this->get('https://pressekonto.test/de/cookies')->assertSuccessful();
// Cookie-Seite zurückgebaut — Inhalte stehen in der Datenschutzerklärung.
$this->get('https://pressekonto.test/de/cookies')
->assertStatus(301)
->assertRedirect('https://pressekonto.test/de/datenschutz');
});
test('pressekonto hub homepage uses the brand-mark splitting without TLDs', function () {

View file

@ -6,7 +6,6 @@ dataset('static pages', [
'impressum' => ['de/impressum', 'Impressum'],
'datenschutz' => ['de/datenschutz', 'Datenschutzerklärung'],
'agb' => ['de/agb', 'Allgemeine Geschäftsbedingungen'],
'cookies' => ['de/cookies', 'Cookie-Richtlinien'],
'faq' => ['de/faq', 'Häufig gestellte Fragen'],
'hilfe' => ['de/hilfe', 'Hilfe-Center'],
'api' => ['de/api', 'API-Dokumentation'],
@ -91,6 +90,28 @@ test('the reporting page separates free legal paths from the paid takedown servi
->assertSeeText('Ausübung gesetzlicher Rechte');
});
test('the privacy policy renders the real v03 content with host-specific blocks', function () {
/** @var TestCase $this */
// Spoke: Portal-Bausteine (Medienprivileg, Änderungslinks), kein Stripe-Block.
$this->get('https://presseecho.test/de/datenschutz')
->assertSuccessful()
->assertSeeText('adametz.media')
->assertSeeText('Hetzner Online GmbH')
->assertSeeText('Medienprivileg')
->assertSeeText('Änderungslinks für Pressekontakte')
->assertDontSeeText('Zahlungsabwicklung mit Stripe')
// Alter Platzhalter (Google Analytics gibt es nicht) ist weg.
->assertDontSeeText('Google Analytics');
// Hub: Kundenkonto-/Stripe-Bausteine, keine Portal-Bausteine.
$this->get('https://pressekonto.test/de/datenschutz')
->assertSuccessful()
->assertSeeText('Kundenkonto und Registrierung auf dem Hub')
->assertSeeText('Zahlungsabwicklung mit Stripe')
->assertSeeText('gewerblichen oder selbständigen beruflichen Tätigkeit')
->assertDontSeeText('Medienprivileg');
});
test('the help center shows quick links and topics', function () {
/** @var TestCase $this */
$this->get('https://businessportal24.test/de/hilfe')