diff --git a/composer.json b/composer.json index d8642057..502b23c2 100644 --- a/composer.json +++ b/composer.json @@ -8,9 +8,9 @@ }, "require-dev": { "rector/rector-src": "dev-main", - "phpunit/phpunit": "^11.4", - "phpstan/phpstan": "^2.0", - "symplify/easy-coding-standard": "^12.3", + "phpunit/phpunit": "^11.5", + "phpstan/phpstan": "^2.1", + "phpecs/phpecs": "^2.0", "phpstan/extension-installer": "^1.4", "symplify/vendor-patches": "^11.3", "tracy/tracy": "^2.10", diff --git a/rules-tests/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector/Fixture/include_str_contains.php.inc b/rules-tests/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector/Fixture/include_str_contains.php.inc new file mode 100644 index 00000000..dadc55ca --- /dev/null +++ b/rules-tests/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector/Fixture/include_str_contains.php.inc @@ -0,0 +1,31 @@ +assertTrue(str_contains('haystack', 'needle')); + + $this->assertFalse(str_contains('haystack 2', 'needle 2')); + } +} + +?> +----- +assertStringContainsString('needle', 'haystack'); + + $this->assertStringNotContainsString('needle 2', 'haystack 2'); + } +} + +?> diff --git a/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php b/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php index 824ea245..0b2d8604 100644 --- a/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php +++ b/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php @@ -39,6 +39,7 @@ final class AssertTrueFalseToSpecificMethodRector extends AbstractRector 'is_writable' => ['is_writable', 'assertIsWritable', 'assertNotIsWritable'], 'is_nan' => ['is_nan', 'assertNan', ''], 'is_a' => ['is_a', 'assertInstanceOf', 'assertNotInstanceOf'], + 'str_contains' => ['str_contains', 'assertStringContainsString', 'assertStringNotContainsString'], ]; public function __construct( @@ -214,7 +215,8 @@ private function buildNewArguments( return [...$funcCallOrEmptyNodeArgs, ...$oldArguments]; } - if ($funcCallOrEmptyNodeName === 'is_a') { + if (in_array($funcCallOrEmptyNodeName, ['is_a', 'str_contains'], true)) { + // flip arguments $newArgs = [$funcCallOrEmptyNodeArgs[1], $funcCallOrEmptyNodeArgs[0]]; return [...$newArgs, ...$oldArguments];