| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- namespace Tests\Unit\Models;
- use App\Models\Reclamation;
- use App\Models\Reservation;
- use App\Models\SparePart;
- use App\Models\SparePartOrder;
- use Illuminate\Database\Eloquent\Relations\BelongsTo;
- use Illuminate\Foundation\Testing\RefreshDatabase;
- use Tests\TestCase;
- class ReservationTest extends TestCase
- {
- use RefreshDatabase;
- protected $seed = true;
- public function test_status_constants_defined(): void
- {
- $this->assertEquals('active', Reservation::STATUS_ACTIVE);
- $this->assertEquals('issued', Reservation::STATUS_ISSUED);
- $this->assertEquals('cancelled', Reservation::STATUS_CANCELLED);
- }
- public function test_is_active_returns_true_for_active(): void
- {
- $reservation = Reservation::factory()->active()->create();
- $this->assertTrue($reservation->isActive());
- }
- public function test_is_issued_returns_true_for_issued(): void
- {
- $reservation = Reservation::factory()->issued()->create();
- $this->assertTrue($reservation->isIssued());
- }
- public function test_is_cancelled_returns_true_for_cancelled(): void
- {
- $reservation = Reservation::factory()->cancelled()->create();
- $this->assertTrue($reservation->isCancelled());
- }
- public function test_scope_active_filters_correctly(): void
- {
- $sparePart = SparePart::factory()->create();
- $order = SparePartOrder::factory()->inStock()->forSparePart($sparePart)->create();
- Reservation::factory()->active()->forSparePart($sparePart)->fromOrder($order)->create();
- Reservation::factory()->cancelled()->forSparePart($sparePart)->fromOrder($order)->create();
- $activeCount = Reservation::active()->forSparePart($sparePart->id)->count();
- $this->assertEquals(1, $activeCount);
- }
- public function test_scope_for_spare_part_filters_correctly(): void
- {
- $sparePart1 = SparePart::factory()->create();
- $sparePart2 = SparePart::factory()->create();
- $order1 = SparePartOrder::factory()->inStock()->forSparePart($sparePart1)->create();
- $order2 = SparePartOrder::factory()->inStock()->forSparePart($sparePart2)->create();
- Reservation::factory()->forSparePart($sparePart1)->fromOrder($order1)->count(2)->create();
- Reservation::factory()->forSparePart($sparePart2)->fromOrder($order2)->create();
- $count = Reservation::forSparePart($sparePart1->id)->count();
- $this->assertEquals(2, $count);
- }
- public function test_scope_for_reclamation_filters_correctly(): void
- {
- $reclamation1 = Reclamation::factory()->create();
- $reclamation2 = Reclamation::factory()->create();
- Reservation::factory()->forReclamation($reclamation1)->count(3)->create();
- Reservation::factory()->forReclamation($reclamation2)->create();
- $count = Reservation::forReclamation($reclamation1->id)->count();
- $this->assertEquals(3, $count);
- }
- public function test_relations_exist(): void
- {
- $reservation = Reservation::factory()->create();
- $this->assertInstanceOf(BelongsTo::class, $reservation->sparePart());
- $this->assertInstanceOf(BelongsTo::class, $reservation->sparePartOrder());
- $this->assertInstanceOf(BelongsTo::class, $reservation->reclamation());
- }
- }
|