Skip to content

Commit 6c17e47

Browse files
committed
Merge branch '2.14.x' into 2.15.x
* 2.14.x: Remove calls to assertObjectHasAttribute() (doctrine#10502) Remove calls to withConsecutive() (doctrine#10501) Use recognized array key Fix doctrine#9095 by re-applying doctrine#9096 Use linebreaks
2 parents 83d56d7 + 0bd5fbf commit 6c17e47

File tree

6 files changed

+62
-20
lines changed

6 files changed

+62
-20
lines changed

lib/Doctrine/ORM/Tools/SchemaValidator.php

+7-1
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,13 @@ public function validateClass(ClassMetadataInfo $class)
253253
}
254254
}
255255

256-
if (! $class->isInheritanceTypeNone() && ! $class->isRootEntity() && ! $class->isMappedSuperclass && array_search($class->name, $class->discriminatorMap, true) === false) {
256+
if (
257+
! $class->isInheritanceTypeNone()
258+
&& ! $class->isRootEntity()
259+
&& ($class->reflClass !== null && ! $class->reflClass->isAbstract())
260+
&& ! $class->isMappedSuperclass
261+
&& array_search($class->name, $class->discriminatorMap, true) === false
262+
) {
257263
$ce[] = "Entity class '" . $class->name . "' is part of inheritance hierarchy, but is " .
258264
"not mapped in the root entity '" . $class->rootEntityName . "' discriminator map. " .
259265
'All subclasses must be listed in the discriminator map.';

tests/Doctrine/Tests/Models/DDC964/DDC964User.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public static function loadMetadata(ClassMetadata $metadata): void
134134
'fieldName' => 'address',
135135
'targetEntity' => 'DDC964Address',
136136
'cascade' => ['persist','merge'],
137-
'joinColumn' => ['name' => 'address_id', 'referencedColumnMame' => 'id'],
137+
'joinColumns' => [['name' => 'address_id', 'referencedColumnMame' => 'id']],
138138
]
139139
);
140140

tests/Doctrine/Tests/ORM/Hydration/ObjectHydratorTest.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
use Doctrine\Tests\PHPUnitCompatibility\MockBuilderCompatibilityTools;
3030

3131
use function count;
32+
use function property_exists;
3233

3334
class ObjectHydratorTest extends HydrationTestCase
3435
{
@@ -927,10 +928,10 @@ public function testEntityQueryCustomResultSetOrder(): void
927928
self::assertEquals(1, $result[0]->getId());
928929
self::assertEquals(2, $result[1]->getId());
929930

930-
self::assertObjectHasAttribute('boards', $result[0]);
931+
self::assertTrue(property_exists($result[0], 'boards'));
931932
self::assertEquals(3, count($result[0]->boards));
932933

933-
self::assertObjectHasAttribute('boards', $result[1]);
934+
self::assertTrue(property_exists($result[1], 'boards'));
934935
self::assertEquals(1, count($result[1]->boards));
935936
}
936937

tests/Doctrine/Tests/ORM/Mapping/ClassMetadataFactoryTest.php

+4-10
Original file line numberDiff line numberDiff line change
@@ -181,16 +181,10 @@ public function testIsTransient(): void
181181
$driver = $this->createMock(MappingDriver::class);
182182
$driver->expects(self::exactly(2))
183183
->method('isTransient')
184-
->withConsecutive(
185-
[CmsUser::class],
186-
[CmsArticle::class]
187-
)
188-
->willReturnMap(
189-
[
190-
[CmsUser::class, true],
191-
[CmsArticle::class, false],
192-
]
193-
);
184+
->willReturnMap([
185+
[CmsUser::class, true],
186+
[CmsArticle::class, false],
187+
]);
194188

195189
$em = $this->createEntityManager($driver);
196190

tests/Doctrine/Tests/ORM/Tools/Pagination/PaginatorTest.php

+14-6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Doctrine\DBAL\Connection;
88
use Doctrine\DBAL\Driver;
9+
use Doctrine\DBAL\Result;
910
use Doctrine\ORM\Decorator\EntityManagerDecorator;
1011
use Doctrine\ORM\EntityManagerInterface;
1112
use Doctrine\ORM\Internal\Hydration\AbstractHydrator;
@@ -64,17 +65,24 @@ public function testExtraParametersAreStrippedWhenWalkerRemovingOriginalSelectEl
6465
$query->setMaxResults(1);
6566
$paginator = (new Paginator($query, true))->setUseOutputWalkers(false);
6667

68+
$receivedParams = [];
69+
$resultMock = $this->createMock(Result::class);
6770
$this->connection
68-
->expects(self::exactly(3))
6971
->method('executeQuery')
70-
->withConsecutive(
71-
[self::anything(), [$paramInWhere]],
72-
[self::anything(), [$paramInWhere]],
73-
[self::anything(), [$paramInSubSelect, $paramInWhere, $returnedIds]]
74-
);
72+
->willReturnCallback(static function (string $sql, array $params) use (&$receivedParams, $resultMock): Result {
73+
$receivedParams[] = $params;
74+
75+
return $resultMock;
76+
});
7577

7678
$paginator->count();
7779
$paginator->getIterator();
80+
81+
self::assertSame([
82+
[$paramInWhere],
83+
[$paramInWhere],
84+
[$paramInSubSelect, $paramInWhere, $returnedIds],
85+
], $receivedParams);
7886
}
7987

8088
public function testPaginatorNotCaringAboutExtraParametersWithoutOutputWalkers(): void

tests/Doctrine/Tests/ORM/Tools/SchemaValidatorTest.php

+33
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,14 @@ public function testMappedSuperclassNotPresentInDiscriminator(): void
221221

222222
$this->assertEquals([], $ce);
223223
}
224+
225+
public function testAbstractChildClassNotPresentInDiscriminator(): void
226+
{
227+
$class1 = $this->em->getClassMetadata(Issue9095AbstractChild::class);
228+
$ce = $this->validator->validateClass($class1);
229+
230+
self::assertEmpty($ce);
231+
}
224232
}
225233

226234
/** @MappedSuperclass */
@@ -643,3 +651,28 @@ class EmbeddableWithAssociation
643651
*/
644652
private $cart;
645653
}
654+
655+
/**
656+
* @Entity
657+
* @InheritanceType("SINGLE_TABLE")
658+
* @DiscriminatorMap({"child" = Issue9095Child::class})
659+
*/
660+
abstract class Issue9095Parent
661+
{
662+
/**
663+
* @var mixed
664+
* @Id
665+
* @Column
666+
*/
667+
protected $key;
668+
}
669+
670+
/** @Entity */
671+
abstract class Issue9095AbstractChild extends Issue9095Parent
672+
{
673+
}
674+
675+
/** @Entity */
676+
class Issue9095Child extends Issue9095AbstractChild
677+
{
678+
}

0 commit comments

Comments
 (0)