Skip to content

Commit 3b8c23c

Browse files
authored
Merge pull request #12336 from greg0ire/dmwydo
Stop mocking EventManager
2 parents 0f8730a + 60d4ea6 commit 3b8c23c

2 files changed

Lines changed: 21 additions & 69 deletions

File tree

tests/Tests/ORM/Functional/Ticket/DDC2359Test.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public function testIssue(): void
5151
$entityManager->expects(self::any())->method('getConnection')->willReturn($connection);
5252
$entityManager
5353
->method('getEventManager')
54-
->willReturn($this->createMock(EventManager::class));
54+
->willReturn(new EventManager());
5555

5656
$metadataFactory->method('newClassMetadataInstance')->willReturn($mockMetadata);
5757
$metadataFactory->expects(self::once())->method('wakeupReflection');

tests/Tests/ORM/Hydration/AbstractHydratorTest.php

Lines changed: 20 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
/** @covers \Doctrine\ORM\Internal\Hydration\AbstractHydrator */
2323
class AbstractHydratorTest extends OrmFunctionalTestCase
2424
{
25-
/** @var EventManager&MockObject */
26-
private $mockEventManager;
25+
/** @var EventManager */
26+
private $eventManager;
2727

2828
/** @var Result&MockObject */
2929
private $mockResult;
@@ -40,14 +40,14 @@ protected function setUp(): void
4040

4141
$mockConnection = $this->createMock(Connection::class);
4242
$mockEntityManagerInterface = $this->createMock(EntityManagerInterface::class);
43-
$this->mockEventManager = $this->createMock(EventManager::class);
43+
$this->eventManager = new EventManager();
4444
$this->mockResult = $this->createMock(Result::class);
4545
$this->mockResultMapping = $this->createMock(ResultSetMapping::class);
4646

4747
$mockEntityManagerInterface
4848
->expects(self::any())
4949
->method('getEventManager')
50-
->willReturn($this->mockEventManager);
50+
->willReturn($this->eventManager);
5151
$mockEntityManagerInterface
5252
->expects(self::any())
5353
->method('getConnection')
@@ -69,85 +69,29 @@ protected function setUp(): void
6969
*/
7070
public function testOnClearEventListenerIsDetachedOnCleanup(): void
7171
{
72-
$eventListenerHasBeenRegistered = false;
73-
74-
$this
75-
->mockEventManager
76-
->expects(self::once())
77-
->method('addEventListener')
78-
->with([Events::onClear], $this->hydrator)
79-
->willReturnCallback(function () use (&$eventListenerHasBeenRegistered): void {
80-
$this->assertFalse($eventListenerHasBeenRegistered);
81-
$eventListenerHasBeenRegistered = true;
82-
});
83-
84-
$this
85-
->mockEventManager
86-
->expects(self::once())
87-
->method('removeEventListener')
88-
->with([Events::onClear], $this->hydrator)
89-
->willReturnCallback(function () use (&$eventListenerHasBeenRegistered): void {
90-
$this->assertTrue($eventListenerHasBeenRegistered);
91-
});
92-
93-
iterator_to_array($this->hydrator->iterate($this->mockResult, $this->mockResultMapping));
72+
$iterator = $this->hydrator->iterate($this->mockResult, $this->mockResultMapping);
73+
self::assertTrue($this->eventManager->hasListeners(Events::onClear));
74+
iterator_to_array($iterator);
75+
self::assertFalse($this->eventManager->hasListeners(Events::onClear));
9476
}
9577

9678
/** @group #6623 */
9779
public function testHydrateAllRegistersAndClearsAllAttachedListeners(): void
9880
{
99-
$eventListenerHasBeenRegistered = false;
100-
101-
$this
102-
->mockEventManager
103-
->expects(self::once())
104-
->method('addEventListener')
105-
->with([Events::onClear], $this->hydrator)
106-
->willReturnCallback(function () use (&$eventListenerHasBeenRegistered): void {
107-
$this->assertFalse($eventListenerHasBeenRegistered);
108-
$eventListenerHasBeenRegistered = true;
109-
});
110-
111-
$this
112-
->mockEventManager
113-
->expects(self::once())
114-
->method('removeEventListener')
115-
->with([Events::onClear], $this->hydrator)
116-
->willReturnCallback(function () use (&$eventListenerHasBeenRegistered): void {
117-
$this->assertTrue($eventListenerHasBeenRegistered);
118-
});
119-
12081
$this->hydrator->hydrateAll($this->mockResult, $this->mockResultMapping);
82+
self::assertTrue($this->hydrator->hasListener);
83+
self::assertFalse($this->eventManager->hasListeners(Events::onClear));
12184
}
12285

12386
/** @group #8482 */
12487
public function testHydrateAllClearsAllAttachedListenersEvenOnError(): void
12588
{
126-
$eventListenerHasBeenRegistered = false;
127-
128-
$this
129-
->mockEventManager
130-
->expects(self::once())
131-
->method('addEventListener')
132-
->with([Events::onClear], $this->hydrator)
133-
->willReturnCallback(function () use (&$eventListenerHasBeenRegistered): void {
134-
$this->assertFalse($eventListenerHasBeenRegistered);
135-
$eventListenerHasBeenRegistered = true;
136-
});
137-
138-
$this
139-
->mockEventManager
140-
->expects(self::once())
141-
->method('removeEventListener')
142-
->with([Events::onClear], $this->hydrator)
143-
->willReturnCallback(function () use (&$eventListenerHasBeenRegistered): void {
144-
$this->assertTrue($eventListenerHasBeenRegistered);
145-
});
146-
14789
$this->hydrator->throwException = true;
14890

14991
$this->expectException(ORMException::class);
15092
$this->hydrator->hydrateAll($this->mockResult, $this->mockResultMapping);
93+
self::assertTrue($this->hydrator->hasListener);
94+
self::assertFalse($this->eventManager->hasListeners(Events::onClear));
15195
}
15296

15397
public function testToIterableIfYieldAndBreakBeforeFinishAlwaysCleansUp(): void
@@ -185,6 +129,9 @@ class DummyHydrator extends AbstractHydrator
185129
/** @var bool */
186130
public $throwException = false;
187131

132+
/** @var bool */
133+
public $hasListener = false;
134+
188135
/** {@inheritDoc} */
189136
protected function hydrateAllData()
190137
{
@@ -194,4 +141,9 @@ protected function hydrateAllData()
194141

195142
return [];
196143
}
144+
145+
public function prepare(): void
146+
{
147+
$this->hasListener = $this->_em->getEventManager()->hasListeners(Events::onClear);
148+
}
197149
}

0 commit comments

Comments
 (0)