ShipSparePartOrderRequestTest.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace Tests\Unit\Requests;
  3. use App\Http\Requests\ShipSparePartOrderRequest;
  4. use Illuminate\Support\Facades\Validator;
  5. use Tests\TestCase;
  6. class ShipSparePartOrderRequestTest extends TestCase
  7. {
  8. public function test_empty_data_fails(): void
  9. {
  10. $request = new ShipSparePartOrderRequest();
  11. $validator = Validator::make([], $request->rules());
  12. $this->assertTrue($validator->fails());
  13. }
  14. public function test_missing_quantity_fails(): void
  15. {
  16. $data = [
  17. 'note' => 'Отгрузка произведена',
  18. ];
  19. $request = new ShipSparePartOrderRequest();
  20. $validator = Validator::make($data, $request->rules());
  21. $this->assertTrue($validator->fails());
  22. $this->assertArrayHasKey('quantity', $validator->errors()->toArray());
  23. }
  24. public function test_missing_note_fails(): void
  25. {
  26. $data = [
  27. 'quantity' => 5,
  28. ];
  29. $request = new ShipSparePartOrderRequest();
  30. $validator = Validator::make($data, $request->rules());
  31. $this->assertTrue($validator->fails());
  32. $this->assertArrayHasKey('note', $validator->errors()->toArray());
  33. }
  34. public function test_quantity_zero_fails_min_rule(): void
  35. {
  36. $data = [
  37. 'quantity' => 0,
  38. 'note' => 'Отгрузка',
  39. ];
  40. $request = new ShipSparePartOrderRequest();
  41. $validator = Validator::make($data, $request->rules());
  42. $this->assertTrue($validator->fails());
  43. $this->assertArrayHasKey('quantity', $validator->errors()->toArray());
  44. }
  45. public function test_quantity_negative_fails_min_rule(): void
  46. {
  47. $data = [
  48. 'quantity' => -3,
  49. 'note' => 'Отгрузка',
  50. ];
  51. $request = new ShipSparePartOrderRequest();
  52. $validator = Validator::make($data, $request->rules());
  53. $this->assertTrue($validator->fails());
  54. $this->assertArrayHasKey('quantity', $validator->errors()->toArray());
  55. }
  56. public function test_quantity_must_be_integer(): void
  57. {
  58. $data = [
  59. 'quantity' => 'five',
  60. 'note' => 'Отгрузка',
  61. ];
  62. $request = new ShipSparePartOrderRequest();
  63. $validator = Validator::make($data, $request->rules());
  64. $this->assertTrue($validator->fails());
  65. $this->assertArrayHasKey('quantity', $validator->errors()->toArray());
  66. }
  67. public function test_note_must_be_string(): void
  68. {
  69. $data = [
  70. 'quantity' => 5,
  71. 'note' => ['not', 'a', 'string'],
  72. ];
  73. $request = new ShipSparePartOrderRequest();
  74. $validator = Validator::make($data, $request->rules());
  75. $this->assertTrue($validator->fails());
  76. $this->assertArrayHasKey('note', $validator->errors()->toArray());
  77. }
  78. public function test_valid_minimal_data_passes(): void
  79. {
  80. $data = [
  81. 'quantity' => 1,
  82. 'note' => 'test',
  83. ];
  84. $request = new ShipSparePartOrderRequest();
  85. $validator = Validator::make($data, $request->rules());
  86. $this->assertFalse($validator->fails());
  87. }
  88. public function test_valid_full_data_passes(): void
  89. {
  90. $data = [
  91. 'quantity' => 15,
  92. 'note' => 'Отгружено на объект ул. Ленина, 5 — партия № 2026/03',
  93. ];
  94. $request = new ShipSparePartOrderRequest();
  95. $validator = Validator::make($data, $request->rules());
  96. $this->assertFalse($validator->fails());
  97. }
  98. }