Add tests for ticket validity and event date formatting
- Create TicketValiditySchemaTest to verify database schema for ticket validity. - Update CatalogModelsTest to include tests for event date attributes and selection options. - Introduce EventDateTextFormatterTest for formatting event dates in Spanish. - Refactor EventModelsTest to include validity time relationships. - Add SaleDetailResourceTest to ensure correct serialization of purchase items. - Enhance TicketTest with validity time checks and status management. - Implement ValidityTimeResourceTest to validate resource output for different validity types. - Add ValidityTimeTest to verify casting and validity checks for validity time types.
This commit is contained in:
70
tests/Unit/Ticket/ValidityTimeTest.php
Normal file
70
tests/Unit/Ticket/ValidityTimeTest.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit\Ticket;
|
||||
|
||||
use App\Domains\Catalog\Models\AttributeOption;
|
||||
use App\Domains\Catalog\Models\CatalogItem;
|
||||
use App\Domains\Ticket\Enums\ValidityTimeType;
|
||||
use App\Domains\Ticket\Models\TicketValidityGroup;
|
||||
use App\Domains\Ticket\Models\ValidityTime;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Tests\TestCase;
|
||||
|
||||
class ValidityTimeTest extends TestCase
|
||||
{
|
||||
public function test_it_casts_its_type_dates_and_flags(): void
|
||||
{
|
||||
$validityTime = new ValidityTime;
|
||||
$validityTime->setRawAttributes([
|
||||
'type' => ValidityTimeType::FixedWindow->value,
|
||||
'fixed_starts_at' => '2026-08-20 10:00:00',
|
||||
'fixed_expires_at' => '2026-08-21 02:00:00',
|
||||
]);
|
||||
|
||||
$this->assertSame(ValidityTimeType::FixedWindow, $validityTime->type);
|
||||
$this->assertInstanceOf(Carbon::class, $validityTime->fixed_starts_at);
|
||||
$this->assertInstanceOf(Carbon::class, $validityTime->fixed_expires_at);
|
||||
$this->assertInstanceOf(CatalogItem::class, $validityTime->catalogItems()->getRelated());
|
||||
$this->assertInstanceOf(AttributeOption::class, $validityTime->attributeOptions()->getRelated());
|
||||
$this->assertInstanceOf(
|
||||
TicketValidityGroup::class,
|
||||
$validityTime->ticketValidityGroups()->getRelated(),
|
||||
);
|
||||
}
|
||||
|
||||
public function test_it_exposes_supported_type_values(): void
|
||||
{
|
||||
$this->assertSame([
|
||||
'time_window',
|
||||
'fixed_window',
|
||||
], ValidityTimeType::values());
|
||||
}
|
||||
|
||||
public function test_fixed_window_is_valid_between_its_limits(): void
|
||||
{
|
||||
$validityTime = new ValidityTime([
|
||||
'type' => ValidityTimeType::FixedWindow,
|
||||
'fixed_starts_at' => '2026-08-20 10:00:00',
|
||||
'fixed_expires_at' => '2026-08-20 12:00:00',
|
||||
]);
|
||||
|
||||
$this->assertTrue($validityTime->isValid(at: Carbon::parse('2026-08-20 10:00:00')));
|
||||
$this->assertTrue($validityTime->isValid(at: Carbon::parse('2026-08-20 11:00:00')));
|
||||
$this->assertFalse($validityTime->isValid(at: Carbon::parse('2026-08-20 12:00:00')));
|
||||
}
|
||||
|
||||
public function test_time_window_is_valid_between_its_limits(): void
|
||||
{
|
||||
$validityTime = new ValidityTime([
|
||||
'type' => ValidityTimeType::TimeWindow,
|
||||
'start_time' => '11:00:00',
|
||||
'end_time' => '14:00:00',
|
||||
]);
|
||||
$this->assertTrue($validityTime->isValid(
|
||||
Carbon::parse('2026-08-20 12:00:00'),
|
||||
));
|
||||
$this->assertFalse($validityTime->isValid(
|
||||
Carbon::parse('2026-08-20 14:00:00'),
|
||||
));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user