diff --git a/src/Action/CreateListOfFilesToGenerate.php b/src/Action/CreateListOfFilesToGenerate.php index c86a9be..263bf6d 100644 --- a/src/Action/CreateListOfFilesToGenerate.php +++ b/src/Action/CreateListOfFilesToGenerate.php @@ -165,7 +165,7 @@ final class CreateListOfFilesToGenerate return false; } - return strtoupper($webServer) === WebServer::CADDY->name; + return strtoupper($webServer) === WebServer::Caddy->value; } private static function isDocker(array $configurationData): bool @@ -188,6 +188,6 @@ final class CreateListOfFilesToGenerate return false; } - return strtoupper($webServer) === WebServer::NGINX->name; + return strtoupper($webServer) === WebServer::Nginx->value; } } diff --git a/src/Enum/WebServer.php b/src/Enum/WebServer.php index bd11b20..dcf7e00 100644 --- a/src/Enum/WebServer.php +++ b/src/Enum/WebServer.php @@ -4,8 +4,8 @@ declare(strict_types=1); namespace App\Enum; -enum WebServer +enum WebServer: string { - case CADDY; - case NGINX; + case Caddy = 'caddy'; + case Nginx = 'nginx'; } diff --git a/tests/Kernel/Validator/ConfigurationValidatorTest.php b/tests/Kernel/Validator/ConfigurationValidatorTest.php index 4f511e6..b8ec1b4 100644 --- a/tests/Kernel/Validator/ConfigurationValidatorTest.php +++ b/tests/Kernel/Validator/ConfigurationValidatorTest.php @@ -3,6 +3,7 @@ namespace App\Tests; use App\DataTransferObject\Config; +use App\Enum\WebServer; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Component\Serializer\Encoder\JsonEncoder; use Symfony\Component\Serializer\Exception\NotNormalizableValueException; @@ -78,6 +79,38 @@ class ConfigurationValidatorTest extends KernelTestCase ); } + /** + * @dataProvider validWebServerTypesProvider + */ + public function testTheWebServerTypeIsValid( + string $webServer, + int $expectedViolationCount, + ): void + { + $configurationData = [ + 'language' => 'php', + 'name' => 'test', + 'type' => 'drupal', + 'web' => ['type' => $webServer], + ]; + + $configurationDataDto = $this->createConfigurationDTO($configurationData); + + $violations = $this->validator->validate($configurationDataDto); + + self::assertCount( + expectedCount: $expectedViolationCount, + haystack: $violations, + ); + + if ($expectedViolationCount > 0) { + self::assertSame( + actual: $webServer, + expected: $violations[0]->getInvalidValue(), + ); + } + } + public function projectLanguageProvider(): \Generator { return [ @@ -103,4 +136,13 @@ class ConfigurationValidatorTest extends KernelTestCase { return $this->serializer->deserialize(json_encode($configurationData), Config::class, 'json'); } + + public function validWebServerTypesProvider(): \Generator + { + return [ + yield 'caddy' => [WebServer::Caddy->value, 0], + yield 'invalid' => ['not-a-valid-web-server', 1], + yield 'nginx' => [WebServer::Nginx->value, 0], + ]; + } }