Browse Source

Merge pull request #609 from markymarrow/required_array_overwritten

Required array overwritten
Shalvah 2 years ago
parent
commit
07c003e66f
2 changed files with 17 additions and 0 deletions
  1. 4 0
      src/Extracting/ParsesValidationRules.php
  2. 13 0
      tests/Unit/ValidationRuleParsingTest.php

+ 4 - 0
src/Extracting/ParsesValidationRules.php

@@ -658,6 +658,10 @@ trait ParsesValidationRules
                         $parentPath = substr($parentPath, 0, -2);
                         $normalisedParentPath = str_replace('.*.', '[].', $parentPath);
 
+                        if (!empty($results[$normalisedParentPath])) {
+                            break;
+                        }
+
                         $type = 'object[]';
                         $example = [[]];
                     } else {

+ 13 - 0
tests/Unit/ValidationRuleParsingTest.php

@@ -438,6 +438,19 @@ class ValidationRuleParsingTest extends BaseLaravelTest
             ];
         }
     }
+
+    /** @test */
+    public function child_does_not_overwrite_parent_status()
+    {
+        $ruleset = [
+            'array_param' => 'array|required',
+            'array_param.*' => 'array|required',
+            'array_param.*.an_item' => 'string|required',
+        ];
+        $results = $this->strategy->parse($ruleset);
+        $this->assertCount(2, $results);
+        $this->assertEquals(true, $results['array_param']['required']);
+    }
 }
 
 class DummyValidationRule implements \Illuminate\Contracts\Validation\Rule