diff --git a/src/Rules/PHPUnit/AssertEqualsIsDiscouragedRule.php b/src/Rules/PHPUnit/AssertEqualsIsDiscouragedRule.php index c4c23887..ed6470e2 100644 --- a/src/Rules/PHPUnit/AssertEqualsIsDiscouragedRule.php +++ b/src/Rules/PHPUnit/AssertEqualsIsDiscouragedRule.php @@ -73,13 +73,7 @@ public function processNode(Node $node, Scope $scope): array ), )->identifier('phpunit.assertEquals') ->fixNode($node, static function (CallLike $node) use ($correctName) { - if ($node instanceof Node\Expr\MethodCall) { - $node->name = new Node\Identifier($correctName); - } - - if ($node instanceof Node\Expr\StaticCall) { - $node->name = new Node\Identifier($correctName); - } + $node->name = new Node\Identifier($correctName); return $node; }) diff --git a/src/Rules/PHPUnit/AssertSameBooleanExpectedRule.php b/src/Rules/PHPUnit/AssertSameBooleanExpectedRule.php index fd76f7c4..f185bdf7 100644 --- a/src/Rules/PHPUnit/AssertSameBooleanExpectedRule.php +++ b/src/Rules/PHPUnit/AssertSameBooleanExpectedRule.php @@ -47,17 +47,46 @@ public function processNode(Node $node, Scope $scope): array if ($expectedArgumentValue->name->toLowerString() === 'true') { return [ - RuleErrorBuilder::message('You should use assertTrue() instead of assertSame() when expecting "true"')->identifier('phpunit.assertTrue')->build(), + RuleErrorBuilder::message('You should use assertTrue() instead of assertSame() when expecting "true"') + ->identifier('phpunit.assertTrue') + ->fixNode($node, static function (CallLike $node) { + $node->name = new Node\Identifier('assertTrue'); + $node->args = self::rewriteArgs($node->args); + + return $node; + }) + ->build(), ]; } if ($expectedArgumentValue->name->toLowerString() === 'false') { return [ - RuleErrorBuilder::message('You should use assertFalse() instead of assertSame() when expecting "false"')->identifier('phpunit.assertFalse')->build(), + RuleErrorBuilder::message('You should use assertFalse() instead of assertSame() when expecting "false"') + ->identifier('phpunit.assertFalse') + ->fixNode($node, static function (CallLike $node) { + $node->name = new Node\Identifier('assertFalse'); + $node->args = self::rewriteArgs($node->args); + + return $node; + }) + ->build(), ]; } return []; } + /** + * @param array $args + * @return list + */ + private static function rewriteArgs(array $args): array + { + $newArgs = []; + for ($i = 1; $i < count($args); $i++) { + $newArgs[] = $args[$i]; + } + return $newArgs; + } + } diff --git a/tests/Rules/PHPUnit/AssertSameBooleanExpectedRuleTest.php b/tests/Rules/PHPUnit/AssertSameBooleanExpectedRuleTest.php index 1fe31df9..6dacd685 100644 --- a/tests/Rules/PHPUnit/AssertSameBooleanExpectedRuleTest.php +++ b/tests/Rules/PHPUnit/AssertSameBooleanExpectedRuleTest.php @@ -42,6 +42,11 @@ public function testRule(): void ]); } + public function testFix(): void + { + $this->fix(__DIR__ . '/data/assert-same-boolean-expected-fixable.php', __DIR__ . '/data/assert-same-boolean-expected-fixable.php.fixed'); + } + /** * @return string[] */ diff --git a/tests/Rules/PHPUnit/data/assert-same-boolean-expected-fixable.php b/tests/Rules/PHPUnit/data/assert-same-boolean-expected-fixable.php new file mode 100644 index 00000000..5d5a3ba4 --- /dev/null +++ b/tests/Rules/PHPUnit/data/assert-same-boolean-expected-fixable.php @@ -0,0 +1,21 @@ +assertSame(true, $this->returnBool()); + self::assertSame(false, $this->returnBool()); + } + +} diff --git a/tests/Rules/PHPUnit/data/assert-same-boolean-expected-fixable.php.fixed b/tests/Rules/PHPUnit/data/assert-same-boolean-expected-fixable.php.fixed new file mode 100644 index 00000000..d0bb802a --- /dev/null +++ b/tests/Rules/PHPUnit/data/assert-same-boolean-expected-fixable.php.fixed @@ -0,0 +1,21 @@ +assertTrue($this->returnBool()); + self::assertFalse($this->returnBool()); + } + +}