Passed
Push — feature/94-combine-gacela-file... ( 2b5490...9cfe7e )
by Chema
03:41
created

test_combine_different_mapping_interfaces()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 20
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 12
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 20
rs 9.8666
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GacelaTest\Unit\Framework\Config\GacelaFileConfig;
6
7
use Gacela\Framework\Config\GacelaFileConfig\GacelaConfigFile;
8
use Gacela\Framework\Config\GacelaFileConfig\GacelaConfigItem;
9
use GacelaTest\Fixtures\AbstractCustom;
10
use GacelaTest\Fixtures\CustomClass;
11
use GacelaTest\Fixtures\CustomInterface;
12
use PHPUnit\Framework\TestCase;
13
14
final class GacelaConfigFileTest extends TestCase
15
{
16
    public function test_combine_empty(): void
17
    {
18
        $configFile1 = new GacelaConfigFile();
19
        $configFile2 = new GacelaConfigFile();
20
        $actual = $configFile1->combine($configFile2);
21
22
        $expected = new GacelaConfigFile();
23
24
        self::assertEquals($expected, $actual);
25
    }
26
27
    public function test_combine_config_items(): void
28
    {
29
        $configFile1 = (new GacelaConfigFile())
30
            ->setConfigItems([
31
                new GacelaConfigItem('path1'),
32
            ]);
33
        $configFile2 = (new GacelaConfigFile())
34
            ->setConfigItems([
35
                new GacelaConfigItem('path2'),
36
            ]);
37
38
        $actual = $configFile1->combine($configFile2);
39
40
        $expected = (new GacelaConfigFile())
41
            ->setConfigItems([
42
                new GacelaConfigItem('path1'),
43
                new GacelaConfigItem('path2'),
44
            ]);
45
46
        self::assertEquals($expected, $actual);
47
    }
48
49
    public function test_combine_duplicated_mapping_interfaces(): void
50
    {
51
        $configFile1 = (new GacelaConfigFile())
52
            ->setMappingInterfaces([
53
                CustomInterface::class => CustomClass::class,
54
            ]);
55
        $configFile2 = (new GacelaConfigFile())
56
            ->setMappingInterfaces([
57
                CustomInterface::class => new CustomClass(),
58
            ]);
59
60
        $actual = $configFile1->combine($configFile2);
61
62
        $expected = (new GacelaConfigFile())
63
            ->setMappingInterfaces([
64
                CustomInterface::class => new CustomClass(),
65
            ]);
66
67
        self::assertEquals($expected, $actual);
68
    }
69
70
    public function test_combine_different_mapping_interfaces(): void
71
    {
72
        $configFile1 = (new GacelaConfigFile())
73
            ->setMappingInterfaces([
74
                AbstractCustom::class => CustomClass::class,
75
            ]);
76
        $configFile2 = (new GacelaConfigFile())
77
            ->setMappingInterfaces([
78
                CustomInterface::class => new CustomClass(),
79
            ]);
80
81
        $actual = $configFile1->combine($configFile2);
82
83
        $expected = (new GacelaConfigFile())
84
            ->setMappingInterfaces([
85
                AbstractCustom::class => CustomClass::class,
86
                CustomInterface::class => new CustomClass(),
87
            ]);
88
89
        self::assertEquals($expected, $actual);
90
    }
91
92
    public function test_combine_duplicated_suffix_types(): void
93
    {
94
        $configFile1 = (new GacelaConfigFile())
95
            ->setSuffixTypes([
96
                'Factory' => ['F'],
97
                'Config' => ['C'],
98
                'DependencyProvider' => ['DP'],
99
            ]);
100
        $configFile2 = (new GacelaConfigFile())
101
            ->setSuffixTypes([
102
                'Factory' => ['F'],
103
                'Config' => ['C'],
104
                'DependencyProvider' => ['DP'],
105
            ]);
106
107
        $actual = $configFile1->combine($configFile2);
108
109
        $expected = (new GacelaConfigFile())
110
            ->setSuffixTypes([
111
                'Factory' => ['F'],
112
                'Config' => ['C'],
113
                'DependencyProvider' => ['DP'],
114
            ]);
115
116
        self::assertEquals($expected, $actual);
117
    }
118
119
    public function test_combine_different_suffix_types(): void
120
    {
121
        $configFile1 = (new GacelaConfigFile())
122
            ->setSuffixTypes([
123
                'Factory' => ['F1'],
124
                'Config' => ['C1'],
125
                'DependencyProvider' => ['DP1'],
126
            ]);
127
        $configFile2 = (new GacelaConfigFile())
128
            ->setSuffixTypes([
129
                'Factory' => ['F2'],
130
                'Config' => ['C2'],
131
                'DependencyProvider' => ['DP2'],
132
            ]);
133
134
        $actual = $configFile1->combine($configFile2);
135
136
        $expected = (new GacelaConfigFile())
137
            ->setSuffixTypes([
138
                'Factory' => ['F1', 'F2'],
139
                'Config' => ['C1', 'C2'],
140
                'DependencyProvider' => ['DP1', 'DP2'],
141
            ]);
142
143
        self::assertEquals($expected, $actual);
144
    }
145
}
146