rules()); $this->assertFalse($validator->fails()); } public function test_null_values_pass(): void { $data = [ 'name' => null, 'quantity' => null, 'with_documents' => null, ]; $request = new StoreReclamationDetailsRequest(); $validator = Validator::make($data, $request->rules()); $this->assertFalse($validator->fails()); } public function test_name_as_array_of_strings_passes(): void { $data = [ 'name' => ['Деталь А', 'Деталь Б', null], ]; $request = new StoreReclamationDetailsRequest(); $validator = Validator::make($data, $request->rules()); $this->assertFalse($validator->fails()); } public function test_name_as_non_array_fails(): void { $data = [ 'name' => 'not-an-array', ]; $request = new StoreReclamationDetailsRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('name', $validator->errors()->toArray()); } public function test_quantity_as_array_of_strings_passes(): void { $data = [ 'quantity' => ['5', '10', null], ]; $request = new StoreReclamationDetailsRequest(); $validator = Validator::make($data, $request->rules()); $this->assertFalse($validator->fails()); } public function test_quantity_as_non_array_fails(): void { $data = [ 'quantity' => 'not-an-array', ]; $request = new StoreReclamationDetailsRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('quantity', $validator->errors()->toArray()); } public function test_with_documents_as_array_of_booleans_passes(): void { $data = [ 'with_documents' => [true, false, null], ]; $request = new StoreReclamationDetailsRequest(); $validator = Validator::make($data, $request->rules()); $this->assertFalse($validator->fails()); } public function test_with_documents_as_non_array_fails(): void { $data = [ 'with_documents' => 'not-an-array', ]; $request = new StoreReclamationDetailsRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); $this->assertArrayHasKey('with_documents', $validator->errors()->toArray()); } public function test_with_documents_items_must_be_boolean(): void { $data = [ 'with_documents' => ['not-boolean', 'also-not-boolean'], ]; $request = new StoreReclamationDetailsRequest(); $validator = Validator::make($data, $request->rules()); $this->assertTrue($validator->fails()); } public function test_complete_valid_data_passes(): void { $data = [ 'name' => ['Шарнир', 'Болт М8'], 'quantity' => ['2', '10'], 'with_documents' => [true, false], ]; $request = new StoreReclamationDetailsRequest(); $validator = Validator::make($data, $request->rules()); $this->assertFalse($validator->fails()); } }