SparePartOrderShipmentTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace Tests\Unit\Models;
  3. use App\Models\Reclamation;
  4. use App\Models\SparePartOrder;
  5. use App\Models\SparePartOrderShipment;
  6. use App\Models\User;
  7. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  8. use Illuminate\Foundation\Testing\RefreshDatabase;
  9. use Illuminate\Support\Facades\DB;
  10. use Tests\TestCase;
  11. class SparePartOrderShipmentTest extends TestCase
  12. {
  13. use RefreshDatabase;
  14. protected $seed = true;
  15. public function test_can_create_shipment(): void
  16. {
  17. $sparePartOrder = SparePartOrder::factory()->inStock()->create();
  18. $id = DB::table('spare_part_order_shipments')->insertGetId([
  19. 'spare_part_order_id' => $sparePartOrder->id,
  20. 'quantity' => 5,
  21. 'note' => 'Test shipment',
  22. 'reclamation_id' => null,
  23. 'user_id' => null,
  24. 'is_automatic' => false,
  25. 'created_at' => now(),
  26. 'updated_at' => now(),
  27. ]);
  28. $shipment = SparePartOrderShipment::find($id);
  29. $this->assertNotNull($shipment);
  30. $this->assertEquals($sparePartOrder->id, $shipment->spare_part_order_id);
  31. }
  32. public function test_casts_is_automatic_to_boolean(): void
  33. {
  34. $sparePartOrder = SparePartOrder::factory()->inStock()->create();
  35. $id = DB::table('spare_part_order_shipments')->insertGetId([
  36. 'spare_part_order_id' => $sparePartOrder->id,
  37. 'quantity' => 3,
  38. 'is_automatic' => true,
  39. 'created_at' => now(),
  40. 'updated_at' => now(),
  41. ]);
  42. $shipment = SparePartOrderShipment::find($id);
  43. $this->assertIsBool($shipment->is_automatic);
  44. $this->assertTrue($shipment->is_automatic);
  45. }
  46. public function test_casts_quantity_to_integer(): void
  47. {
  48. $sparePartOrder = SparePartOrder::factory()->inStock()->create();
  49. $id = DB::table('spare_part_order_shipments')->insertGetId([
  50. 'spare_part_order_id' => $sparePartOrder->id,
  51. 'quantity' => 7,
  52. 'is_automatic' => false,
  53. 'created_at' => now(),
  54. 'updated_at' => now(),
  55. ]);
  56. $shipment = SparePartOrderShipment::find($id);
  57. $this->assertIsInt($shipment->quantity);
  58. $this->assertEquals(7, $shipment->quantity);
  59. }
  60. public function test_relations_exist(): void
  61. {
  62. $sparePartOrder = SparePartOrder::factory()->inStock()->create();
  63. $id = DB::table('spare_part_order_shipments')->insertGetId([
  64. 'spare_part_order_id' => $sparePartOrder->id,
  65. 'quantity' => 1,
  66. 'is_automatic' => false,
  67. 'created_at' => now(),
  68. 'updated_at' => now(),
  69. ]);
  70. $shipment = SparePartOrderShipment::find($id);
  71. $this->assertInstanceOf(BelongsTo::class, $shipment->sparePartOrder());
  72. $this->assertInstanceOf(BelongsTo::class, $shipment->reclamation());
  73. $this->assertInstanceOf(BelongsTo::class, $shipment->user());
  74. }
  75. public function test_spare_part_order_relation_returns_correct_model(): void
  76. {
  77. $sparePartOrder = SparePartOrder::factory()->inStock()->create();
  78. $id = DB::table('spare_part_order_shipments')->insertGetId([
  79. 'spare_part_order_id' => $sparePartOrder->id,
  80. 'quantity' => 2,
  81. 'is_automatic' => false,
  82. 'created_at' => now(),
  83. 'updated_at' => now(),
  84. ]);
  85. $shipment = SparePartOrderShipment::find($id);
  86. $this->assertInstanceOf(SparePartOrder::class, $shipment->sparePartOrder);
  87. $this->assertEquals($sparePartOrder->id, $shipment->sparePartOrder->id);
  88. }
  89. }