Add live show moderation queue
This commit is contained in:
105
tests/Feature/LiveShowPhotoControllerTest.php
Normal file
105
tests/Feature/LiveShowPhotoControllerTest.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Enums\PhotoLiveStatus;
|
||||
use App\Models\Event;
|
||||
use App\Models\Photo;
|
||||
use Tests\Feature\Tenant\TenantTestCase;
|
||||
|
||||
class LiveShowPhotoControllerTest extends TenantTestCase
|
||||
{
|
||||
public function test_live_show_queue_defaults_to_pending(): void
|
||||
{
|
||||
$event = Event::factory()->for($this->tenant)->create([
|
||||
'slug' => 'live-show-queue',
|
||||
]);
|
||||
|
||||
$pending = Photo::factory()->for($event)->create([
|
||||
'status' => 'approved',
|
||||
'live_status' => PhotoLiveStatus::PENDING,
|
||||
]);
|
||||
|
||||
Photo::factory()->for($event)->create([
|
||||
'status' => 'approved',
|
||||
'live_status' => PhotoLiveStatus::APPROVED,
|
||||
'live_approved_at' => now(),
|
||||
]);
|
||||
|
||||
$response = $this->authenticatedRequest('GET', "/api/v1/tenant/events/{$event->slug}/live-show/photos");
|
||||
|
||||
$response->assertOk();
|
||||
$response->assertJsonCount(1, 'data');
|
||||
$response->assertJsonPath('data.0.id', $pending->id);
|
||||
$response->assertJsonPath('data.0.live_status', PhotoLiveStatus::PENDING->value);
|
||||
}
|
||||
|
||||
public function test_live_show_approve_requires_gallery_approval(): void
|
||||
{
|
||||
$event = Event::factory()->for($this->tenant)->create([
|
||||
'slug' => 'live-show-approve-guard',
|
||||
]);
|
||||
|
||||
$photo = Photo::factory()->for($event)->create([
|
||||
'status' => 'pending',
|
||||
'live_status' => PhotoLiveStatus::PENDING,
|
||||
]);
|
||||
|
||||
$response = $this->authenticatedRequest(
|
||||
'POST',
|
||||
"/api/v1/tenant/events/{$event->slug}/live-show/photos/{$photo->id}/approve"
|
||||
);
|
||||
|
||||
$response->assertStatus(422);
|
||||
$response->assertJsonPath('error.code', 'photo_not_approved');
|
||||
}
|
||||
|
||||
public function test_live_show_approve_reject_and_clear_workflow(): void
|
||||
{
|
||||
$event = Event::factory()->for($this->tenant)->create([
|
||||
'slug' => 'live-show-workflow',
|
||||
]);
|
||||
|
||||
$photo = Photo::factory()->for($event)->create([
|
||||
'status' => 'approved',
|
||||
'live_status' => PhotoLiveStatus::PENDING,
|
||||
]);
|
||||
|
||||
$approve = $this->authenticatedRequest(
|
||||
'POST',
|
||||
"/api/v1/tenant/events/{$event->slug}/live-show/photos/{$photo->id}/approve",
|
||||
['priority' => 12]
|
||||
);
|
||||
|
||||
$approve->assertOk();
|
||||
$this->assertDatabaseHas('photos', [
|
||||
'id' => $photo->id,
|
||||
'live_status' => PhotoLiveStatus::APPROVED->value,
|
||||
'live_priority' => 12,
|
||||
]);
|
||||
|
||||
$reject = $this->authenticatedRequest(
|
||||
'POST',
|
||||
"/api/v1/tenant/events/{$event->slug}/live-show/photos/{$photo->id}/reject",
|
||||
['reason' => 'policy']
|
||||
);
|
||||
|
||||
$reject->assertOk();
|
||||
$this->assertDatabaseHas('photos', [
|
||||
'id' => $photo->id,
|
||||
'live_status' => PhotoLiveStatus::REJECTED->value,
|
||||
'live_rejection_reason' => 'policy',
|
||||
]);
|
||||
|
||||
$clear = $this->authenticatedRequest(
|
||||
'POST',
|
||||
"/api/v1/tenant/events/{$event->slug}/live-show/photos/{$photo->id}/clear"
|
||||
);
|
||||
|
||||
$clear->assertOk();
|
||||
$this->assertDatabaseHas('photos', [
|
||||
'id' => $photo->id,
|
||||
'live_status' => PhotoLiveStatus::NONE->value,
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user