feat(desfile): export entry reservations
This commit is contained in:
@@ -4,14 +4,20 @@ namespace Tests\Feature\Desfile;
|
||||
|
||||
use App\Domains\Commerce\Catalog\Models\Inventory;
|
||||
use App\Domains\Core\Auth\Models\User;
|
||||
use App\Domains\Core\Tenant\Models\Tenant;
|
||||
use App\Domains\Ticketing\Desfile\Requests\ExportEntryReservationsRequest;
|
||||
use App\Domains\Ticketing\Desfile\Requests\IndexEntryReservationsRequest;
|
||||
use App\Domains\Ticketing\Desfile\Requests\StoreEntryReservationsRequest;
|
||||
use App\Domains\Ticketing\Desfile\Resources\EntryReservationResource;
|
||||
use App\Domains\Ticketing\Desfile\Services\EntryReservationExcelService;
|
||||
use App\Domains\Ticketing\Desfile\Services\EntryReservationPdfService;
|
||||
use App\Domains\Ticketing\Desfile\Services\EntryReservationReportService;
|
||||
use App\Domains\Ticketing\Desfile\Services\EntryReservationService;
|
||||
use App\Domains\Ticketing\Ticket\Models\Ticket;
|
||||
use App\Domains\Ticketing\Ticket\Services\ResolvedTicketValidity;
|
||||
use App\Domains\Ticketing\Ticket\Services\TicketGeneratorService;
|
||||
use App\Domains\Ticketing\Ticket\Services\TicketValidityResolver;
|
||||
use Barryvdh\DomPDF\ServiceProvider as DomPdfServiceProvider;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
@@ -29,6 +35,7 @@ class EntryReservationServiceTest extends TestCase
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
$this->app->register(DomPdfServiceProvider::class);
|
||||
// Minimal domain schema isolates this workflow from unrelated legacy migrations.
|
||||
Schema::create('users', function (Blueprint $table): void {
|
||||
$table->id();
|
||||
@@ -324,6 +331,48 @@ class EntryReservationServiceTest extends TestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function test_export_request_requires_a_valid_timezone(): void
|
||||
{
|
||||
$validator = Validator::make([
|
||||
'tipo_pago' => 'sin_cargo',
|
||||
'timezone' => 'Invalid/Timezone',
|
||||
], (new ExportEntryReservationsRequest)->rules());
|
||||
|
||||
$this->assertTrue($validator->fails());
|
||||
$this->assertArrayHasKey('timezone', $validator->errors()->toArray());
|
||||
}
|
||||
|
||||
public function test_exports_filtered_reservations_to_pdf_and_excel(): void
|
||||
{
|
||||
$service = $this->service();
|
||||
$user = User::findOrFail(1);
|
||||
$service->reserve($user, (string) Str::uuid(), $this->rows());
|
||||
$reservations = $service->reservationsForExport($user, ['tipo_pago' => 'otro_metodo']);
|
||||
$tenant = Tenant::query()->firstOrFail();
|
||||
$tenant->setAttribute('nombre', 'Desfile Pura Tendencia');
|
||||
$report = new EntryReservationReportService;
|
||||
|
||||
$this->assertCount(1, $reservations);
|
||||
$this->assertSame('Otro método', $report->rows($reservations)->sole()['pago']);
|
||||
|
||||
$pdf = (new EntryReservationPdfService($report))->download(
|
||||
$tenant,
|
||||
$reservations,
|
||||
'America/Argentina/Buenos_Aires',
|
||||
);
|
||||
$this->assertSame('application/pdf', $pdf->headers->get('content-type'));
|
||||
|
||||
$excel = (new EntryReservationExcelService($report))->download(
|
||||
$tenant,
|
||||
$reservations,
|
||||
'America/Argentina/Buenos_Aires',
|
||||
);
|
||||
$this->assertSame(
|
||||
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
$excel->headers->get('content-type'),
|
||||
);
|
||||
}
|
||||
|
||||
public function test_real_ticket_generator_links_admin_variant_and_reservation(): void
|
||||
{
|
||||
$validity = Mockery::mock(TicketValidityResolver::class);
|
||||
|
||||
Reference in New Issue
Block a user