newsroom: Hinweis „Diesen Newsroom verwalten“ auf der Seite und in der Mail (Roadmap 1b.4, E4)
E4 (15.09.2026): Die Veröffentlichungsmail trägt den Hinweis am Ende, als Hinweis, nicht als Angebot. Auf der Newsroom-Seite eine Zeile unter dem Profil. Der Mail-Link ist mit src=mail_publish getaggt; die Claim-Seite reicht die Herkunft bis auf das Token durch, sodass die Leiter „aus der Mail beansprucht“ von „auf der Seite entdeckt“ unterscheidet. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0c1c072487
commit
7f714fb664
11 changed files with 141 additions and 5 deletions
|
|
@ -4,11 +4,13 @@ use App\Enums\ConversionEventType;
|
|||
use App\Enums\ConversionSource;
|
||||
use App\Enums\Portal;
|
||||
use App\Mail\MagicLoginLink;
|
||||
use App\Mail\PressReleasePublished;
|
||||
use App\Models\Company;
|
||||
use App\Models\CompanyEmailGroup;
|
||||
use App\Models\Contact;
|
||||
use App\Models\ConversionEvent;
|
||||
use App\Models\MagicLink;
|
||||
use App\Models\PressRelease;
|
||||
use App\Models\User;
|
||||
use App\Services\Company\CompanyMergeService;
|
||||
use App\Services\Company\CompanyRemovalService;
|
||||
|
|
@ -152,3 +154,50 @@ test('the honeypot answers neutrally without sending', function () {
|
|||
|
||||
Mail::assertNothingQueued();
|
||||
});
|
||||
|
||||
// ------------------------------------------------- 1b.4 Hinweise
|
||||
|
||||
test('the newsroom page links to the claim page as a hint', function () {
|
||||
/** @var TestCase $this */
|
||||
$company = claimCompany();
|
||||
PressRelease::factory()->published()->forPortal(Portal::Businessportal24)->create([
|
||||
'company_id' => $company->id, 'published_at' => now()->subDay(), 'language' => 'de',
|
||||
]);
|
||||
|
||||
$this->get('https://businessportal24.test/de/newsroom/muster-gmbh')
|
||||
->assertOk()
|
||||
->assertSeeText('Diesen Newsroom verwalten')
|
||||
->assertSee('/de/newsroom/muster-gmbh/verwalten', false);
|
||||
});
|
||||
|
||||
test('the publish mail carries the manage hint at the bottom, tagged with its origin', function () {
|
||||
/** @var TestCase $this */
|
||||
$company = claimCompany();
|
||||
$release = PressRelease::factory()->published()->forPortal(Portal::Businessportal24)->create([
|
||||
'company_id' => $company->id, 'language' => 'de',
|
||||
]);
|
||||
|
||||
$mail = new PressReleasePublished($release->user, $release);
|
||||
|
||||
// E4 (15.09.2026): Hinweis in der Mail, unten, kein Angebot.
|
||||
expect($mail->manageNewsroomUrl)->toStartWith('https://businessportal24.test/de/newsroom/muster-gmbh/verwalten?')
|
||||
->and($mail->manageNewsroomUrl)->toContain('src='.ConversionSource::MailPublish->value)
|
||||
->and($mail->render())->toContain('Diesen Newsroom verwalten');
|
||||
|
||||
// Ohne Firma kein Hinweis — und nichts bricht.
|
||||
$orphan = PressRelease::factory()->published()->create(['company_id' => null]);
|
||||
expect((new PressReleasePublished($orphan->user, $orphan))->manageNewsroomUrl)->toBeNull();
|
||||
});
|
||||
|
||||
test('a claim coming from the publish mail keeps the mail origin on the token', function () {
|
||||
/** @var TestCase $this */
|
||||
$company = claimCompany();
|
||||
|
||||
$this->post(claimUrl(), ['src' => ConversionSource::MailPublish->value])->assertSessionHas('newsroom-claim-status');
|
||||
|
||||
$user = User::query()->where('email', 'info@muster.de')->firstOrFail();
|
||||
$link = MagicLink::query()->where('user_id', $user->id)->latest('id')->firstOrFail();
|
||||
|
||||
expect($link->source)->toBe(ConversionSource::MailPublish->value)
|
||||
->and($link->payload['company_id'])->toBe($company->id);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue