Completed
Push — 1.4-password-hashing ( c4872d )
by Kamil
11:17
created

SyliusUserExtensionTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 82
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 1
dl 0
loc 82
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A it_creates_default_resource_factory_by_default() 0 14 1
A it_decorates_user_factory_if_its_configuration_has_encoder_specified() 0 17 1
A it_decorates_user_factory_if_there_is_a_global_encoder_specified_in_the_configuration() 0 16 1
A it_decorates_user_factory_using_the_most_specific_encoder_configured() 0 18 1
A getContainerExtensions() 0 6 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Sylius\Bundle\UserBundle\Tests\DependencyInjection;
6
7
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;
8
use PHPUnit\Framework\Assert;
9
use Sylius\Bundle\UserBundle\DependencyInjection\SyliusUserExtension;
10
use Sylius\Bundle\UserBundle\Factory\UserWithEncoderFactory;
11
use Sylius\Component\Resource\Factory\Factory;
12
13
final class SyliusUserExtensionTest extends AbstractExtensionTestCase
14
{
15
    /** @test */
16
    public function it_creates_default_resource_factory_by_default(): void
17
    {
18
        $this->load([
19
            'resources' => [
20
                'admin' => [
21
                    'user' => [],
22
                ],
23
            ],
24
        ]);
25
26
        $factoryDefinition = $this->container->getDefinition('sylius.factory.admin_user');
27
28
        Assert::assertSame(Factory::class, $factoryDefinition->getClass());
29
    }
30
31
    /** @test */
32
    public function it_decorates_user_factory_if_its_configuration_has_encoder_specified(): void
33
    {
34
        $this->load([
35
            'resources' => [
36
                'admin' => [
37
                    'user' => [
38
                        'encoder' => 'customencoder',
39
                    ],
40
                ],
41
            ],
42
        ]);
43
44
        $factoryDefinition = $this->container->getDefinition('sylius.factory.admin_user');
45
46
        Assert::assertSame(UserWithEncoderFactory::class, $factoryDefinition->getClass());
47
        Assert::assertSame('customencoder', $factoryDefinition->getArgument(1));
48
    }
49
50
    /** @test */
51
    public function it_decorates_user_factory_if_there_is_a_global_encoder_specified_in_the_configuration(): void
52
    {
53
        $this->load([
54
            'encoder' => 'customencoder',
55
            'resources' => [
56
                'admin' => [
57
                    'user' => [],
58
                ],
59
            ],
60
        ]);
61
62
        $factoryDefinition = $this->container->getDefinition('sylius.factory.admin_user');
63
64
        Assert::assertSame(UserWithEncoderFactory::class, $factoryDefinition->getClass());
65
        Assert::assertSame('customencoder', $factoryDefinition->getArgument(1));
66
    }
67
68
    /** @test */
69
    public function it_decorates_user_factory_using_the_most_specific_encoder_configured(): void
70
    {
71
        $this->load([
72
            'encoder' => 'customencoder',
73
            'resources' => [
74
                'admin' => [
75
                    'user' => [
76
                        'encoder' => 'evenmorecustomencoder',
77
                    ],
78
                ],
79
            ],
80
        ]);
81
82
        $factoryDefinition = $this->container->getDefinition('sylius.factory.admin_user');
83
84
        Assert::assertSame(UserWithEncoderFactory::class, $factoryDefinition->getClass());
85
        Assert::assertSame('evenmorecustomencoder', $factoryDefinition->getArgument(1));
86
    }
87
88
    protected function getContainerExtensions(): iterable
89
    {
90
        return [
91
            new SyliusUserExtension(),
92
        ];
93
    }
94
}
95