ScheduleTest.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace Tests\Unit\Models;
  3. use App\Models\Dictionary\Area;
  4. use App\Models\Dictionary\District;
  5. use App\Models\Schedule;
  6. use App\Models\User;
  7. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  8. use Illuminate\Foundation\Testing\RefreshDatabase;
  9. use Tests\TestCase;
  10. class ScheduleTest extends TestCase
  11. {
  12. use RefreshDatabase;
  13. protected $seed = true;
  14. private function makeSchedule(array $attrs = []): Schedule
  15. {
  16. $brigadier = User::factory()->create();
  17. return Schedule::factory()->create(array_merge(['brigadier_id' => $brigadier->id], $attrs));
  18. }
  19. public function test_belongs_to_district(): void
  20. {
  21. $schedule = $this->makeSchedule();
  22. $this->assertInstanceOf(District::class, $schedule->district);
  23. }
  24. public function test_belongs_to_area(): void
  25. {
  26. $schedule = $this->makeSchedule();
  27. $this->assertInstanceOf(Area::class, $schedule->area);
  28. }
  29. public function test_brigadier_belongs_to_user(): void
  30. {
  31. $brigadier = User::factory()->create();
  32. $schedule = Schedule::factory()->create(['brigadier_id' => $brigadier->id]);
  33. $this->assertInstanceOf(User::class, $schedule->brigadier);
  34. $this->assertEquals($brigadier->id, $schedule->brigadier->id);
  35. }
  36. public function test_relations_exist(): void
  37. {
  38. $schedule = $this->makeSchedule();
  39. $this->assertInstanceOf(BelongsTo::class, $schedule->district());
  40. $this->assertInstanceOf(BelongsTo::class, $schedule->area());
  41. $this->assertInstanceOf(BelongsTo::class, $schedule->brigadier());
  42. }
  43. public function test_can_create_schedule(): void
  44. {
  45. $schedule = $this->makeSchedule();
  46. $this->assertNotNull($schedule->id);
  47. $this->assertDatabaseHas('schedules', ['id' => $schedule->id]);
  48. }
  49. }