Passed
Pull Request — master (#6)
by
unknown
02:25
created

ApiServiceExtensionTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace ElevenLabs\ApiServiceBundle\Tests\DependencyInjection;
4
5
use ElevenLabs\ApiServiceBundle\DependencyInjection\ApiServiceExtension;
6
use Http\Adapter\Guzzle6\Client;
7
use Http\Message\MessageFactory\GuzzleMessageFactory;
8
use Http\Message\UriFactory\GuzzleUriFactory;
9
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;
10
use Symfony\Component\DependencyInjection\Reference;
11
12
class ApiServiceExtensionTest extends AbstractExtensionTestCase
13
{
14
    protected function setUp()
15
    {
16
        parent::setUp();
17
        $this->setParameter('kernel.debug', true);
18
    }
19
20
    protected function getContainerExtensions()
21
    {
22
        return [new ApiServiceExtension()];
23
    }
24
25
    public function testConfigLoadDefault()
26
    {
27
        $this->load();
28
29
        foreach (['uri_factory', 'client', 'message_factory'] as $type) {
30
            $this->assertContainerBuilderHasAlias("api_service.$type", "httplug.$type");
31
        }
32
    }
33
34
    public function testItUseHttpPlugServicesByDefault()
35
    {
36
        // Given services registered by th HTTPlug bundle
37
        $this->container->register('httplug.client', Client::class);
38
        $this->container->register('httplug.message_factory', GuzzleMessageFactory::class);
39
        $this->container->register('httplug.uri_factory', GuzzleUriFactory::class);
40
41
        $this->load();
42
43
        $this->assertContainerBuilderHasService('api_service.client', Client::class);
44
        $this->assertContainerBuilderHasService('api_service.message_factory', GuzzleMessageFactory::class);
45
        $this->assertContainerBuilderHasService('api_service.uri_factory', GuzzleUriFactory::class);
46
    }
47
48
    public function testItUseACachedSchemaFactory()
49
    {
50
        $this->load([
51
            'cache' => [
52
                'service' => 'fake.cache.service'
53
            ]
54
        ]);
55
56
        $this->assertContainerBuilderHasAlias(
57
            'api_service.schema_factory',
58
            'api_service.schema_factory.cached_factory'
59
        );
60
    }
61
62
    public function testItProvideApiServices()
63
    {
64
        $this->load([
65
            'apis' => [
66
                'foo' => [
67
                    'schema' => '/path/to/schema.json'
68
                ]
69
            ]
70
        ]);
71
72
        $this->assertContainerBuilderHasService('api_service.api.foo');
73
    }
74
75
    public function testItProvidePagination()
76
    {
77
        $this->load([
78
            'pagination' => [
79
                'header' => []
80
            ]
81
        ]);
82
83
        $expectedReference = new Reference('api_service.pagination_provider.chain');
84
        $this->assertContainerBuilderHasServiceDefinitionWithArgument(
85
            'api_service.denormalizer.resource',
86
            0,
87
            $expectedReference
88
        );
89
90
        $expectedReferences = [new Reference('api_service.pagination_provider.header')];
91
        $this->assertContainerBuilderHasServiceDefinitionWithArgument(
92
            'api_service.pagination_provider.chain',
93
            0,
94
            $expectedReferences
95
        );
96
    }
97
}
98