get($path)->assertSuccessful()->getContent(); foreach ($expected as $text) { expect($html)->toContain($text); } expect($html)->not->toContain('TMG') ->not->toContain('RStV') ->not->toContain('TTDSG') ->not->toContain('IP-Anonymisierung') ->not->toContain('(WICHTIG!)') ->not->toContain('Lissabon') ->not->toContain('info@b2in.de'); })->with([ 'impressum' => ['/impressum', ['§ 5 DDG', '§ 18 Abs. 2 MStV', 'Amtsgericht Bad Oeynhausen', 'Verbraucherstreitbeilegung', 'interior@b2in.eu', '+49 521 986 20 100']], 'terms' => ['/terms', ['Stand: 06.10.2026', 'Unter B2in Interior bieten wir']], 'privacy' => ['/privacy', ['§ 25 Abs. 2 Nr. 2 TDDDG', 'Google Analytics 4', '2. Hosting', 'Hetzner Online GmbH', 'Falkenstein (Sachsen)', 'höchstens 14 Tage gespeichert', 'united-domains GmbH', '9. Ihre Rechte als betroffene Person']], 'cookies' => ['/cookie-policy', ['§ 25 Abs. 1 TDDDG', 'Stand: 06.10.2026']], ]); it('updates legal texts stored in the CMS and keeps the rest', function () { $row = CmsContent::create(['group' => 'legal', 'key' => 'impressum', 'type' => 'json', 'order' => 0, 'value' => [ 'de' => ['title' => 'Impressum', 'subtitle' => 'Angaben gemäß § 5 TMG', 'content' => '
Eigener Absatz. Registergericht: Amtsg. Bad Oeynhausen
'], ]]); $this->seed(LegalTextUpdateSeeder::class); $this->seed(LegalTextUpdateSeeder::class); expect($row->refresh()->getTranslation('value', 'de'))->toBe([ 'title' => 'Impressum', 'subtitle' => 'Angaben gemäß § 5 DDG', 'content' => 'Eigener Absatz. Registergericht: Amtsgericht Bad Oeynhausen
', ]); }); it('adds hosting and mail provider to a stored privacy policy only once', function () { $row = CmsContent::create(['group' => 'legal', 'key' => 'privacy', 'type' => 'json', 'order' => 0, 'value' => [ 'de' => ['content' => 'Logs.
Diese Daten geben wir nicht ohne Ihre Einwilligung weiter.