From 2e3c7cc2336c94451e7979540f5adaaf97e78e19 Mon Sep 17 00:00:00 2001 From: TavoNiievez Date: Sun, 6 Feb 2022 09:59:09 -0500 Subject: [PATCH 1/6] Update Codeception interfaces --- composer.json | 2 +- readme.md | 2 +- src/Codeception/Module/Symfony.php | 5 +---- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 0d2d5a5..4c33047 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "php": "^7.4 | ^8.0", "ext-json": "*", "codeception/lib-innerbrowser": "^2.0 | *@dev", - "codeception/codeception": "^5.0.0-alpha1" + "codeception/codeception": "dev-5.0-interfaces as 5.0.x-dev" }, "require-dev": { "codeception/module-asserts": "^2.0 | *@dev", diff --git a/readme.md b/readme.md index 679e944..26b930c 100644 --- a/readme.md +++ b/readme.md @@ -10,7 +10,7 @@ A Codeception module for Symfony framework. ## Requirements * `Symfony 4.4` or higher. -* `PHP 7.4` or higher. +* `PHP 8.0` or higher. ## Installation diff --git a/src/Codeception/Module/Symfony.php b/src/Codeception/Module/Symfony.php index 164e58b..dc06caf 100644 --- a/src/Codeception/Module/Symfony.php +++ b/src/Codeception/Module/Symfony.php @@ -152,10 +152,7 @@ class Symfony extends Framework implements DoctrineProvider, PartedModule */ public ?AbstractBrowser $client = null; - /** - * @var array - */ - public $config = [ + public array $config = [ 'app_path' => 'app', 'kernel_class' => 'App\Kernel', 'environment' => 'test', From 952a350e6c350496b68bb4e92d518077a21373f6 Mon Sep 17 00:00:00 2001 From: TavoNiievez Date: Sun, 6 Feb 2022 10:34:30 -0500 Subject: [PATCH 2/6] Reformat code --- src/Codeception/Lib/Connector/Symfony.php | 15 +++++++++------ src/Codeception/Module/Symfony.php | 2 +- .../Module/Symfony/ConsoleAssertionsTrait.php | 4 ++-- .../Module/Symfony/DoctrineAssertionsTrait.php | 10 +++++----- .../Module/Symfony/EventsAssertionsTrait.php | 4 ++-- .../Module/Symfony/FormAssertionsTrait.php | 2 +- .../Module/Symfony/RouterAssertionsTrait.php | 2 +- .../Module/Symfony/SessionAssertionsTrait.php | 7 +++---- .../Module/Symfony/TwigAssertionsTrait.php | 8 ++++---- 9 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/Codeception/Lib/Connector/Symfony.php b/src/Codeception/Lib/Connector/Symfony.php index c71f1e6..557a943 100644 --- a/src/Codeception/Lib/Connector/Symfony.php +++ b/src/Codeception/Lib/Connector/Symfony.php @@ -5,6 +5,9 @@ namespace Codeception\Lib\Connector; use InvalidArgumentException; +use ReflectionClass; +use ReflectionMethod; +use ReflectionProperty; use Symfony\Bundle\FrameworkBundle\Test\TestContainer; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; @@ -28,9 +31,9 @@ class Symfony extends HttpKernelBrowser /** * Constructor. * - * @param Kernel $kernel A booted HttpKernel instance - * @param array $services An injected services - * @param bool $rebootable + * @param Kernel $kernel A booted HttpKernel instance + * @param array $services An injected services + * @param bool $rebootable */ public function __construct(Kernel $kernel, array $services = [], bool $rebootable = true) { @@ -133,17 +136,17 @@ private function persistDoctrineConnections(): void } if ($this->container instanceof TestContainer) { - $reflectedTestContainer = new \ReflectionMethod($this->container, 'getPublicContainer'); + $reflectedTestContainer = new ReflectionMethod($this->container, 'getPublicContainer'); $reflectedTestContainer->setAccessible(true); $publicContainer = $reflectedTestContainer->invoke($this->container); } else { $publicContainer = $this->container; } - $reflectedContainer = new \ReflectionClass($publicContainer); + $reflectedContainer = new ReflectionClass($publicContainer); $reflectionTarget = $reflectedContainer->hasProperty('parameters') ? $publicContainer : $publicContainer->getParameterBag(); - $reflectedParameters = new \ReflectionProperty($reflectionTarget, 'parameters'); + $reflectedParameters = new ReflectionProperty($reflectionTarget, 'parameters'); $reflectedParameters->setAccessible(true); $parameters = $reflectedParameters->getValue($reflectionTarget); unset($parameters['doctrine.connections']); diff --git a/src/Codeception/Module/Symfony.php b/src/Codeception/Module/Symfony.php index dc06caf..1d045f0 100644 --- a/src/Codeception/Module/Symfony.php +++ b/src/Codeception/Module/Symfony.php @@ -193,7 +193,7 @@ public function _initialize(): void $maxNestingLevel = 200; // Symfony may have very long nesting level $xdebugMaxLevelKey = 'xdebug.max_nesting_level'; if (ini_get($xdebugMaxLevelKey) < $maxNestingLevel) { - ini_set($xdebugMaxLevelKey, (string) $maxNestingLevel); + ini_set($xdebugMaxLevelKey, (string)$maxNestingLevel); } $this->kernel = new $this->kernelClass($this->config['environment'], $this->config['debug']); diff --git a/src/Codeception/Module/Symfony/ConsoleAssertionsTrait.php b/src/Codeception/Module/Symfony/ConsoleAssertionsTrait.php index 1aa9c36..d54e2bf 100644 --- a/src/Codeception/Module/Symfony/ConsoleAssertionsTrait.php +++ b/src/Codeception/Module/Symfony/ConsoleAssertionsTrait.php @@ -40,8 +40,8 @@ public function runSymfonyConsoleCommand(string $command, array $parameters = [] $this->assertSame( $expectedExitCode, $exitCode, - 'Command did not exit with code '.$expectedExitCode - .' but with '.$exitCode.': '.$output + 'Command did not exit with code ' . $expectedExitCode + . ' but with ' . $exitCode . ': ' . $output ); return $output; diff --git a/src/Codeception/Module/Symfony/DoctrineAssertionsTrait.php b/src/Codeception/Module/Symfony/DoctrineAssertionsTrait.php index 45b770d..2ea3606 100644 --- a/src/Codeception/Module/Symfony/DoctrineAssertionsTrait.php +++ b/src/Codeception/Module/Symfony/DoctrineAssertionsTrait.php @@ -25,8 +25,8 @@ trait DoctrineAssertionsTrait * $I->grabNumRecords('User::class', ['name' => 'davert']); * ``` * - * @param string $entityClass The entity class - * @param array $criteria Optional query criteria + * @param string $entityClass The entity class + * @param array $criteria Optional query criteria * @return int */ public function grabNumRecords(string $entityClass, array $criteria = []): int @@ -59,7 +59,7 @@ public function grabNumRecords(string $entityClass, array $criteria = []): int * @param object|string $mixed * @return \Doctrine\ORM\EntityRepository|null */ - public function grabRepository($mixed) + public function grabRepository($mixed): ?EntityRepository { $entityRepoClass = EntityRepository::class; $isNotARepo = function () use ($mixed): void { @@ -86,12 +86,12 @@ public function grabRepository($mixed) return $getRepo(); } - if (!is_string($mixed) || !class_exists($mixed) ) { + if (!is_string($mixed) || !class_exists($mixed)) { $isNotARepo(); return null; } - if (is_subclass_of($mixed, $entityRepoClass)){ + if (is_subclass_of($mixed, $entityRepoClass)) { return $getRepo(); } diff --git a/src/Codeception/Module/Symfony/EventsAssertionsTrait.php b/src/Codeception/Module/Symfony/EventsAssertionsTrait.php index f2b0b63..64eca66 100644 --- a/src/Codeception/Module/Symfony/EventsAssertionsTrait.php +++ b/src/Codeception/Module/Symfony/EventsAssertionsTrait.php @@ -125,7 +125,7 @@ protected function assertEventNotTriggered(Data $data, array $expected): void foreach ($expected as $expectedEvent) { $expectedEvent = is_object($expectedEvent) ? get_class($expectedEvent) : $expectedEvent; $this->assertFalse( - $this->eventWasTriggered($actual, (string) $expectedEvent), + $this->eventWasTriggered($actual, (string)$expectedEvent), "The '{$expectedEvent}' event triggered" ); } @@ -142,7 +142,7 @@ protected function assertEventTriggered(Data $data, array $expected): void foreach ($expected as $expectedEvent) { $expectedEvent = is_object($expectedEvent) ? get_class($expectedEvent) : $expectedEvent; $this->assertTrue( - $this->eventWasTriggered($actual, (string) $expectedEvent), + $this->eventWasTriggered($actual, (string)$expectedEvent), "The '{$expectedEvent}' event did not trigger" ); } diff --git a/src/Codeception/Module/Symfony/FormAssertionsTrait.php b/src/Codeception/Module/Symfony/FormAssertionsTrait.php index 919d18a..ec84212 100644 --- a/src/Codeception/Module/Symfony/FormAssertionsTrait.php +++ b/src/Codeception/Module/Symfony/FormAssertionsTrait.php @@ -24,7 +24,7 @@ public function dontSeeFormErrors(): void { $formCollector = $this->grabFormCollector(__FUNCTION__); - $errors = (int) $formCollector->getData()->offsetGet('nb_errors'); + $errors = (int)$formCollector->getData()->offsetGet('nb_errors'); $this->assertSame( 0, diff --git a/src/Codeception/Module/Symfony/RouterAssertionsTrait.php b/src/Codeception/Module/Symfony/RouterAssertionsTrait.php index e477b82..4ca8032 100644 --- a/src/Codeception/Module/Symfony/RouterAssertionsTrait.php +++ b/src/Codeception/Module/Symfony/RouterAssertionsTrait.php @@ -166,7 +166,7 @@ public function seeInCurrentRoute(string $routeName): void $uri = explode('?', $this->grabFromCurrentUrl())[0]; $matchedRouteName = ''; try { - $matchedRouteName = (string) $router->match($uri)['_route']; + $matchedRouteName = (string)$router->match($uri)['_route']; } catch (ResourceNotFoundException $e) { $this->fail(sprintf('The "%s" url does not match with any route', $uri)); } diff --git a/src/Codeception/Module/Symfony/SessionAssertionsTrait.php b/src/Codeception/Module/Symfony/SessionAssertionsTrait.php index 8fdadbb..4c3bc19 100644 --- a/src/Codeception/Module/Symfony/SessionAssertionsTrait.php +++ b/src/Codeception/Module/Symfony/SessionAssertionsTrait.php @@ -44,9 +44,9 @@ public function amLoggedInAs(UserInterface $user, string $firewallName = 'main', } if ($firewallContext) { - $session->set('_security_'.$firewallContext, serialize($token)); + $session->set('_security_' . $firewallContext, serialize($token)); } else { - $session->set('_security_'.$firewallName, serialize($token)); + $session->set('_security_' . $firewallName, serialize($token)); } $session->save(); @@ -75,8 +75,7 @@ public function dontSeeInSession(string $attribute, $value = null): void if ($session->has($attribute)) { $this->fail("Session attribute with name '{$attribute}' does exist"); } - } - else { + } else { $this->assertNotSame($value, $session->get($attribute)); } } diff --git a/src/Codeception/Module/Symfony/TwigAssertionsTrait.php b/src/Codeception/Module/Symfony/TwigAssertionsTrait.php index 71969d4..624b822 100644 --- a/src/Codeception/Module/Symfony/TwigAssertionsTrait.php +++ b/src/Codeception/Module/Symfony/TwigAssertionsTrait.php @@ -23,7 +23,7 @@ public function dontSeeRenderedTemplate(string $template): void { $twigCollector = $this->grabTwigCollector(__FUNCTION__); - $templates = (array) $twigCollector->getTemplates(); + $templates = (array)$twigCollector->getTemplates(); $this->assertArrayNotHasKey( $template, @@ -46,8 +46,8 @@ public function seeCurrentTemplateIs(string $expectedTemplate): void { $twigCollector = $this->grabTwigCollector(__FUNCTION__); - $templates = (array) $twigCollector->getTemplates(); - $actualTemplate = (string) array_key_first($templates); + $templates = (array)$twigCollector->getTemplates(); + $actualTemplate = (string)array_key_first($templates); $this->assertSame( $expectedTemplate, @@ -72,7 +72,7 @@ public function seeRenderedTemplate(string $template): void { $twigCollector = $this->grabTwigCollector(__FUNCTION__); - $templates = (array) $twigCollector->getTemplates(); + $templates = (array)$twigCollector->getTemplates(); $this->assertArrayHasKey( $template, From e1d5cad52f341f952414fc1e33e69528af811bea Mon Sep 17 00:00:00 2001 From: Gintautas Miselis Date: Wed, 16 Mar 2022 10:33:22 +0200 Subject: [PATCH 3/6] Set correct versions constraints --- composer.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index 4c33047..d9ddbbc 100644 --- a/composer.json +++ b/composer.json @@ -16,14 +16,14 @@ ], "minimum-stability": "dev", "require": { - "php": "^7.4 | ^8.0", + "php": "^8.0", "ext-json": "*", - "codeception/lib-innerbrowser": "^2.0 | *@dev", - "codeception/codeception": "dev-5.0-interfaces as 5.0.x-dev" + "codeception/lib-innerbrowser": "^3.1.1", + "codeception/codeception": "^5.0.0-RC1" }, "require-dev": { - "codeception/module-asserts": "^2.0 | *@dev", - "codeception/module-doctrine2": "^2.0 | *@dev", + "codeception/module-asserts": "^3.0", + "codeception/module-doctrine2": "^3.0", "doctrine/orm": "^2.10", "symfony/form": "^4.4 | ^5.0", "symfony/framework-bundle": "^4.4 | ^5.0", From f13f29daea679aea8bb1eb62411bc3fd15836dee Mon Sep 17 00:00:00 2001 From: Gintautas Miselis Date: Wed, 16 Mar 2022 10:38:07 +0200 Subject: [PATCH 4/6] Change symfony version constraint in CI --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b470434..f81ba0d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: php: [8.0, 8.1] - symfony: [4.4, 5.4] + symfony: ["4.4.*", "5.4.*"] steps: - name: Checkout code @@ -24,7 +24,7 @@ jobs: coverage: none - name: Checkout Symfony 4.4 Sample - if: matrix.symfony == 4.4 + if: matrix.symfony == "4.4.*" uses: actions/checkout@v2 with: repository: Codeception/symfony-module-tests @@ -32,7 +32,7 @@ jobs: ref: 4.4_codecept5 - name: Checkout Symfony 5.4 Sample - if: matrix.symfony == 5.4 + if: matrix.symfony == "5.4.*" uses: actions/checkout@v2 with: repository: Codeception/symfony-module-tests @@ -83,4 +83,4 @@ jobs: - name: Run test suite run: | php vendor/bin/codecept build -c framework-tests - php vendor/bin/codecept run Functional -c framework-tests \ No newline at end of file + php vendor/bin/codecept run Functional -c framework-tests From 51e25bd9efb992ce2d5e89154197885111a69f40 Mon Sep 17 00:00:00 2001 From: Gintautas Miselis Date: Wed, 16 Mar 2022 10:42:43 +0200 Subject: [PATCH 5/6] Fix Github Actions workflow --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f81ba0d..708a4e1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,7 +24,7 @@ jobs: coverage: none - name: Checkout Symfony 4.4 Sample - if: matrix.symfony == "4.4.*" + if: "matrix.symfony == '4.4.*'" uses: actions/checkout@v2 with: repository: Codeception/symfony-module-tests @@ -32,7 +32,7 @@ jobs: ref: 4.4_codecept5 - name: Checkout Symfony 5.4 Sample - if: matrix.symfony == "5.4.*" + if: "matrix.symfony == '5.4.*'" uses: actions/checkout@v2 with: repository: Codeception/symfony-module-tests From 9e8afccbc8cbcf9dde129297eb2223e769bd86a5 Mon Sep 17 00:00:00 2001 From: Gintautas Miselis Date: Wed, 16 Mar 2022 10:48:41 +0200 Subject: [PATCH 6/6] CI: Use 3.* versions of asserts and doctrine2 modules --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 708a4e1..0c991a8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -60,8 +60,8 @@ jobs: composer require symfony/dom-crawler=${{ matrix.symfony }} --ignore-platform-req=php --no-update composer require symfony/browser-kit=${{ matrix.symfony }} --ignore-platform-req=php --no-update composer require vlucas/phpdotenv --ignore-platform-req=php --no-update - composer require codeception/module-asserts --ignore-platform-req=php --no-update - composer require codeception/module-doctrine2 --ignore-platform-req=php --no-update + composer require codeception/module-asserts="3.*" --ignore-platform-req=php --no-update + composer require codeception/module-doctrine2="3.*" --ignore-platform-req=php --no-update composer install --prefer-dist --no-progress --ignore-platform-req=php --no-dev - name: Validate composer.json and composer.lock