diff --git a/.github/workflows/test-application.yaml b/.github/workflows/test-application.yaml index d9af86d2..cfdc209f 100644 --- a/.github/workflows/test-application.yaml +++ b/.github/workflows/test-application.yaml @@ -71,7 +71,7 @@ jobs: - name: Run php-cs-fixer if: ${{ matrix.php-cs-fixer }} run: | - composer global require friendsofphp/php-cs-fixer --prefer-dist --no-interaction + composer global require friendsofphp/php-cs-fixer:^2.19 --prefer-dist --no-interaction GLOBAL_BIN_DIR=$(composer global config bin-dir --absolute --quiet) $GLOBAL_BIN_DIR/php-cs-fixer fix --dry-run --diff diff --git a/Search/Reindex/Provider/DoctrineOrmProvider.php b/Search/Reindex/Provider/DoctrineOrmProvider.php index 88886777..bf46e21a 100644 --- a/Search/Reindex/Provider/DoctrineOrmProvider.php +++ b/Search/Reindex/Provider/DoctrineOrmProvider.php @@ -52,6 +52,9 @@ public function getClassFqns() $classFqns = []; foreach ($metadataFactory->getAllMetadata() as $classMetadata) { + if ($classMetadata->isMappedSuperclass) { + continue; + } if (null === $this->searchMetadataFactory->getMetadataForClass($classMetadata->name)) { continue; } diff --git a/Tests/Unit/Search/ReIndex/Provider/DoctrineOrmProviderTest.php b/Tests/Unit/Search/ReIndex/Provider/DoctrineOrmProviderTest.php index ecdb2f34..3f995311 100644 --- a/Tests/Unit/Search/ReIndex/Provider/DoctrineOrmProviderTest.php +++ b/Tests/Unit/Search/ReIndex/Provider/DoctrineOrmProviderTest.php @@ -116,6 +116,29 @@ public function testClassFqns() $this->assertEquals(['stdClass'], $classFqns); } + /** + * It should return all the class fqns without the mapped superclass. + */ + public function testClassFqnsMappedSuperClassNotReturned() + { + $this->ormMetadata->name = 'stdClass'; + $mappedSuperClass = $this->prophesize(OrmClassMetadata::class); + $mappedSuperClass->name = 'stdClass2'; + $mappedSuperClass->isMappedSuperclass = true; + + $this->entityManager->getMetadataFactory()->willReturn($this->ormMetadataFactory->reveal()); + $this->searchMetadataFactory->getMetadataForClass('stdClass')->willReturn($this->hierarchyMetadata->reveal()); + $this->searchMetadataFactory->getMetadataForClass('stdClass2')->willReturn($mappedSuperClass->reveal()); + $this->hierarchyMetadata->getOutsideClassMetadata()->willReturn($this->searchMetadata->reveal()); + $this->ormMetadataFactory->getAllMetadata()->willReturn([ + $this->ormMetadata->reveal(), + $mappedSuperClass->reveal(), + ]); + + $classFqns = $this->provider->getClassFqns(); + $this->assertEquals(['stdClass'], $classFqns); + } + /** * It should not return class FQNs NOT managed by the search manager. */