8000 Add runtime deprecation on PdoCacheAdapterDoctrineSchemaSubscriber · symfony/symfony@4f10486 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4f10486

Browse files
committed
Add runtime deprecation on PdoCacheAdapterDoctrineSchemaSubscriber
1 parent 4a92a7c commit 4f10486

File tree

4 files changed

+59
-17
lines changed

4 files changed

+59
-17
lines changed

src/Symfony/Bridge/Doctrine/SchemaListener/DoctrineDbalCacheAdapterSchemaSubscriber.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Doctrine\Common\EventSubscriber;
1515
use Doctrine\ORM\Tools\Event\GenerateSchemaEventArgs;
1616
use Doctrine\ORM\Tools\ToolEvents;
17+
use Symfony\Component\Cache\Adapter\DoctrineDbalAdapter;
1718
use Symfony\Component\Cache\Adapter\DoctrineSchemaConfiguratorInterface;
1819

1920
/**
@@ -38,6 +39,9 @@ public function postGenerateSchema(GenerateSchemaEventArgs $event): void
3839
{
3940
$dbalConnection = $event->getEntityManager()->getConnection();
4041
foreach ($this->dbalAdapters as $dbalAdapter) {
42+
if (!$dbalAdapter instanceof DoctrineSchemaConfiguratorInterface) {
43+
throw new \InvalidArgumentException(sprintf('"%s" only works with "%s". Got "%s"', __CLASS__, DoctrineDbalAdapter::class, is_object($dbalAdapter) ? get_class($dbalAdapter) : gettype($dbalAdapter)));
44+
}
4145
$dbalAdapter->configureSchema($event->getSchema(), $dbalConnection);
4246
}
4347
}

src/Symfony/Bridge/Doctrine/SchemaListener/PdoCacheAdapterDoctrineSchemaSubscriber.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ public function postGenerateSchema(GenerateSchemaEventArgs $event): void
3939
{
4040
$dbalConnection = $event->getEntityManager()->getConnection();
4141
foreach ($this->pdoAdapters as $pdoAdapter) {
42+
if (get_class($pdoAdapter) !== PdoAdapter::class) {
43+
trigger_deprecation('symfony/doctrine-bridge', '5.4', 'The "%s" class is deprecated, use "%s" instead.', PdoCacheAdapterDoctrineSchemaSubscriber::class, DoctrineDbalCacheAdapterSchemaSubscriber::class);
44+
}
45+
4246
$pdoAdapter->configureSchema($event->getSchema(), $dbalConnection);
4347
}
4448
}

src/Symfony/Bridge/Doctrine/Tests/SchemaListener/DoctrineDbalCacheAdapterSchemaSubscriberTest.php

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,44 @@
2222
class DoctrineDbalCacheAdapterSchemaSubscriberTest extends TestCase
2323
{
2424
public function testPostGenerateSchema()
25+
{
26+
$event = $this->getEvent();
27+
28+
$dbalAdapter = $this->createMock(DoctrineSchemaConfiguratorInterface::class);
29+
$dbalAdapter->expects($this->once())
30+
->method('configureSchema')
31+
->with($event->getSchema(), $event->getEntityManager()->getConnection());
32+
33+
$subscriber = new DoctrineDbalCacheAdapterSchemaSubscriber([$dbalAdapter]);
34+
$subscriber->postGenerateSchema($event);
35+
}
36+
37+
/**
38+
* @dataProvider provideInvalidAdapter
39+
*/
40+
public function testInvalidAdapter($value)
41+
{
42+
$this->expectException(\InvalidArgumentException::class);
43+
44+
$subscriber = new DoctrineDbalCacheAdapterSchemaSubscriber([$value]);
45+
$subscriber->postGenerateSchema($this->getEvent());
46+
}
47+
48+
public function provideInvalidAdapter()
49+
{
50+
yield [new \stdClass()];
51+
yield ['scalar'];
52+
}
53+
54+
private function getEvent(): GenerateSchemaEventArgs
2555
{
2656
$schema = new Schema();
2757
$dbalConnection = $this->createMock(Connection::class);
2858
$entityManager = $this->createMock(EntityManagerInterface::class);
29-
$entityManager->expects($this->once())
59+
$entityManager->expects($this->any())
3060
->method('getConnection')
3161
->willReturn($dbalConnection);
32-
$event = new GenerateSchemaEventArgs($entityManager, $schema);
33-
34-
$pdoAdapter = $this->createMock(DoctrineSchemaConfiguratorInterface::class);
35-
$pdoAdapter->expects($this->once())
36-
->method('configureSchema')
37-
->with($schema, $dbalConnection);
3862

39-
$subscriber = new DoctrineDbalCacheAdapterSchemaSubscriber([$pdoAdapter]);
40-
$subscriber->postGenerateSchema($event);
63+
return new GenerateSchemaEventArgs($entityManager, $schema);
4164
}
4265
}

src/Symfony/Bridge/Doctrine/Tests/SchemaListener/PdoCacheAdapterDoctrineSchemaSubscriberTest.php

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,29 +17,40 @@
1717
use Doctrine\ORM\Tools\Event\GenerateSchemaEventArgs;
1818
use PHPUnit\Framework\TestCase;
1919
use Symfony\Bridge\Doctrine\SchemaListener\PdoCacheAdapterDoctrineSchemaSubscriber;
20+
use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
2021
use Symfony\Component\Cache\Adapter\PdoAdapter;
2122

2223
/**
2324
* @group legacy
2425
*/
2526
class PdoCacheAdapterDoctrineSchemaSubscriberTest extends TestCase
2627
{
28+
use ExpectDeprecationTrait;
29+
2730
public function testPostGenerateSchema()
2831
{
29-
$schema = new Schema();
30-
$dbalConnection = $this->createMock(Connection::class);
31-
$entityManager = $this->createMock(EntityManagerInterface::class);
32-
$entityManager->expects($this->once())
33-
->method('getConnection')
34-
->willReturn($dbalConnection);
35-
$event = new GenerateSchemaEventArgs($entityManager, $schema);
32+
$this->expectDeprecation('Since symfony/doctrine-bridge 5.4: The "Symfony\Bridge\Doctrine\SchemaListener\PdoCacheAdapterDoctrineSchemaSubscriber" class is deprecated, use "Symfony\Bridge\Doctrine\SchemaListener\DoctrineDbalCacheAdapterSchemaSubscriber" instead.');
33+
34+
$event = $this->getEvent();
3635

3736
$pdoAdapter = $this->createMock(PdoAdapter::class);
3837
$pdoAdapter->expects($this->once())
3938
->method('configureSchema')
40-
->with($schema, $dbalConnection);
39+
->with($event->getSchema(), $event->getEntityManager()->getConnection());
4140

4241
$subscriber = new PdoCacheAdapterDoctrineSchemaSubscriber([$pdoAdapter]);
4342
$subscriber->postGenerateSchema($event);
4443
}
44+
45+
private function getEvent(): GenerateSchemaEventArgs
46+
{
47+
$schema = new Schema();
48+
$dbalConnection = $this->createMock(Connection::class);
49+
$entityManager = $this->createMock(EntityManagerInterface::class);
50+
$entityManager->expects($this->any())
51+
->method('getConnection')
52+
->willReturn($dbalConnection);
53+
54+
return new GenerateSchemaEventArgs($entityManager, $schema);
55+
}
4556
}

0 commit comments

Comments
 (0)
0