feat(tickets): add PDF and Excel export endpoints
This commit is contained in:
@@ -17,6 +17,7 @@ use App\Domains\Shared\Enums\FieldType;
|
||||
use App\Domains\Tenant\Models\Tenant;
|
||||
use App\Domains\Tenant\Models\WebsiteType;
|
||||
use App\Domains\Ticket\Models\Ticket;
|
||||
use Barryvdh\DomPDF\ServiceProvider as DomPdfServiceProvider;
|
||||
use Database\Seeders\AttributeSeeder;
|
||||
use Database\Seeders\AuthorizationSeeder;
|
||||
use Database\Seeders\FiestaFutbolInfantilProductSeeder;
|
||||
@@ -33,6 +34,8 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->app->register(DomPdfServiceProvider::class);
|
||||
|
||||
$this->seed(AuthorizationSeeder::class);
|
||||
WebsiteType::query()->create(['codigo' => 'onticket', 'nombre' => 'OnTicket']);
|
||||
}
|
||||
@@ -284,6 +287,42 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
->assertJsonPath('data.0.id', $active->id);
|
||||
}
|
||||
|
||||
public function test_it_downloads_filtered_ticket_reports(): void
|
||||
{
|
||||
$tenant = $this->createTenant('fiesta_futbol_infantil');
|
||||
$admin = $this->createAdminAppUser($tenant);
|
||||
$this->grantTicketsMenu($tenant);
|
||||
Sanctum::actingAs($admin);
|
||||
|
||||
$ticket = $this->createTicket($tenant, $admin);
|
||||
$query = http_build_query([
|
||||
'q' => (string) $ticket->id,
|
||||
'timezone' => 'America/Argentina/Buenos_Aires',
|
||||
]);
|
||||
|
||||
$this->get('/api/v1/adminapp/tenant/tickets/pdf?'.$query)
|
||||
->assertOk()
|
||||
->assertHeader('content-type', 'application/pdf');
|
||||
|
||||
$this->get('/api/v1/adminapp/tenant/tickets/excel?'.$query)
|
||||
->assertOk()
|
||||
->assertHeader(
|
||||
'content-type',
|
||||
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
);
|
||||
}
|
||||
|
||||
public function test_ticket_reports_require_a_valid_timezone(): void
|
||||
{
|
||||
$tenant = $this->createTenant('fiesta_futbol_infantil');
|
||||
$this->grantTicketsMenu($tenant);
|
||||
Sanctum::actingAs($this->createAdminAppUser($tenant));
|
||||
|
||||
$this->getJson('/api/v1/adminapp/tenant/tickets/pdf')->assertUnprocessable();
|
||||
$this->getJson('/api/v1/adminapp/tenant/tickets/excel?timezone=Invalid')
|
||||
->assertUnprocessable();
|
||||
}
|
||||
|
||||
private function createTenant(string $code): Tenant
|
||||
{
|
||||
$headerLogo = $this->createAttachment("{$code}-header.png");
|
||||
|
||||
Reference in New Issue
Block a user