Skip to content

Commit

Permalink
Test services definition
Browse files Browse the repository at this point in the history
  • Loading branch information
ajgarlag committed Feb 4, 2021
1 parent be5a543 commit 31662ba
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 3 deletions.
13 changes: 10 additions & 3 deletions src/DependencyInjection/AjgarlagPsrHttpMessageExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ class AjgarlagPsrHttpMessageExtension extends Extension implements CompilerPassI
{
public function prepend(ContainerBuilder $container)
{
$container->setParameter('ajgarlag_psr_http_message_sensio_psr7_enabled', false);

if (!class_exists(Psr7ServerRequestResolver::class)) {
return;
}
Expand All @@ -51,7 +49,7 @@ public function load(array $configs, ContainerBuilder $container)

$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));

if ($container->getParameter('ajgarlag_psr_http_message_sensio_psr7_enabled')) {
if ($this->isSensioFrameworkExtraPsr7SupportEnabled($container)) {
$loader->load('alias_ajgarlag_psr_http_message.xml');

return;
Expand All @@ -64,6 +62,15 @@ public function load(array $configs, ContainerBuilder $container)
}
}

private function isSensioFrameworkExtraPsr7SupportEnabled(ContainerBuilder $container): bool
{
if (!$container->hasParameter('ajgarlag_psr_http_message_sensio_psr7_enabled')) {
return false;
}

return (bool) $container->getParameter('ajgarlag_psr_http_message_sensio_psr7_enabled');
}

public function process(ContainerBuilder $container)
{
$requiredInterfaces = [
Expand Down
98 changes: 98 additions & 0 deletions tests/DependencyInjection/AjgarlagPsrHttpMessageExtensionTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
<?php

/*
* PsrHttpMessageBundle by @ajgarlag
*
* Copyright (c) 2010-2021 Fabien Potencier
* Copyright (c) 2021 Antonio J. García Lagar
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Ajgarlag\Bundle\PsrHttpMessageBundle\Tests\DependencyInjection;

use Ajgarlag\Bundle\PsrHttpMessageBundle\DependencyInjection\AjgarlagPsrHttpMessageExtension;
use Symfony\Bridge\PsrHttpMessage\HttpFoundationFactoryInterface;
use Symfony\Bridge\PsrHttpMessage\HttpMessageFactoryInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class AjgarlagPsrHttpMessageExtensionTest extends \PHPUnit\Framework\TestCase
{
public function testDefaultConfiguration()
{
$container = new ContainerBuilder();
$extension = new AjgarlagPsrHttpMessageExtension();
$config = [];

$extension->load([$config], $container);

$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_message_factory'));
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_foundation_factory'));
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.argument_value_resolver.server_request'));
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.listener.response'));

$this->assertFalse($container->hasAlias('sensio_framework_extra.psr7.http_message_factory'));
$this->assertFalse($container->hasAlias('sensio_framework_extra.psr7.http_foundation_factory'));
$this->assertFalse($container->hasAlias('sensio_framework_extra.psr7.argument_value_resolver.server_request'));
$this->assertFalse($container->hasAlias('sensio_framework_extra.psr7.listener.response'));

$this->assertAlias($container, HttpMessageFactoryInterface::class, 'ajgarlag_psr_http_message.psr7.http_message_factory');
$this->assertAlias($container, HttpFoundationFactoryInterface::class, 'ajgarlag_psr_http_message.psr7.http_foundation_factory');
}

public function testSensioFrameworkExtraAliasConfiguration()
{
$container = new ContainerBuilder();
$extension = new AjgarlagPsrHttpMessageExtension();
$config = [
'alias_sensio_framework_extra_services' => [
'enabled' => true,
],
];

$extension->load([$config], $container);

$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_message_factory'));
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_foundation_factory'));
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.argument_value_resolver.server_request'));
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.listener.response'));

$this->assertAlias($container, 'sensio_framework_extra.psr7.http_message_factory', 'ajgarlag_psr_http_message.psr7.http_message_factory');
$this->assertAlias($container, 'sensio_framework_extra.psr7.http_foundation_factory', 'ajgarlag_psr_http_message.psr7.http_foundation_factory');
$this->assertAlias($container, 'sensio_framework_extra.psr7.argument_value_resolver.server_request', 'ajgarlag_psr_http_message.psr7.argument_value_resolver.server_request');
$this->assertAlias($container, 'sensio_framework_extra.psr7.listener.response', 'ajgarlag_psr_http_message.psr7.listener.response');

$this->assertAlias($container, HttpMessageFactoryInterface::class, 'ajgarlag_psr_http_message.psr7.http_message_factory');
$this->assertAlias($container, HttpFoundationFactoryInterface::class, 'ajgarlag_psr_http_message.psr7.http_foundation_factory');
}

public function testAjgarlagPsrHttpMessageAliasConfiguration()
{
$container = new ContainerBuilder();
$extension = new AjgarlagPsrHttpMessageExtension();
$config = [
'alias_sensio_framework_extra_services' => [
'enabled' => (bool) random_int(0, 1),
],
];

$container->setParameter('ajgarlag_psr_http_message_sensio_psr7_enabled', true);
$extension->load([$config], $container);

$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_message_factory'));
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_foundation_factory'));
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.argument_value_resolver.server_request'));
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.listener.response'));

$this->assertAlias($container, 'ajgarlag_psr_http_message.psr7.http_message_factory', 'sensio_framework_extra.psr7.http_message_factory');
$this->assertAlias($container, 'ajgarlag_psr_http_message.psr7.http_foundation_factory', 'sensio_framework_extra.psr7.http_foundation_factory');
$this->assertAlias($container, 'ajgarlag_psr_http_message.psr7.argument_value_resolver.server_request', 'sensio_framework_extra.psr7.argument_value_resolver.server_request');
$this->assertAlias($container, 'ajgarlag_psr_http_message.psr7.listener.response', 'sensio_framework_extra.psr7.listener.response');
}

private function assertAlias(ContainerBuilder $container, $key, $value): void
{
$this->assertEquals($value, (string) $container->getAlias($key));
}
}

0 comments on commit 31662ba

Please sign in to comment.