StoreReclamationDetailsRequestTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. namespace Tests\Unit\Requests;
  3. use App\Http\Requests\StoreReclamationDetailsRequest;
  4. use Illuminate\Support\Facades\Validator;
  5. use Tests\TestCase;
  6. class StoreReclamationDetailsRequestTest extends TestCase
  7. {
  8. public function test_empty_data_passes_because_all_fields_are_nullable(): void
  9. {
  10. $request = new StoreReclamationDetailsRequest();
  11. $validator = Validator::make([], $request->rules());
  12. $this->assertFalse($validator->fails());
  13. }
  14. public function test_null_values_pass(): void
  15. {
  16. $data = [
  17. 'name' => null,
  18. 'quantity' => null,
  19. 'with_documents' => null,
  20. ];
  21. $request = new StoreReclamationDetailsRequest();
  22. $validator = Validator::make($data, $request->rules());
  23. $this->assertFalse($validator->fails());
  24. }
  25. public function test_name_as_array_of_strings_passes(): void
  26. {
  27. $data = [
  28. 'name' => ['Деталь А', 'Деталь Б', null],
  29. ];
  30. $request = new StoreReclamationDetailsRequest();
  31. $validator = Validator::make($data, $request->rules());
  32. $this->assertFalse($validator->fails());
  33. }
  34. public function test_name_as_non_array_fails(): void
  35. {
  36. $data = [
  37. 'name' => 'not-an-array',
  38. ];
  39. $request = new StoreReclamationDetailsRequest();
  40. $validator = Validator::make($data, $request->rules());
  41. $this->assertTrue($validator->fails());
  42. $this->assertArrayHasKey('name', $validator->errors()->toArray());
  43. }
  44. public function test_quantity_as_array_of_strings_passes(): void
  45. {
  46. $data = [
  47. 'quantity' => ['5', '10', null],
  48. ];
  49. $request = new StoreReclamationDetailsRequest();
  50. $validator = Validator::make($data, $request->rules());
  51. $this->assertFalse($validator->fails());
  52. }
  53. public function test_quantity_as_non_array_fails(): void
  54. {
  55. $data = [
  56. 'quantity' => 'not-an-array',
  57. ];
  58. $request = new StoreReclamationDetailsRequest();
  59. $validator = Validator::make($data, $request->rules());
  60. $this->assertTrue($validator->fails());
  61. $this->assertArrayHasKey('quantity', $validator->errors()->toArray());
  62. }
  63. public function test_with_documents_as_array_of_booleans_passes(): void
  64. {
  65. $data = [
  66. 'with_documents' => [true, false, null],
  67. ];
  68. $request = new StoreReclamationDetailsRequest();
  69. $validator = Validator::make($data, $request->rules());
  70. $this->assertFalse($validator->fails());
  71. }
  72. public function test_with_documents_as_non_array_fails(): void
  73. {
  74. $data = [
  75. 'with_documents' => 'not-an-array',
  76. ];
  77. $request = new StoreReclamationDetailsRequest();
  78. $validator = Validator::make($data, $request->rules());
  79. $this->assertTrue($validator->fails());
  80. $this->assertArrayHasKey('with_documents', $validator->errors()->toArray());
  81. }
  82. public function test_with_documents_items_must_be_boolean(): void
  83. {
  84. $data = [
  85. 'with_documents' => ['not-boolean', 'also-not-boolean'],
  86. ];
  87. $request = new StoreReclamationDetailsRequest();
  88. $validator = Validator::make($data, $request->rules());
  89. $this->assertTrue($validator->fails());
  90. }
  91. public function test_complete_valid_data_passes(): void
  92. {
  93. $data = [
  94. 'name' => ['Шарнир', 'Болт М8'],
  95. 'quantity' => ['2', '10'],
  96. 'with_documents' => [true, false],
  97. ];
  98. $request = new StoreReclamationDetailsRequest();
  99. $validator = Validator::make($data, $request->rules());
  100. $this->assertFalse($validator->fails());
  101. }
  102. }