admin: PM-Detailseite verlinkt Firma, Autor und Firmen-Benutzer

Firma und Autor sind im Header und Status-Grid klickbar
(admin/companies/{id} bzw. admin/users/{id}). Das Kontakte-Panel heißt
jetzt "Firma & Pressekontakte" und zeigt die Firmendaten (Adresse,
E-Mail, Telefon, Website) über den Pressekontakten. Neu: "Benutzer mit
Zugriff (über Firma)" listet alle Firmen-Mitglieder mit Rolle und
Autor-Markierung — mehrere User hängen nur über die Firma an einer PM,
Magic-Links sind reine Login-Tokens.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-21 08:48:22 +00:00
parent fa303360ee
commit e3ce626b73
2 changed files with 127 additions and 10 deletions

View file

@ -51,7 +51,12 @@ test('admin show zeigt zugeordnete Pressekontakte', function () {
$admin = makeAdminForShow();
$this->actingAs($admin);
$company = Company::factory()->presseecho()->create();
$company = Company::factory()->presseecho()->create([
'name' => 'Muster GmbH',
'email' => 'firma@example.test',
'phone' => '+49 30 1234567',
'website' => 'https://muster.example.test',
]);
$contact = Contact::factory()->for($company)->create([
'first_name' => 'Max',
'last_name' => 'Mustermann',
@ -64,6 +69,11 @@ test('admin show zeigt zugeordnete Pressekontakte', function () {
$pr->contacts()->sync([$contact->id]);
LivewireVolt::test('admin.press-releases.show', ['id' => $pr->id])
->assertSee('Firma & Pressekontakte')
->assertSee('Muster GmbH')
->assertSee('firma@example.test')
->assertSee('+49 30 1234567')
->assertSee('https://muster.example.test')
->assertSee('Zugeordnete Pressekontakte')
->assertSee('Max Mustermann')
->assertSee('Pressesprecher')
@ -112,6 +122,30 @@ test('admin show zeigt Embargo-Info im Published-Workflow', function () {
->assertSee('Sperrfrist bis');
});
test('admin show verlinkt Firma, Autor und Firmen-Benutzer', function () {
/** @var TestCase $this */
$admin = makeAdminForShow();
$this->actingAs($admin);
$company = Company::factory()->presseecho()->create(['name' => 'Muster GmbH']);
$author = User::factory()->create(['name' => 'Anna Autorin']);
$coEditor = User::factory()->create(['name' => 'Carl Co-Editor']);
$company->users()->attach($author->id, ['role' => 'owner']);
$company->users()->attach($coEditor->id, ['role' => 'member']);
$pr = PressRelease::factory()->create([
'company_id' => $company->id,
'user_id' => $author->id,
]);
LivewireVolt::test('admin.press-releases.show', ['id' => $pr->id])
->assertSee('Benutzer mit Zugriff')
->assertSee('Carl Co-Editor')
->assertSeeHtml(route('admin.companies.show', $company->id))
->assertSeeHtml(route('admin.users.show', $author->id))
->assertSeeHtml(route('admin.users.show', $coEditor->id));
});
test('admin show zeigt Autor im Status-Verlauf-Grid', function () {
/** @var TestCase $this */
$admin = makeAdminForShow();