|
47 | 47 | use PHPUnit\Framework\Attributes\TestWith; |
48 | 48 | use PHPUnit\Framework\TestCase; |
49 | 49 | use ReflectionClass; |
| 50 | +use Symfony\Bridge\Doctrine\ArgumentResolver\Console\EntityValueResolver as ConsoleEntityValueResolver; |
50 | 51 | use Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolver; |
51 | 52 | use Symfony\Bridge\Doctrine\Attribute\MapEntity; |
52 | 53 | use Symfony\Bridge\Doctrine\Middleware\IdleConnection\Driver; |
@@ -1507,6 +1508,62 @@ public function testControllerResolver(bool $simpleEntityManagerConfig): void |
1507 | 1508 | $this->assertEquals(new MapEntity(null, null, null, [], null, null, null, true, true), $container->get('controller_resolver_defaults')); |
1508 | 1509 | } |
1509 | 1510 |
|
| 1511 | + #[IgnoreDeprecations] |
| 1512 | + #[RequiresMethod(ConsoleEntityValueResolver::class, '__construct')] |
| 1513 | + #[TestWith([true])] |
| 1514 | + #[TestWith([false])] |
| 1515 | + public function testConsoleCommandResolver(bool $simpleEntityManagerConfig): void |
| 1516 | + { |
| 1517 | + if (! interface_exists(EntityManagerInterface::class)) { |
| 1518 | + self::markTestSkipped('This test requires ORM'); |
| 1519 | + } |
| 1520 | + |
| 1521 | + $container = $this->getContainer(); |
| 1522 | + $extension = new DoctrineExtension(); |
| 1523 | + $config = BundleConfigurationBuilder::createBuilderWithBaseValues()->build(); |
| 1524 | + |
| 1525 | + if ($simpleEntityManagerConfig) { |
| 1526 | + $config['orm'] = []; |
| 1527 | + } |
| 1528 | + |
| 1529 | + $config['orm']['controller_resolver'] = ['auto_mapping' => true]; |
| 1530 | + $config['orm']['resolve_target_entities'] = ['Throwable' => 'stdClass']; |
| 1531 | + |
| 1532 | + $extension->load([DeprecationFreeConfig::get(), $config], $container); |
| 1533 | + |
| 1534 | + $controllerResolver = $container->getDefinition('doctrine.orm.entity_value_resolver.console'); |
| 1535 | + |
| 1536 | + $this->assertEquals([ |
| 1537 | + 0 => new Reference('doctrine'), |
| 1538 | + 1 => new Reference('doctrine.orm.entity_value_resolver.expression_language', $container::IGNORE_ON_INVALID_REFERENCE), |
| 1539 | + 2 => (new Definition(MapEntity::class))->setArguments([ |
| 1540 | + null, |
| 1541 | + null, |
| 1542 | + null, |
| 1543 | + null, |
| 1544 | + null, |
| 1545 | + null, |
| 1546 | + null, |
| 1547 | + null, |
| 1548 | + false, |
| 1549 | + ]), |
| 1550 | + 3 => ['Throwable' => 'stdClass'], |
| 1551 | + ], $controllerResolver->getArguments()); |
| 1552 | + |
| 1553 | + $container = $this->getContainer(); |
| 1554 | + |
| 1555 | + $config['orm']['controller_resolver'] = [ |
| 1556 | + 'enabled' => false, |
| 1557 | + 'auto_mapping' => false, |
| 1558 | + 'evict_cache' => true, |
| 1559 | + ]; |
| 1560 | + $extension->load([$config], $container); |
| 1561 | + |
| 1562 | + $container->setDefinition('controller_resolver_defaults', $container->getDefinition('doctrine.orm.entity_value_resolver.console')->getArgument(2))->setPublic(true); |
| 1563 | + $container->compile(); |
| 1564 | + $this->assertEquals(new MapEntity(null, null, null, [], null, null, null, true, true), $container->get('controller_resolver_defaults')); |
| 1565 | + } |
| 1566 | + |
1510 | 1567 | #[TestWith(['AnnotationsBundle', 'attribute', 'Vendor'], 'Bundle without anything')] |
1511 | 1568 | #[TestWith(['AttributesBundle', 'attribute'], 'Bundle with attributes')] |
1512 | 1569 | #[TestWith(['RepositoryServiceBundle', 'attribute'], 'Bundle with both')] |
|
0 commit comments