feat(tickets): group user tickets by event

This commit is contained in:
2026-09-22 12:26:16 -03:00
parent 6efe8439c7
commit 3401c934b2
12 changed files with 289 additions and 20 deletions

View File

@@ -2,22 +2,23 @@
namespace Tests\Feature\Ticket;
use App\Shared\Attachable\Enums\AttachmentType;
use App\Shared\Attachable\Models\Attachment;
use App\Domains\Core\Auth\Models\User;
use App\Domains\Commerce\Catalog\Enums\CatalogItemType;
use App\Domains\Commerce\Catalog\Models\Attribute;
use App\Domains\Commerce\Catalog\Models\CatalogItem;
use App\Domains\Commerce\Catalog\Models\Inventory;
use App\Domains\Commerce\Catalog\Services\CatalogService;
use App\Domains\Ticketing\Event\Models\EventDate;
use App\Domains\Commerce\Purchase\Models\Purchase;
use App\Shared\Enums\FieldType;
use App\Domains\Core\Auth\Models\User;
use App\Domains\Core\Tenant\Models\Tenant;
use App\Domains\Ticketing\Event\Models\Event as TicketEvent;
use App\Domains\Ticketing\Event\Models\EventDate;
use App\Domains\Ticketing\Ticket\Enums\ValidityTimeType;
use App\Domains\Ticketing\Ticket\Exceptions\TicketGenerationException;
use App\Domains\Ticketing\Ticket\Models\ValidityTime;
use App\Domains\Ticketing\Ticket\Services\TicketGeneratorService;
use App\Shared\Attachable\Enums\AttachmentType;
use App\Shared\Attachable\Models\Attachment;
use App\Shared\Enums\FieldType;
use Illuminate\Database\Eloquent\Collection as EloquentCollection;
use Illuminate\Database\QueryException;
use Illuminate\Foundation\Testing\RefreshDatabase;
@@ -79,6 +80,26 @@ class TicketGeneratorServiceTest extends TestCase
]);
}
public function test_it_preserves_the_catalog_items_event_on_the_ticket(): void
{
$event = TicketEvent::query()->create([
'tenant_code' => $this->tenant->codigo,
'slug' => 'original-event',
'title' => 'Original event',
'published_at' => now(),
]);
$item = $this->createTicketableItem('event-ticket');
$item->update(['event_id' => $event->id]);
$ticket = $this->service->generate($item->fresh(), $this->user)->sole();
$this->assertSame($event->id, $ticket->event_id);
$this->assertDatabaseHas('tickets', [
'id' => $ticket->id,
'event_id' => $event->id,
]);
}
public function test_it_rejects_an_item_without_tickets_enabled(): void
{
$item = $this->createTicketableItem('disabled');