R3.2: Kontakt-/Ueber-uns-Routen zurueckgebaut, Spoke-Footer bereinigt

- GET kontakt/ueber-uns -> 301 auf die Ausgaben-Startseite;
  kontakt.store-POST bleibt fuer das Hub-Kontakt-Modal
- Legacy-Aliases (contact/kontakt/ueber-uns) buendeln auf die Startseite
- Spoke-Footer: Kontakt als mailto (Betreiber-Fallback bis R2.1),
  Ueber-uns-Link raus, Selfservice-Kuendigungslink ergaenzt
- Sitemap-Konstanten bereinigt, Tests angepasst

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-03 15:36:13 +00:00
parent 73fc3827c8
commit 0645d1d855
6 changed files with 55 additions and 25 deletions

View file

@ -4,9 +4,11 @@ use App\Mail\ContactRequestSubmitted;
use Illuminate\Support\Facades\Mail;
use Tests\TestCase;
test('the contact page renders the form', function () {
test('the hub landing renders the contact modal form', function () {
/** @var TestCase $this */
$this->get('https://businessportal24.test/de/kontakt')
// Die frühere Kontakt-Seite wurde zurückgebaut; das Formular lebt im
// Kontakt-Modal des Hubs und postet weiter auf kontakt.store.
$this->get('https://pressekonto.test/')
->assertSuccessful()
->assertSee('name="name"', false)
->assertSee('name="email"', false)
@ -19,13 +21,13 @@ test('a valid contact request sends a mail to the configured recipient', functio
Mail::fake();
config()->set('domains.domains.businessportal24.brand.contact_email', 'redaktion@businessportal24.de');
$this->from('https://businessportal24.test/de/kontakt')
$this->from('https://businessportal24.test/de')
->post('https://businessportal24.test/de/kontakt', [
'name' => 'Paula Presse',
'email' => 'paula@example.test',
'message' => 'Ich habe eine Frage zu Ihrer Plattform und bitte um Rückruf.',
])
->assertRedirect('https://businessportal24.test/de/kontakt')
->assertRedirect('https://businessportal24.test/de')
->assertSessionHas('contact-status');
Mail::assertSent(ContactRequestSubmitted::class, function (ContactRequestSubmitted $mail) {

View file

@ -19,12 +19,24 @@ test('legacy static slugs of the old site redirect to the new german paths', fun
})->with([
'pricelist -> preise' => ['pricelist.html', 'preise'],
'service -> veroeffentlichen' => ['service.html', 'veroeffentlichen'],
'contact -> kontakt' => ['contact.html', 'kontakt'],
'imprint -> impressum' => ['imprint.html', 'impressum'],
'terms -> agb' => ['terms.html', 'agb'],
'privacypolicy -> datenschutz' => ['privacypolicy.html', 'datenschutz'],
]);
test('retired static pages redirect to the edition home', function (string $legacy) {
/** @var TestCase $this */
// kontakt/ueber-uns wurden zurückgebaut (Platzhalter-Inhalte); die
// Alt-Slugs landen wie team/partner/karriere auf der Startseite.
$this->get('https://businessportal24.test/de/'.$legacy)
->assertStatus(301)
->assertRedirect('https://businessportal24.test/de');
})->with([
'contact' => ['contact.html'],
'kontakt' => ['kontakt.html'],
'ueber-uns' => ['ueber-uns.html'],
]);
test('legacy account urls redirect to the publisher hub', function (string $legacy, string $hubPath) {
/** @var TestCase $this */
$hubUrl = rtrim((string) config('domains.domain_portal_url'), '/');
@ -104,9 +116,9 @@ test('dropped language/region variants redirect to the default edition', functio
test('legacy aliases also work without an edition prefix', function () {
/** @var TestCase $this */
$this->get('https://businessportal24.test/contact.html')
$this->get('https://businessportal24.test/terms.html')
->assertStatus(301)
->assertRedirect('https://businessportal24.test/de/kontakt');
->assertRedirect('https://businessportal24.test/de/agb');
$this->get('https://businessportal24.test/imprint.html')
->assertStatus(301)

View file

@ -9,9 +9,7 @@ dataset('static pages', [
'cookies' => ['de/cookies', 'Cookie-Richtlinien'],
'faq' => ['de/faq', 'Häufig gestellte Fragen'],
'hilfe' => ['de/hilfe', 'Hilfe-Center'],
'kontakt' => ['de/kontakt', 'Kontakt'],
'ueber-uns' => ['de/ueber-uns', 'Über uns'],
'api' => ['de/api', 'API & Integrationen'],
'api' => ['de/api', 'API-Dokumentation'],
]);
test('static pages render in the editorial design', function (string $path, string $heading) {
@ -32,9 +30,19 @@ test('the faq page lists questions and links to support', function () {
->assertSuccessful()
->assertSeeText('Wie veröffentliche ich meine erste Pressemitteilung?')
->assertSeeText('Frage nicht gefunden?')
->assertSee(route('kontakt'), false);
// 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 help center shows quick links and topics', function () {
/** @var TestCase $this */
$this->get('https://businessportal24.test/de/hilfe')