Skip to content

Commit

Permalink
Bump dependencies, remove deprecated symplify/amnesia, update PHPStan (
Browse files Browse the repository at this point in the history
…KnpLabs#703)

* bump deps

* cleanup ecs.php

* static fixes

* bump lower persistance version to 2.5

* bump higher doctrine/ version to latest minorp
  • Loading branch information
TomasVotruba authored Jun 4, 2022
1 parent e015b00 commit e0d5386
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 78 deletions.
30 changes: 14 additions & 16 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
],
"require": {
"php": ">=8.0",
"doctrine/common": "^3.2",
"doctrine/persistence": "^2.2|^3.0",
"doctrine/dbal": "^3.2",
"doctrine/orm": "^2.10",
"doctrine/doctrine-bundle": "^2.5",
"doctrine/common": "^3.3",
"doctrine/persistence": "^2.5|^3.0",
"doctrine/dbal": "^3.3",
"doctrine/orm": "^2.12",
"doctrine/doctrine-bundle": "^2.6",
"symfony/cache": "^5.4|^6.0",
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/http-kernel": "^5.4|^6.0",
Expand All @@ -34,19 +34,17 @@
"psr/log": "^1.1",
"doctrine/annotations": "^1.13",
"php-parallel-lint/php-parallel-lint": "^1.3",
"phpstan/phpstan": "^1.6.3",
"phpstan/phpstan": "^1.7.10",
"phpunit/phpunit": "^9.5",
"rector/rector": "^0.12.10",
"symplify/easy-coding-standard": "^10.0",
"symplify/phpstan-extensions": "^10.0",
"phpstan/phpstan-doctrine": "^1.0",
"phpstan/phpstan-phpunit": "^1.0",
"symplify/package-builder": "^10.0",
"symplify/phpstan-rules": "^10.0",
"symplify/config-transformer": "^10.0",
"symplify/amnesia": "^10.0",
"rector/rector": "^0.13.4",
"symplify/easy-coding-standard": "^10.2.9",
"symplify/phpstan-extensions": "^10.2.9",
"phpstan/phpstan-doctrine": "^1.3",
"phpstan/phpstan-phpunit": "^1.1",
"symplify/package-builder": "^10.2.9",
"symplify/phpstan-rules": "^10.2.9",
"phpstan/extension-installer": "^1.1",
"symplify/easy-ci": "^10.0"
"symplify/easy-ci": "^10.2.9"
},
"autoload": {
"psr-4": {
Expand Down
10 changes: 0 additions & 10 deletions ecs.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@

declare(strict_types=1);

use PhpCsFixer\Fixer\Comment\HeaderCommentFixer;
use PhpCsFixer\Fixer\Import\OrderedImportsFixer;
use PhpCsFixer\Fixer\Operator\UnaryOperatorSpacesFixer;
use PhpCsFixer\Fixer\Phpdoc\GeneralPhpdocAnnotationRemoveFixer;
use PhpCsFixer\Fixer\PhpUnit\PhpUnitStrictFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;
use Symplify\EasyCodingStandard\ValueObject\Set\SetList;

Expand All @@ -24,19 +22,11 @@

$ecsConfig->skip([
UnaryOperatorSpacesFixer::class,
PhpUnitStrictFixer::class => [__DIR__ . '/tests/ORM/Timestampable/TimestampableTest.php'],
OrderedImportsFixer::class => [
__DIR__ . '/tests/Fixtures/Entity/AbstractTimestampableMappedSuperclassEntity.php',
],
__DIR__ . '/src/Bundle/DoctrineBehaviorsBundle.php',
__DIR__ . '/src/DoctrineBehaviorsBundle.php',

// broken on PHP 8.1
\PhpCsFixer\Fixer\FunctionNotation\FunctionTypehintSpaceFixer::class,
]);

$ecsConfig->ruleWithConfiguration(HeaderCommentFixer::class, [
'header' => '',
]);

$ecsConfig->ruleWithConfiguration(GeneralPhpdocAnnotationRemoveFixer::class, [
Expand Down
2 changes: 0 additions & 2 deletions phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ includes:
- vendor/symplify/phpstan-rules/config/array-rules.neon
- vendor/symplify/phpstan-rules/config/doctrine-rules.neon
- vendor/symplify/phpstan-rules/config/regex-rules.neon
- vendor/symplify/phpstan-rules/config/services-rules.neon
- vendor/symplify/phpstan-rules/config/forbidden-static-rules.neon
- vendor/symplify/phpstan-rules/config/string-to-constant-rules.neon
- vendor/symplify/phpstan-rules/config/test-rules.neon

parameters:
Expand Down
4 changes: 2 additions & 2 deletions src/EventSubscriber/TranslatableEventSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ final class TranslatableEventSubscriber implements EventSubscriberInterface

public function __construct(
private LocaleProviderInterface $localeProvider,
string $translatableFetchMode,
string $translationFetchMode
string $translatableFetchMode,
string $translationFetchMode
) {
$this->translatableFetchMode = $this->convertFetchString($translatableFetchMode);
$this->translationFetchMode = $this->convertFetchString($translationFetchMode);
Expand Down
2 changes: 1 addition & 1 deletion tests/DatabaseLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function reload(): void
}

/**
* @param string[] $entityClasses
* @param class-string[] $entityClasses
*/
public function reloadEntityClasses(array $entityClasses): void
{
Expand Down
49 changes: 29 additions & 20 deletions tests/ORM/Translatable/TranslatableInheritanceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Doctrine\Persistence\ObjectRepository;
use Knp\DoctrineBehaviors\Tests\AbstractBehaviorTestCase;
use Knp\DoctrineBehaviors\Tests\Fixtures\Entity\Translatable\ExtendedTranslatableEntity;
use Knp\DoctrineBehaviors\Tests\Fixtures\Entity\Translatable\ExtendedTranslatableEntityTranslation;

final class TranslatableInheritanceTest extends AbstractBehaviorTestCase
{
Expand All @@ -25,20 +26,22 @@ protected function setUp(): void
public function testShouldPersistTranslationsWithInheritance(): void
{
$entity = new ExtendedTranslatableEntity();
$entity->translate('fr')
->setTitle('fabuleux');
$entity->translate('fr')
->setExtendedTitle('fabuleux');

$entity->translate('en')
->setTitle('awesome');
$entity->translate('en')
->setExtendedTitle('awesome');

$entity->translate('ru')
->setTitle('удивительный');
$entity->translate('ru')
->setExtendedTitle('удивительный');

/** @var ExtendedTranslatableEntityTranslation $frenchEntity */
$frenchEntity = $entity->translate('fr');
$frenchEntity->setTitle('fabuleux');
$frenchEntity->setExtendedTitle('fabuleux');

/** @var ExtendedTranslatableEntityTranslation $englishEntity */
$englishEntity = $entity->translate('en');
$englishEntity->setTitle('awesome');
$englishEntity->setExtendedTitle('awesome');

/** @var ExtendedTranslatableEntityTranslation $russianEntity */
$russianEntity = $entity->translate('ru');
$russianEntity->setTitle('удивительный');
$russianEntity->setExtendedTitle('удивительный');

$entity->mergeNewTranslations();

$this->entityManager->persist($entity);
Expand All @@ -51,13 +54,19 @@ public function testShouldPersistTranslationsWithInheritance(): void
/** @var ExtendedTranslatableEntity $entity */
$entity = $this->objectRepository->find($id);

$this->assertSame('fabuleux', $entity->translate('fr')->getTitle());
$this->assertSame('fabuleux', $entity->translate('fr')->getExtendedTitle());
/** @var ExtendedTranslatableEntityTranslation $frenchEntity */
$frenchEntity = $entity->translate('fr');
$this->assertSame('fabuleux', $frenchEntity->getTitle());
$this->assertSame('fabuleux', $frenchEntity->getExtendedTitle());

$this->assertSame('awesome', $entity->translate('en')->getTitle());
$this->assertSame('awesome', $entity->translate('en')->getExtendedTitle());
/** @var ExtendedTranslatableEntityTranslation $englishEntity */
$englishEntity = $entity->translate('en');
$this->assertSame('awesome', $englishEntity->getTitle());
$this->assertSame('awesome', $englishEntity->getExtendedTitle());

$this->assertSame('удивительный', $entity->translate('ru')->getTitle());
$this->assertSame('удивительный', $entity->translate('ru')->getExtendedTitle());
/** @var ExtendedTranslatableEntityTranslation $russianEntity */
$russianEntity = $entity->translate('ru');
$this->assertSame('удивительный', $russianEntity->getTitle());
$this->assertSame('удивительный', $russianEntity->getExtendedTitle());
}
}
2 changes: 2 additions & 0 deletions tests/ORM/Translatable/TranslatableTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,8 @@ public function testTranslationIsNotEmptyWithZeroAsValue(): void
}

/**
* @param class-string $translatableClass
* @param class-string $translationClass
* Asserts that the one to many relationship between translatable and translations is mapped correctly.
*/
private function assertTranslationsOneToManyMapped(string $translatableClass, string $translationClass): void
Expand Down
38 changes: 16 additions & 22 deletions tests/config/config_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,7 @@
use Psr\Log\Test\TestLogger;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symfony\Component\Security\Core\Security;
use Symplify\Amnesia\ValueObject\Symfony\Extension\Doctrine\DBAL;
use Symplify\Amnesia\ValueObject\Symfony\Extension\Doctrine\Mapping;
use Symplify\Amnesia\ValueObject\Symfony\Extension\Doctrine\ORM;
use Symplify\Amnesia\ValueObject\Symfony\Extension\DoctrineExtension;
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
use function Symplify\Amnesia\Functions\env;

return static function (ContainerConfigurator $containerConfigurator): void {
$parameters = $containerConfigurator->parameters();
Expand Down Expand Up @@ -53,25 +48,24 @@
$services->set(LoggableEventSubscriber::class)
->arg('$logger', service(TestLogger::class));

$containerConfigurator->extension(DoctrineExtension::NAME, [
DoctrineExtension::DBAL => [
DBAL::DBNAME => env('DB_NAME'),
DBAL::HOST => env('DB_HOST'),
DBAL::USER => env('DB_USER'),
DBAL::PASSWORD => env('DB_PASSWD'),
DBAL::DRIVER => env('DB_ENGINE'),
DBAL::MEMORY => (bool) env('DB_MEMORY'),
$containerConfigurator->extension('doctrine', [
'dbal' => [
'dbname' => '%env(DB_NAME)%',
'host' => '%env(DB_HOST)%',
'user' => '%env(DB_USER)%',
'password' => '%env(DB_PASSWD)%',
'driver' => '%env(DB_ENGINE)%',
'memory' => '%env(bool:DB_MEMORY)%',
],

DoctrineExtension::ORM => [
ORM::AUTO_MAPPING => true,
ORM::MAPPINGS => [
'orm' => [
'auto_mapping' => true,
'mappings' => [
[
Mapping::NAME => 'DoctrineBehaviors',
Mapping::TYPE => 'attribute',
Mapping::PREFIX => 'Knp\DoctrineBehaviors\Tests\Fixtures\Entity\\',
Mapping::DIR => __DIR__ . '/../../tests/Fixtures/Entity',
Mapping::IS_BUNDLE => false,
'name' => 'DoctrineBehaviors',
'type' => 'attribute',
'prefix' => 'Knp\DoctrineBehaviors\Tests\Fixtures\Entity\\',
'dir' => __DIR__ . '/../../tests/Fixtures/Entity',
'is_bundle' => false,
],
],
],
Expand Down
10 changes: 5 additions & 5 deletions utils/phpstan-behaviors/src/Type/StaticTranslationTypeHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,22 +55,22 @@ public static function getTranslatableClass(
): string {
$type = $scope->getType($methodCall->var);
$translationClass = $type->getReferencedClasses()[0];
$reflectionClass = $reflectionProvider->getClass($translationClass)
$nativeReflection = $reflectionProvider->getClass($translationClass)
->getNativeReflection();

if ($reflectionClass->isInterface()) {
if ($reflectionClass->getName() === TranslationInterface::class) {
if ($nativeReflection->isInterface()) {
if ($nativeReflection->getName() === TranslationInterface::class) {
return TranslatableInterface::class;
}

$errorMessage = sprintf(
'Unable to find the Translatable class associated to the Translation class "%s".',
$reflectionClass->getName()
$nativeReflection->getName()
);
throw new PHPStanTypeException($errorMessage);
}

return $reflectionClass
return $nativeReflection
->getMethod('getTranslatableEntityClass')
->invoke(null);
}
Expand Down

0 comments on commit e0d5386

Please sign in to comment.