- App\Support\ImageCredit: Foto/Quelle-Zeile, KI-Hinweis mit Herkunft, Verantwortlich-Zeile nur mit Protokoll, sichere Links; PDF-Zeilen mit Bestätigungskennung - Artikelseite: Overlay (eigenes i-Zeichen, Alpine ohne Plugin, Bottom-Sheet auf Mobil) mit Nachweis, Lizenz, Quelle, KI-Hinweis, Verantwortlich-Zeile, „Bild melden" - Richtlinien 0.2: Prüfung als automatisiert beschrieben, Abschnitt „Bilder" (Decision-Update 3.5); Taglines, Suche, Newsrooms, Startseiten-CTA, Mails ohne „qualitätsgeprüft" - Cache-Invalidierung bei Bildwechsel an veröffentlichten Meldungen; PHPStan-Baseline für das Resource bereinigt Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
43 lines
1.9 KiB
PHP
43 lines
1.9 KiB
PHP
<?php
|
|
|
|
use App\Models\LegalDocument;
|
|
use Database\Seeders\LegalDocumentSeeder;
|
|
use Tests\TestCase;
|
|
|
|
test('current returns the newest effective version and ignores future ones', function () {
|
|
LegalDocument::factory()->agb()->create(['version' => '0.5', 'effective_from' => '2026-06-01']);
|
|
$current = LegalDocument::factory()->agb()->create(['version' => '0.6', 'effective_from' => '2026-07-03']);
|
|
// Zukünftige Fassung: veröffentlicht, aber noch nicht wirksam.
|
|
LegalDocument::factory()->agb()->create(['version' => '0.7', 'effective_from' => now()->addMonth()->toDateString()]);
|
|
|
|
expect(LegalDocument::current(LegalDocument::TYPE_AGB)?->id)->toBe($current->id);
|
|
expect(LegalDocument::currentAgbVersion())->toBe('0.6');
|
|
});
|
|
|
|
test('the agb version falls back to the config while the table is empty', function () {
|
|
config()->set('legal.agb_version', '9.9');
|
|
|
|
expect(LegalDocument::current(LegalDocument::TYPE_AGB))->toBeNull();
|
|
expect(LegalDocument::currentAgbVersion())->toBe('9.9');
|
|
});
|
|
|
|
test('the seeder registers all legal documents idempotently', function () {
|
|
/** @var TestCase $this */
|
|
$this->seed(LegalDocumentSeeder::class);
|
|
$this->seed(LegalDocumentSeeder::class); // Wiederholung darf nichts duplizieren.
|
|
|
|
expect(LegalDocument::query()->count())->toBe(6);
|
|
expect(LegalDocument::current(LegalDocument::TYPE_RICHTLINIEN)?->version)->toBe('0.2');
|
|
expect(LegalDocument::currentAgbVersion())->toBe('0.6');
|
|
expect(LegalDocument::current(LegalDocument::TYPE_DATENSCHUTZ)?->version)->toBe('0.3');
|
|
});
|
|
|
|
test('the agb page renders version and effective date from the database', function () {
|
|
/** @var TestCase $this */
|
|
LegalDocument::factory()->agb()->create(['version' => '0.6', 'effective_from' => '2026-07-03']);
|
|
|
|
$this->get('https://pressekonto.test/de/agb')
|
|
->assertSuccessful()
|
|
->assertSeeText('Version 0.6')
|
|
->assertSeeText('Stand: 3. Juli 2026');
|
|
});
|