FHMultiSiteExtensionTest::tearDown()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace FH\Bundle\MultiSiteBundle\Tests\DependencyInjection;
6
7
use FH\Bundle\MultiSiteBundle\DependencyInjection\FHMultiSiteExtension;
8
use FH\Bundle\MultiSiteBundle\Site\SiteRepositoryInterface;
9
use PHPUnit\Framework\TestCase;
10
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
11
use Symfony\Component\DependencyInjection\ContainerBuilder;
12
13
final class FHMultiSiteExtensionTest extends TestCase
14
{
15
    /**
16
     * @var ContainerBuilder
17
     */
18
    private $container;
19
20
    /**
21
     * @var FHMultiSiteExtension
22
     */
23
    private $extension;
24
25
    protected function setUp(): void
26
    {
27
        $this->container = new ContainerBuilder();
28
        $this->extension = new FHMultiSiteExtension();
29
    }
30
31
    protected function tearDown(): void
32
    {
33
        unset($this->container, $this->extension);
34
    }
35
36
    public function testExtensionRequiresARepository(): void
37
    {
38
        $this->expectException(InvalidConfigurationException::class);
39
        $this->expectExceptionMessageMatches('/^The child (config|node) "repository" (under|at path) "fh_multi_site" must be configured.$/');
40
41
        $this->extension->load([], $this->container);
42
    }
43
44
    public function testRepositoryCanBeConfigured(): void
45
    {
46
        $this->extension->load(
47
            [
48
                'fh_multi_site' => [
49
                    'repository' => 'My\\Custom\\SiteRepository',
50
                ],
51
            ],
52
            $this->container
53
        );
54
55
        $this->assertTrue($this->container->hasAlias(SiteRepositoryInterface::class));
56
        $this->assertSame('My\\Custom\\SiteRepository', (string) $this->container->getAlias(SiteRepositoryInterface::class));
57
    }
58
}
59