|
11 | 11 |
|
12 | 12 | namespace Symfony\Bundle\MonologBundle\Tests\DependencyInjection; |
13 | 13 |
|
| 14 | +use Monolog\Handler\ElasticaHandler; |
| 15 | +use Monolog\Handler\ElasticsearchHandler; |
14 | 16 | use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy; |
15 | 17 | use Monolog\Handler\RollbarHandler; |
16 | 18 | use Monolog\Processor\UidProcessor; |
@@ -504,6 +506,56 @@ public function testWithLoggerChannelAutoconfiguration() |
504 | 506 | ], $container->getDefinition(ServiceWithChannel::class)->getTag('monolog.logger')); |
505 | 507 | } |
506 | 508 |
|
| 509 | + public function testElasticsearchAndElasticaHandlers() |
| 510 | + { |
| 511 | + $container = new ContainerBuilder(); |
| 512 | + $container->setDefinition('elasticsearch.client', new Definition('Elasticsearch\\Client')); |
| 513 | + $container->setDefinition('elastica.client', new Definition('Elastica\\Client')); |
| 514 | + |
| 515 | + $config = [[ |
| 516 | + 'handlers' => [ |
| 517 | + 'es_handler' => [ |
| 518 | + 'type' => 'elastic_search', |
| 519 | + 'elasticsearch' => [ |
| 520 | + 'hosts' => ['es:9200'], |
| 521 | + ], |
| 522 | + 'index' => 'my-index', |
| 523 | + 'document_type' => 'my-type', |
| 524 | + ], |
| 525 | + 'elastica_handler' => [ |
| 526 | + 'type' => 'elastica', |
| 527 | + 'elasticsearch' => [ |
| 528 | + 'hosts' => ['es:9200'], |
| 529 | + ], |
| 530 | + 'index' => 'my-index', |
| 531 | + 'document_type' => 'my-type', |
| 532 | + ], |
| 533 | + ], |
| 534 | + ]]; |
| 535 | + |
| 536 | + $extension = new MonologExtension(); |
| 537 | + $extension->load($config, $container); |
| 538 | + |
| 539 | + $this->assertTrue($container->hasDefinition('monolog.handler.es_handler')); |
| 540 | + $this->assertTrue($container->hasDefinition('monolog.handler.elastica_handler')); |
| 541 | + |
| 542 | + // Elasticsearch handler should receive the elasticsearch.client as first argument |
| 543 | + $esHandler = $container->getDefinition('monolog.handler.es_handler'); |
| 544 | + $this->assertSame(ElasticsearchHandler::class,$esHandler->getClass()); |
| 545 | + $esClient = $esHandler->getArgument(0); |
| 546 | + $this->assertInstanceOf(Definition::class, $esClient); |
| 547 | + $this->assertStringEndsWith('Elasticsearch\Client', $esClient->getClass()); |
| 548 | + $this->assertSame(['hosts' => ['es:9200']], $esClient->getArgument(0)); |
| 549 | + |
| 550 | + // Elastica handler should receive the elastica.client as first argument |
| 551 | + $elasticaHandler = $container->getDefinition('monolog.handler.elastica_handler'); |
| 552 | + $this->assertSame(ElasticaHandler::class,$elasticaHandler->getClass()); |
| 553 | + $elasticaClient = $elasticaHandler->getArgument(0); |
| 554 | + $this->assertInstanceOf(Definition::class, $elasticaClient); |
| 555 | + $this->assertSame('Elastica\Client', $elasticaClient->getClass()); |
| 556 | + $this->assertSame(['hosts' => ['es:9200'], 'transport' => 'Http'], $elasticaClient->getArgument(0)); |
| 557 | + } |
| 558 | + |
507 | 559 | private function getContainer(array $config = [], array $thirdPartyDefinitions = []): ContainerBuilder |
508 | 560 | { |
509 | 561 | $container = new ContainerBuilder(new EnvPlaceholderParameterBag()); |
|
0 commit comments