presseportale/tests/Feature/Web/NavigationLinksTest.php
Kevin Adametz fd8e050cb7 Backend-WIP: Kontakt-Queue, Page-Cache, Validierungs-Feedback, i18n
Gebuendelt, da ueber gemeinsame lang-/Service-Dateien verschraenkt:
- Kontakt-Nachrichten: contact_messages-Tabelle + Model/Enums/Factory,
  Admin-Queue (livewire/admin/contact-messages), ContactController
  persistiert das Anliegen zusaetzlich zur Brand-Mail
- Page-Data-Cache (Services/Web/*PageData) + web-archive-Indizes auf
  press_releases
- Validierungs-Feedback + Company-Portal-Restriction (Feature-Tests)
- i18n-Auslagerung lang/de|en (auth, passwords, validation, static)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 15:38:11 +00:00

53 lines
2 KiB
PHP

<?php
use App\Enums\Portal;
use App\Models\Category;
use Tests\TestCase;
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 + 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/richtlinien', false)
->assertSee('/de/melden', false)
->assertDontSee('/de/cookies', false)
// „Anmelden" öffnet ein Modal, das Pressekonto erklärt und in den Hub verlinkt.
->assertSee('/login', false)
->assertSeeText(__('web.header.login_modal_title'))
->assertSeeText(__('web.header.login_modal_hub'))
->assertDontSee('href="#newsletter"', false)
->assertDontSee('href="#rss"', false)
->assertDontSee('href="#anmelden"', false)
// Nicht verlinkte Platzhalter-Punkte wurden entfernt.
->assertDontSee('Mediendaten')
->assertDontSee('Verifizierter Newsroom');
});
test('categories beyond the top nine appear in the header more dropdown', function () {
/** @var TestCase $this */
// 12 Top-Level-Rubriken: die Top 9 erscheinen als Tabs, der Rest im
// „Mehr“-Dropdown (Desktop) bzw. in der Mobile-Liste — keine Rubrik
// fällt mehr komplett aus der Navigation.
$categories = Category::factory()
->count(12)
->state(['portal' => Portal::Both->value])
->withTranslations()
->create();
$response = $this->get('https://businessportal24.test/de');
$response->assertSuccessful()
->assertSeeText(__('web.nav.more'));
foreach ($categories as $category) {
$translation = $category->translations()->where('locale', 'de')->first();
$response->assertSeeText($translation->name);
}
});