presseportale/tests/Feature/Web/StaticPagesTest.php
Kevin Adametz 4f07104239 Zentrale Rechts-E-Mail info@pressekonto.com fuer alle Rechtstexte
User-Entscheidung 06.07.: info@pressekonto.com ist die Haupt-E-Mail fuer
alle rechtlichen Anliegen. Zentral in config/legal.php (LEGAL_CONTACT_EMAIL),
verwendet von Impressum, AGB, Datenschutz, /melden und /richtlinien auf
allen drei Domains. Support-Kontakt bleibt je Brand (CONTACT_EMAIL_*),
REPORT_EMAIL_* ist nur noch optionales separates DSA-Postfach. Nebenbei
den verunglueckten Enterprise-Hinweis auf der Buchungsseite repariert
(E-Mail war ohne Trennung angeklebt).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 08:32:59 +00:00

126 lines
5.5 KiB
PHP

<?php
use Tests\TestCase;
dataset('static pages', [
'impressum' => ['de/impressum', 'Impressum'],
'datenschutz' => ['de/datenschutz', 'Datenschutzerklärung'],
'agb' => ['de/agb', 'Allgemeine Geschäftsbedingungen'],
'faq' => ['de/faq', 'Häufig gestellte Fragen'],
'hilfe' => ['de/hilfe', 'Hilfe-Center'],
'api' => ['de/api', 'API-Dokumentation'],
'richtlinien' => ['de/richtlinien', 'Veröffentlichungsrichtlinien'],
'melden' => ['de/melden', 'Inhalte melden oder Änderungen beantragen'],
]);
test('static pages render in the editorial design', function (string $path, string $heading) {
/** @var TestCase $this */
$response = $this->get("https://businessportal24.test/{$path}");
$response->assertSuccessful()
->assertSeeText($heading)
// Editorial-Shell (Token aus den neuen Komponenten) statt altem Theme.
->assertSee('bg-bg', false)
// Altes Theme darf nicht mehr gerendert werden.
->assertDontSee('gradient-hero');
})->with('static pages');
test('the faq page lists questions and links to support', function () {
/** @var TestCase $this */
$this->get('https://businessportal24.test/de/faq')
->assertSuccessful()
->assertSeeText('Wie veröffentliche ich meine erste Pressemitteilung?')
->assertSeeText('Frage nicht gefunden?')
// Kontakt läuft nach dem Rückbau der Kontakt-Seite über das
// Support-Postfach und die Kündigung über die eigene Seite.
->assertSee('mailto:', false)
->assertSee(route('kuendigung', ['edition' => 'de']), false);
});
test('the retired contact and about pages redirect to the edition home', function (string $path) {
/** @var TestCase $this */
$this->get('https://businessportal24.test/de/'.$path)
->assertStatus(301)
->assertRedirect('https://businessportal24.test/de');
})->with(['kontakt', 'ueber-uns']);
test('the imprint shows the real provider data instead of placeholders', function () {
/** @var TestCase $this */
$this->get('https://businessportal24.test/de/impressum')
->assertSuccessful()
->assertSeeText('adametz.media')
->assertSeeText('Kevin Adametz')
->assertSeeText('33739 Bielefeld')
->assertSeeText('DE298729654')
// Zentrale Rechts-E-Mail (config/legal.php) auf allen Domains.
->assertSeeText('info@pressekonto.com')
->assertDontSeeText('info@businessportal24.com')
// DDG statt TMG; keine erfundene GmbH/Musterstraße mehr.
->assertSeeText('§ 5 DDG')
->assertDontSeeText('Business Portal GmbH')
->assertDontSeeText('Musterstraße');
});
test('the terms render the b2b version with cancellation and archive rules', function () {
/** @var TestCase $this */
$this->get('https://pressekonto.test/de/agb')
->assertSuccessful()
->assertSeeText('Kein Widerrufsrecht (B2B)')
->assertSeeText('richtet sich ausschließlich an Unternehmer')
->assertSeeText('Depublikation, Änderungen, Meldeverfahren')
// Alte Platzhalter-AGB (30-Tage-Frist, Business Portal GmbH) sind weg.
->assertDontSeeText('Frist von 30')
->assertDontSeeText('Business Portal GmbH');
});
test('the guidelines list the rejection categories with anchors', function () {
/** @var TestCase $this */
$this->get('https://presseecho.test/de/richtlinien')
->assertSuccessful()
->assertSeeText('So funktioniert die Prüfung')
->assertSeeText('Kein Pressecharakter / Spam')
->assertSee('id="K1"', false)
->assertSee('id="K6"', false);
});
test('the reporting page separates free legal paths from the paid takedown service', function () {
/** @var TestCase $this */
$this->get('https://businessportal24.test/de/melden')
->assertSuccessful()
->assertSeeText('Rechtswidrige Inhalte oder Rechteverletzungen melden')
->assertSeeText('Eigene personenbezogene Daten entfernen lassen')
->assertSeeText('Freiwillige Entfernung rechtmäßiger Inhalte')
->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('info@pressekonto.com')
->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')
->assertSuccessful()
->assertSeeText('Hilfe-Themen')
->assertSee(route('faq'), false)
->assertSee(route('veroeffentlichen'), false);
});