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