Completed
Push — master ( c88cc4...bbe830 )
by David
15:29 queued 11s
created

DiscoveryTest::testDisableAutowiring()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 22
rs 9.568
c 0
b 0
f 0
cc 2
nc 2
nop 0
1
<?php
2
3
namespace Http\HttplugBundle\Tests\Unit\DependencyInjection\Compiler;
4
5
use Http\Client\HttpAsyncClient;
6
use Http\Client\HttpClient;
7
use Http\Discovery\HttpClientDiscovery;
8
use Http\HttplugBundle\DependencyInjection\HttplugExtension;
9
use Http\Message\MessageFactory;
10
use Http\Message\StreamFactory;
11
use Http\Message\UriFactory;
12
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;
13
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\ContainerBuilderHasAliasConstraint;
14
use PHPUnit\Framework\Constraint\LogicalNot;
15
use Symfony\Component\DependencyInjection\Definition;
16
17
/**
18
 * @author Márk Sági-Kazár <[email protected]>
19
 */
20
final class DiscoveryTest extends AbstractExtensionTestCase
21
{
22
    protected function setUp()
23
    {
24
        parent::setUp();
25
26
        $this->setParameter('kernel.debug', true);
27
    }
28
29
    /**
30
     * {@inheritdoc}
31
     */
32
    protected function getContainerExtensions()
33
    {
34
        return [
35
            new HttplugExtension(),
36
        ];
37
    }
38
39
    public function testDiscoveryFallbacks()
40
    {
41
        $this->load();
42
43
        $this->assertContainerBuilderHasService('httplug.client.default', HttpClient::class);
44
        $this->assertContainerBuilderHasService('httplug.message_factory.default', MessageFactory::class);
45
        $this->assertContainerBuilderHasService('httplug.uri_factory.default', UriFactory::class);
46
        $this->assertContainerBuilderHasService('httplug.stream_factory.default', StreamFactory::class);
47
        $this->assertContainerBuilderHasService('httplug.async_client.default', HttpAsyncClient::class);
48
    }
49
50
    public function testDiscoveryPartialFallbacks()
51
    {
52
        $this->load();
53
        $this->setDefinition('httplug.client.default', new Definition('Http\Adapter\Guzzle6\Client'));
54
55
        $this->assertContainerBuilderHasService('httplug.client.default', 'Http\Adapter\Guzzle6\Client');
56
        $this->assertContainerBuilderHasService('httplug.message_factory.default', MessageFactory::class);
57
        $this->assertContainerBuilderHasService('httplug.uri_factory.default', UriFactory::class);
58
        $this->assertContainerBuilderHasService('httplug.stream_factory.default', StreamFactory::class);
59
        $this->assertContainerBuilderHasService('httplug.async_client.default', HttpAsyncClient::class);
60
    }
61
62
    public function testNoDiscoveryFallbacks()
63
    {
64
        $this->setDefinition('httplug.client.default', new Definition(HttpClient::class));
65
        $this->setDefinition('httplug.message_factory.default', new Definition(MessageFactory::class));
66
        $this->setDefinition('httplug.uri_factory.default', new Definition(UriFactory::class));
67
        $this->setDefinition('httplug.stream_factory.default', new Definition(StreamFactory::class));
68
        $this->setDefinition('httplug.async_client.default', new Definition(HttpAsyncClient::class));
69
70
        $this->load();
71
72
        $this->assertContainerBuilderHasService('httplug.client.default', HttpClient::class);
73
        $clientDefinition = $this->container->getDefinition('httplug.client.default');
74
        $this->assertEquals([HttpClientDiscovery::class, 'find'], $clientDefinition->getFactory());
75
    }
76
77
    public function testEnableAutowiring()
78
    {
79
        $this->load([
80
            'default_client_autowiring' => true,
81
        ]);
82
83
        $this->assertContainerBuilderHasService('httplug.client.default');
84
        $this->assertContainerBuilderHasService('httplug.async_client.default');
85
        $this->assertContainerBuilderHasAlias(HttpClient::class);
86
        $this->assertContainerBuilderHasAlias(HttpAsyncClient::class);
87
    }
88
89
    public function testDisableAutowiring()
90
    {
91
        if (PHP_VERSION_ID <= 70000) {
92
            $this->markTestSkipped();
93
        }
94
95
        $this->load([
96
            'default_client_autowiring' => false,
97
        ]);
98
99
        $this->assertContainerBuilderHasService('httplug.client.default');
100
        $this->assertContainerBuilderHasService('httplug.async_client.default');
101
102
        self::assertThat(
103
            $this->container,
104
            new LogicalNot(new ContainerBuilderHasAliasConstraint(HttpClient::class))
105
        );
106
        self::assertThat(
107
            $this->container,
108
            new LogicalNot(new ContainerBuilderHasAliasConstraint(HttpAsyncClient::class))
109
        );
110
    }
111
}
112