b2in/tests/Feature/AboutPageTextTest.php
Kevin Adametz fcb10be120 Interior-Feinschliff: Hero-Slideshow, Lektorat, Rechtstexte, Aufräumen und Korrekturen 08.10.
Startseite und Heroes
- Hero-Slideshow (11 Motive inkl. Febrü) mit Infokarte, Laufzeit-Linie, größeren Klickflächen,
  Goldrahmen und mobiler Karte unter dem Bild; Zeile über der Überschrift, neue Vertrauenspunkte
- Hero-Stil auf Marken, Über uns und Kontakt übertragen, Breadcrumb entfernt
- Gründer-Leiste, Vision-Box auf Ocker, Showroom-Display in Box mit „Größer ansehen“/Vollbild
- Akzentfarbe #a8741f, größere Serif-Überschriften in der Interior-Welt
- Marken: Bildpause mit Zitat; Vereine aktualisiert und verlinkt

Inhalte
- Lektorat aller angezeigten Texte, /about-Korrekturen, Rechtstexte (DDG, TDDDG, Hosting Hetzner)
- Ablauf Maßanfertigung überall einheitlich, Magazin-Beitrag neu, alte Beiträge offline,
  deutsches Datum/Lesezeit, FAQ Projektausstattung, Otterpohl
- Referenzen-Seite per CMS-Schalter ausblendbar

CMS und Technik
- Tote Sektionen, Felder, Seiten und Komponenten entfernt und archiviert (dev/2026-08-28/archiv-*)
- Entwurf /entwurf, Farb-Schalter und /welcome entfernt; Test-Routen nur noch lokal
- Seitenbaum-Beschreibungen geprüft, fehlende CMS-Felder ergänzt, Markenliste aus „Kernmarken“
- Admin-Bildvorschauen repariert, verwendete Bilder in die Mediathek übernommen
- Seeder für das Deployment siehe dev/2026-08-28/entwicklungsplan.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:00:15 +00:00

54 lines
2.3 KiB
PHP

<?php
declare(strict_types=1);
use Database\Seeders\AboutPageTextSeeder;
use FluxCms\Core\Models\CmsContent;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
/**
* Textkorrekturen auf /about (Abstimmung 06.10.2026).
*/
it('shows the corrected texts on the about page', function () {
$html = $this->get('/about')->assertSuccessful()->getContent();
expect($html)->toContain('aufmisst und am Ende auch dafür geradesteht.')
->toContain('mit wenigen ausgewählten Herstellern')
->toContain('„Gute Einrichtung entsteht')
->toContain('Zu Qualität gehört, Wort zu halten.')
->toContain('Febrü und Otterpohl Möbelservice bilden die Kernmarken')
->toContain('den ein Standardmöbel ungenutzt lässt.')
->toContain('Werden Sie B2in-Partner')
->not->toContain('am Ende geradesteht.')
->not->toContain('liegen lässt');
});
it('corrects the texts stored in the CMS and leaves everything else alone', function () {
$row = CmsContent::create([
'group' => 'about',
'key' => 'our_story',
'type' => 'json',
'value' => [
'de' => ['title' => 'Eigener Titel', 'timeline' => [['description' => 'Wer hochwertig einrichten will, findet selten jemanden, der zuhört, aufmisst und am Ende geradesteht.']]],
'en' => ['timeline' => [['description' => 'In 2026 interiors move to the centre: CABINET, Rotpunkt Küchen and Febrü form the core, complemented by a network of regional specialists. International real estate remains as a complementary area.']]],
],
'order' => 0,
]);
$this->seed(AboutPageTextSeeder::class);
$this->seed(AboutPageTextSeeder::class);
$value = $row->refresh()->getTranslations('value');
expect($value['de']['title'])->toBe('Eigener Titel')
->and($value['de']['timeline'][0]['description'])->toBe('Wer hochwertig einrichten will, findet selten jemanden, der zuhört, aufmisst und am Ende auch dafür geradesteht.')
->and($value['en']['timeline'][0]['description'])->toContain('Febrü and Otterpohl Möbelservice form the core');
});
it('does nothing when the about sections are not in the CMS', function () {
$this->seed(AboutPageTextSeeder::class);
expect(CmsContent::where('group', 'about')->exists())->toBeFalse();
});