| Total Lines | 51 | 
| Code Lines | 33 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php | ||
| 190 | public function testMoreComplexEmbeddedRule(): void | ||
| 191 |     { | ||
| 192 | $dataSet = new ObjectDataSet(new Chart()); | ||
| 193 | $secondEmbeddedRules = [ | ||
| 194 | 'x' => [new Number(min: -10, max: 10)], | ||
| 195 | 'y' => [new Number(min: -10, max: 10)], | ||
| 196 | ]; | ||
| 197 | $firstEmbeddedRules = [ | ||
| 198 | 'coordinates' => new Nested( | ||
| 199 | $secondEmbeddedRules, | ||
| 200 | requirePropertyPath: true, | ||
| 201 | noPropertyPathMessage: 'Custom message 4.' | ||
| 202 | ), | ||
| 203 | 'rgb' => [ | ||
| 204 | new Count(exactly: 3), | ||
| 205 | new Each( | ||
| 206 | [new Number(min: 0, max: 255)], | ||
| 207 | incorrectInputMessage: 'Custom message 5.', | ||
| 208 | ), | ||
| 209 | ], | ||
| 210 | ]; | ||
| 211 | |||
| 212 | $actualRules = $this->toNestedArray($dataSet->getRules()); | ||
| 213 | |||
| 214 | // check Chart structure has right structure | ||
| 215 | $this->assertIsArray($actualRules); | ||
| 216 |         $this->assertArrayHasKey('points', $actualRules); | ||
| 217 | $this->assertCount(1, $actualRules = $this->toArray($actualRules['points'])); | ||
| 218 | $this->assertInstanceOf(Each::class, $actualRules[0]); | ||
| 219 | |||
| 220 | // check Chart structure has right structure | ||
| 221 | $actualFirstEmbeddedRules = $this->toArray($actualRules[0]->getRules()); | ||
| 222 | $this->assertIsArray($actualFirstEmbeddedRules); | ||
| 223 | $this->assertCount(1, $actualFirstEmbeddedRules); | ||
| 224 | $this->assertInstanceOf(Nested::class, $actualFirstEmbeddedRules[0]); | ||
| 225 | |||
| 226 | // check Point structure has right structure | ||
| 227 | $innerRules = $this->toArray($actualFirstEmbeddedRules[0]->getRules()); | ||
| 228 | // rgb has usual structure. We can check as is | ||
| 229 | $this->assertEquals($firstEmbeddedRules['rgb'], $this->toArray($innerRules['rgb'])); | ||
| 230 | |||
| 231 | // coordinates has embedded structure, so we need to unpack rules before check it | ||
| 232 | $this->assertIsArray($innerRules = $this->toArray($innerRules['coordinates'])); | ||
| 233 | $this->assertCount(1, $innerRules); | ||
| 234 | $this->assertInstanceOf(Each::class, $innerRules[0]); | ||
| 235 | |||
| 236 | $secondInnerRules = $this->toArray($innerRules[0]->getRules()); | ||
| 237 | $this->assertIsArray($secondInnerRules); | ||
| 238 | $this->assertCount(1, $secondInnerRules); | ||
| 239 | $this->assertInstanceOf(Nested::class, $secondInnerRules[0]); | ||
| 240 | $this->assertEquals($secondEmbeddedRules, $this->toNestedArray($secondInnerRules[0]->getRules())); | ||
| 241 | } | ||
| 258 |