From b10f48e328f9f7fc675a3fcc35b162a44e1a54dc Mon Sep 17 00:00:00 2001 From: TomasVotruba Date: Sat, 2 Dec 2017 18:51:41 +0100 Subject: [PATCH] [YamlParser] move test NamedServiceToClassRector, allow config --- .../Symfony/NamedServiceToClassRector.php | 11 ++++++ .../NamedServiceToClassRectorTest.php | 34 +++++++++++++++++++ .../Source/config.yml | 2 ++ .../Source}/expected.some_services.yml | 0 .../Source}/some_services.yml | 0 .../tests/YamlRectorCollectorTest.php | 29 ---------------- .../Validator/RectorClassValidator.php | 10 ++++-- 7 files changed, 55 insertions(+), 31 deletions(-) create mode 100644 packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/NamedServiceToClassRectorTest.php create mode 100644 packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/Source/config.yml rename packages/YamlParser/tests/{YamlRectorCollectorSource => Rector/Contrib/Symfony/NamedServiceToClassRector/Source}/expected.some_services.yml (100%) rename packages/YamlParser/tests/{YamlRectorCollectorSource => Rector/Contrib/Symfony/NamedServiceToClassRector/Source}/some_services.yml (100%) delete mode 100644 packages/YamlParser/tests/YamlRectorCollectorTest.php diff --git a/packages/YamlParser/src/Rector/Contrib/Symfony/NamedServiceToClassRector.php b/packages/YamlParser/src/Rector/Contrib/Symfony/NamedServiceToClassRector.php index 65f7691c098..49506955d10 100644 --- a/packages/YamlParser/src/Rector/Contrib/Symfony/NamedServiceToClassRector.php +++ b/packages/YamlParser/src/Rector/Contrib/Symfony/NamedServiceToClassRector.php @@ -7,6 +7,17 @@ use Rector\YamlParser\Contract\Rector\YamlRectorInterface; /** * Turn custom names of services, * to class based ones. + * + * Before: + * + * services: + * some_class: + * class: SomeClass + * + * After: + * + * services: + * SomeClass: ~ */ final class NamedServiceToClassRector implements YamlRectorInterface { diff --git a/packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/NamedServiceToClassRectorTest.php b/packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/NamedServiceToClassRectorTest.php new file mode 100644 index 00000000000..a2e0acc07f0 --- /dev/null +++ b/packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/NamedServiceToClassRectorTest.php @@ -0,0 +1,34 @@ +createWithConfig($this->provideConfig()); + $this->yamlRectorCollector = $container->get(YamlRectorCollector::class); + } + + public function test(): void + { + $this->assertStringEqualsFile( + __DIR__ . '/Source/expected.some_services.yml', + $this->yamlRectorCollector->processFile(__DIR__ . '/Source/some_services.yml') + ); + } + + private function provideConfig(): string + { + return __DIR__ . '/Source/config.yml'; + } +} diff --git a/packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/Source/config.yml b/packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/Source/config.yml new file mode 100644 index 00000000000..0000f6ba551 --- /dev/null +++ b/packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/Source/config.yml @@ -0,0 +1,2 @@ +rectors: + Rector\YamlParser\Rector\Contrib\Symfony\NamedServiceToClassRector: ~ diff --git a/packages/YamlParser/tests/YamlRectorCollectorSource/expected.some_services.yml b/packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/Source/expected.some_services.yml similarity index 100% rename from packages/YamlParser/tests/YamlRectorCollectorSource/expected.some_services.yml rename to packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/Source/expected.some_services.yml diff --git a/packages/YamlParser/tests/YamlRectorCollectorSource/some_services.yml b/packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/Source/some_services.yml similarity index 100% rename from packages/YamlParser/tests/YamlRectorCollectorSource/some_services.yml rename to packages/YamlParser/tests/Rector/Contrib/Symfony/NamedServiceToClassRector/Source/some_services.yml diff --git a/packages/YamlParser/tests/YamlRectorCollectorTest.php b/packages/YamlParser/tests/YamlRectorCollectorTest.php deleted file mode 100644 index 6f0b685bd91..00000000000 --- a/packages/YamlParser/tests/YamlRectorCollectorTest.php +++ /dev/null @@ -1,29 +0,0 @@ -yamlRectorCollector = $this->container->get(YamlRectorCollector::class); - } - - public function testSymfonyServiceRename(): void - { - $file = __DIR__ . '/YamlRectorCollectorSource/some_services.yml'; - - $this->assertStringEqualsFile( - __DIR__ . '/YamlRectorCollectorSource/expected.some_services.yml', - $this->yamlRectorCollector->processFile($file) - ); - } -} diff --git a/src/Configuration/Validator/RectorClassValidator.php b/src/Configuration/Validator/RectorClassValidator.php index 690ef3beb26..a37f86ed3c8 100644 --- a/src/Configuration/Validator/RectorClassValidator.php +++ b/src/Configuration/Validator/RectorClassValidator.php @@ -4,6 +4,7 @@ namespace Rector\Configuration\Validator; use Rector\Contract\Rector\RectorInterface; use Rector\Exception\Validator\InvalidRectorClassException; +use Rector\YamlParser\Contract\Rector\YamlRectorInterface; final class RectorClassValidator { @@ -36,10 +37,15 @@ final class RectorClassValidator return; } + if (is_a($rector, YamlRectorInterface::class, true)) { + return; + } + throw new InvalidRectorClassException(sprintf( - 'Rector "%s" is not supported. Use class that implements "%s".', + 'Rector "%s" is not supported. Use class that implements "%s" or "%s".', $rector, - RectorInterface::class + RectorInterface::class, + YamlRectorInterface::class )); } }