Files
fotospiel-app/tests/Feature/Api/Tenant/TenantAnnouncementsTest.php
Codex Agent 8f13465415
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled
Implement tenant announcements and audit log fixes
2026-01-02 14:19:46 +01:00

69 lines
2.5 KiB
PHP

<?php
namespace Tests\Feature\Api\Tenant;
use App\Enums\TenantAnnouncementAudience;
use App\Enums\TenantAnnouncementSegment;
use App\Enums\TenantAnnouncementStatus;
use App\Models\Tenant;
use App\Models\TenantAnnouncement;
use App\Models\TenantPackage;
use Tests\Feature\Tenant\TenantTestCase;
class TenantAnnouncementsTest extends TenantTestCase
{
public function test_announcements_endpoint_returns_targeted_active_announcements(): void
{
$otherTenant = Tenant::factory()->create();
$activeAll = TenantAnnouncement::factory()->create([
'status' => TenantAnnouncementStatus::ACTIVE,
'audience' => TenantAnnouncementAudience::ALL,
]);
$targeted = TenantAnnouncement::factory()->create([
'status' => TenantAnnouncementStatus::ACTIVE,
'audience' => TenantAnnouncementAudience::TENANTS,
]);
$targeted->tenants()->attach($this->tenant->id);
$segmentActive = TenantAnnouncement::factory()->create([
'status' => TenantAnnouncementStatus::ACTIVE,
'audience' => TenantAnnouncementAudience::SEGMENTS,
'segments' => [TenantAnnouncementSegment::ACTIVE_STATUS->value],
]);
$segmentPackage = TenantAnnouncement::factory()->create([
'status' => TenantAnnouncementStatus::ACTIVE,
'audience' => TenantAnnouncementAudience::SEGMENTS,
'segments' => [TenantAnnouncementSegment::ACTIVE_PACKAGE->value],
]);
TenantPackage::factory()->for($this->tenant)->create(['active' => true]);
$otherTargeted = TenantAnnouncement::factory()->create([
'status' => TenantAnnouncementStatus::ACTIVE,
'audience' => TenantAnnouncementAudience::TENANTS,
]);
$otherTargeted->tenants()->attach($otherTenant->id);
$draft = TenantAnnouncement::factory()->create([
'status' => TenantAnnouncementStatus::DRAFT,
'audience' => TenantAnnouncementAudience::ALL,
]);
$response = $this->authenticatedRequest('GET', '/api/v1/tenant/announcements');
$response->assertOk();
$ids = collect($response->json('data'))->pluck('id');
$this->assertTrue($ids->contains($activeAll->id));
$this->assertTrue($ids->contains($targeted->id));
$this->assertTrue($ids->contains($segmentActive->id));
$this->assertTrue($ids->contains($segmentPackage->id));
$this->assertFalse($ids->contains($otherTargeted->id));
$this->assertFalse($ids->contains($draft->id));
}
}