seed(RolesAndPermissionsSeeder::class); }); function makeAdminForShow(): User { $admin = User::factory()->create(['is_active' => true]); $admin->assignRole('admin'); return $admin; } test('admin show rendert Rejection-Banner mit letzter Begründung', function () { /** @var TestCase $this */ $admin = makeAdminForShow(); $this->actingAs($admin); $pr = PressRelease::factory()->create([ 'status' => PressReleaseStatus::Rejected->value, ]); PressReleaseStatusLog::query()->create([ 'press_release_id' => $pr->id, 'changed_by_user_id' => $admin->id, 'from_status' => PressReleaseStatus::Review->value, 'to_status' => PressReleaseStatus::Rejected->value, 'reason' => 'Werbliche Sprache, bitte überarbeiten.', 'source' => 'admin', 'created_at' => now(), ]); LivewireVolt::test('admin.press-releases.show', ['id' => $pr->id]) ->assertSee('Diese Pressemitteilung wurde abgelehnt') ->assertSee('Werbliche Sprache, bitte überarbeiten.'); }); test('admin show zeigt zugeordnete Pressekontakte', function () { /** @var TestCase $this */ $admin = makeAdminForShow(); $this->actingAs($admin); $company = Company::factory()->presseecho()->create(); $contact = Contact::factory()->for($company)->create([ 'first_name' => 'Max', 'last_name' => 'Mustermann', 'responsibility' => 'Pressesprecher', 'email' => 'presse@example.test', 'portal' => $company->portal->value, ]); $pr = PressRelease::factory()->create(['company_id' => $company->id]); $pr->contacts()->sync([$contact->id]); LivewireVolt::test('admin.press-releases.show', ['id' => $pr->id]) ->assertSee('Zugeordnete Pressekontakte') ->assertSee('Max Mustermann') ->assertSee('Pressesprecher') ->assertSee('presse@example.test'); }); test('admin show zeigt Hinweis bei fehlenden Kontakten', function () { /** @var TestCase $this */ $admin = makeAdminForShow(); $this->actingAs($admin); $pr = PressRelease::factory()->create(); LivewireVolt::test('admin.press-releases.show', ['id' => $pr->id]) ->assertSee('Dieser Pressemitteilung ist kein Pressekontakt zugeordnet.'); }); test('admin show zeigt Scheduling-Termin im Review-Workflow', function () { /** @var TestCase $this */ $admin = makeAdminForShow(); $this->actingAs($admin); $pr = PressRelease::factory()->create([ 'status' => PressReleaseStatus::Review->value, 'scheduled_at' => '2026-06-15 10:00:00', ]); LivewireVolt::test('admin.press-releases.show', ['id' => $pr->id]) ->assertSee('Geplante Veröffentlichung') ->assertSee('15.06.2026 10:00'); }); test('admin show zeigt Embargo-Info im Published-Workflow', function () { /** @var TestCase $this */ $admin = makeAdminForShow(); $this->actingAs($admin); $pr = PressRelease::factory()->create([ 'status' => PressReleaseStatus::Published->value, 'published_at' => '2026-06-01 10:00:00', 'embargo_at' => now()->addDays(10), ]); LivewireVolt::test('admin.press-releases.show', ['id' => $pr->id]) ->assertSee('Sperrfrist bis'); }); test('admin show zeigt Autor im Status-Verlauf-Grid', function () { /** @var TestCase $this */ $admin = makeAdminForShow(); $this->actingAs($admin); $author = User::factory()->create(['name' => 'Anna Autorin']); $pr = PressRelease::factory()->create(['user_id' => $author->id]); LivewireVolt::test('admin.press-releases.show', ['id' => $pr->id]) ->assertSee('Anna Autorin'); });