Attribution: Übermittler aus users.agency_name statt Agentur-Firma
A3 des Umbaus Agentur-Attribution → User-Profil: Eager Loading der Detailseite/Vorschau lädt user:id,agency_name; die Legacy-Relation PressRelease::submittingAgency() (Pseudo-Firma type=agency via owner_user_id) entfällt. Tests decken Verteiler-Fall, Namensgleichheit und PM ohne Übermittler ab. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
365971ae1d
commit
56fe5ea6f4
3 changed files with 71 additions and 0 deletions
|
|
@ -1,11 +1,13 @@
|
|||
<?php
|
||||
|
||||
use App\Enums\CompanyType;
|
||||
use App\Enums\Portal;
|
||||
use App\Enums\PressReleaseStatus;
|
||||
use App\Models\Category;
|
||||
use App\Models\Company;
|
||||
use App\Models\Contact;
|
||||
use App\Models\PressRelease;
|
||||
use App\Models\User;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
|
|
@ -95,6 +97,73 @@ test('release detail shows prominent report links below the article', function (
|
|||
->assertSee(route('legal-request.create', ['slug' => $release->slug, 'type' => 'dsgvo']), false);
|
||||
});
|
||||
|
||||
test('release detail attributes content submitted via a distribution agency', function () {
|
||||
/** @var TestCase $this */
|
||||
// Legacy-Konvention: PMs, die über einen Verteiler-Account eingeliefert
|
||||
// wurden (z. B. connektar via API), tragen die Zeile „Original-Inhalt
|
||||
// von {Firma} und übermittelt von {Übermittler}". Der Übermittler kommt
|
||||
// aus dem Profilfeld agency_name des einliefernden Accounts.
|
||||
[$category, $company] = detailCategoryAndCompany(Portal::Businessportal24);
|
||||
|
||||
$agencyUser = User::factory()->withAgency('connektar.de Presseverteiler')->create();
|
||||
|
||||
$release = PressRelease::factory()
|
||||
->published()
|
||||
->forPortal(Portal::Businessportal24)
|
||||
->for($category)
|
||||
->for($company)
|
||||
->for($agencyUser, 'user')
|
||||
->create(['slug' => 'api-eingelieferte-meldung', 'published_at' => now()->subDay()]);
|
||||
|
||||
$this->get('https://businessportal24.test/de/press-release/'.$release->slug)
|
||||
->assertSuccessful()
|
||||
->assertSeeText('Original-Inhalt von Muster Energie GmbH und übermittelt von connektar.de Presseverteiler');
|
||||
});
|
||||
|
||||
test('release detail attribution collapses when agency and company share the same name', function () {
|
||||
/** @var TestCase $this */
|
||||
[$category] = detailCategoryAndCompany(Portal::Businessportal24);
|
||||
|
||||
$agencyUser = User::factory()->withAgency('PR-Werk GmbH')->create();
|
||||
|
||||
$sameNameCompany = Company::factory()->create([
|
||||
'portal' => Portal::Businessportal24,
|
||||
'type' => CompanyType::Company,
|
||||
'name' => 'PR-Werk GmbH',
|
||||
'is_active' => true,
|
||||
]);
|
||||
|
||||
$release = PressRelease::factory()
|
||||
->published()
|
||||
->forPortal(Portal::Businessportal24)
|
||||
->for($category)
|
||||
->for($sameNameCompany)
|
||||
->for($agencyUser, 'user')
|
||||
->create(['slug' => 'eigene-agentur-meldung', 'published_at' => now()->subDay()]);
|
||||
|
||||
$this->get('https://businessportal24.test/de/press-release/'.$release->slug)
|
||||
->assertSuccessful()
|
||||
->assertSeeText('Inhalt übermittelt von PR-Werk GmbH')
|
||||
->assertDontSeeText('Original-Inhalt von PR-Werk GmbH');
|
||||
});
|
||||
|
||||
test('release detail attributes the company itself without a distribution agency', function () {
|
||||
/** @var TestCase $this */
|
||||
[$category, $company] = detailCategoryAndCompany(Portal::Businessportal24);
|
||||
|
||||
$release = PressRelease::factory()
|
||||
->published()
|
||||
->forPortal(Portal::Businessportal24)
|
||||
->for($category)
|
||||
->for($company)
|
||||
->create(['slug' => 'direkt-eingestellte-meldung', 'published_at' => now()->subDay()]);
|
||||
|
||||
$this->get('https://businessportal24.test/de/press-release/'.$release->slug)
|
||||
->assertSuccessful()
|
||||
->assertSeeText('Original-Inhalt von Muster Energie GmbH')
|
||||
->assertDontSeeText('übermittelt von');
|
||||
});
|
||||
|
||||
test('release detail counts a hit', function () {
|
||||
/** @var TestCase $this */
|
||||
[$category, $company] = detailCategoryAndCompany(Portal::Businessportal24);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue