Completed
Push — master ( ac7204...285e3a )
by Emily
03:59
created

loadContainerFromFile()   B

Complexity

Conditions 3
Paths 3

Size

Total Lines 31
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 31
rs 8.8571
c 1
b 0
f 0
cc 3
eloc 20
nc 3
nop 2
1
<?php
2
3
/*
4
 * This file is part of the pixelart Swiftmailer manipulator bundle.
5
 *
6
 * (c) pixelart GmbH
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace DependencyInjection;
13
14
use Pixelart\Bundle\SwiftmailerManipulatorBundle\DependencyInjection\PixelartSwiftmailerManipulatorExtension;
15
use Symfony\Component\Config\FileLocator;
16
use Symfony\Component\DependencyInjection\ContainerBuilder;
17
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
18
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
19
20
class PixelartSwiftmailerManipulatorExtensionTest extends \PHPUnit_Framework_TestCase
21
{
22
    public function getConfigTypes()
23
    {
24
        return [
25
            ['php'],
26
            ['yml'],
27
        ];
28
    }
29
30
    /**
31
     * @dataProvider getConfigTypes
32
     * @expectedException \Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException
33
     */
34
    public function testEmptyConfig($type)
35
    {
36
        $container = $this->loadContainerFromFile('empty', $type);
37
38
        $container->get('pixelart_swiftmailer_manipulator.mailer.default.plugin');
39
    }
40
41
    /**
42
     * @dataProvider getConfigTypes
43
     */
44 View Code Duplication
    public function testFull($type)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
45
    {
46
        $container = $this->loadContainerFromFile('full', $type);
47
48
        self::assertSame(
49
            ['swiftmailer.default.plugin' => [[]]],
50
            $container->getDefinition('pixelart_swiftmailer_manipulator.mailer.default.plugin')->getTags()
51
        );
52
53
        self::assertSame(
54
            '[TESTSYSTEM!]',
55
            $container->getParameter('pixelart_swiftmailer_manipulator.mailer.default.prepend_subject')
56
        );
57
58
        self::assertSame(
59
            'swiftmailer/prepend_body.txt.twig',
60
            $container->getParameter('pixelart_swiftmailer_manipulator.mailer.default.prepend_body')
61
        );
62
    }
63
64
    /**
65
     * @dataProvider getConfigTypes
66
     */
67 View Code Duplication
    public function testOneMailer($type)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
68
    {
69
        $container = $this->loadContainerFromFile('one_mailer', $type);
70
71
        self::assertSame(
72
            ['swiftmailer.main_mailer.plugin' => [[]]],
73
            $container->getDefinition('pixelart_swiftmailer_manipulator.mailer.main_mailer.plugin')->getTags()
74
        );
75
76
        self::assertSame(
77
            '[TESTSYSTEM!]',
78
            $container->getParameter('pixelart_swiftmailer_manipulator.mailer.main_mailer.prepend_subject')
79
        );
80
81
        self::assertSame(
82
            'swiftmailer/prepend_body.txt.twig',
83
            $container->getParameter('pixelart_swiftmailer_manipulator.mailer.main_mailer.prepend_body')
84
        );
85
    }
86
87
    /**
88
     * @dataProvider getConfigTypes
89
     */
90
    public function testManyMailers($type)
91
    {
92
        $container = $this->loadContainerFromFile('many_mailers', $type);
93
94
        // first mailer
95
        self::assertSame(
96
            ['swiftmailer.first_mailer.plugin' => [[]]],
97
            $container->getDefinition('pixelart_swiftmailer_manipulator.mailer.first_mailer.plugin')->getTags()
98
        );
99
100
        self::assertSame(
101
            '[TESTSYSTEM 1!]',
102
            $container->getParameter('pixelart_swiftmailer_manipulator.mailer.first_mailer.prepend_subject')
103
        );
104
105
        self::assertSame(
106
            'swiftmailer/prepend_body_1.txt.twig',
107
            $container->getParameter('pixelart_swiftmailer_manipulator.mailer.first_mailer.prepend_body')
108
        );
109
110
        // second mailer
111
        self::assertSame(
112
            ['swiftmailer.secondary_mailer.plugin' => [[]]],
113
            $container->getDefinition('pixelart_swiftmailer_manipulator.mailer.secondary_mailer.plugin')->getTags()
114
        );
115
116
        self::assertSame(
117
            '[TESTSYSTEM 2!]',
118
            $container->getParameter('pixelart_swiftmailer_manipulator.mailer.secondary_mailer.prepend_subject')
119
        );
120
121
        self::assertSame(
122
            'swiftmailer/prepend_body_2.txt.twig',
123
            $container->getParameter('pixelart_swiftmailer_manipulator.mailer.secondary_mailer.prepend_body')
124
        );
125
126
        // third mailer
127
        self::assertSame(
128
            ['swiftmailer.third_mailer.plugin' => [[]]],
129
            $container->getDefinition('pixelart_swiftmailer_manipulator.mailer.third_mailer.plugin')->getTags()
130
        );
131
132
        self::assertSame(
133
            '[TESTSYSTEM 3!]',
134
            $container->getParameter('pixelart_swiftmailer_manipulator.mailer.third_mailer.prepend_subject')
135
        );
136
137
        self::assertSame(
138
            'swiftmailer/prepend_body_3.txt.twig',
139
            $container->getParameter('pixelart_swiftmailer_manipulator.mailer.third_mailer.prepend_body')
140
        );
141
    }
142
143
    /**
144
     * @param  string $file
145
     * @param  string $type
146
     *
147
     * @return ContainerBuilder
148
     */
149
    private function loadContainerFromFile($file, $type)
150
    {
151
        $container = new ContainerBuilder();
152
153
        $container->setParameter('kernel.debug', false);
154
        $container->setParameter('kernel.cache_dir', '/tmp');
155
156
        $container->registerExtension(new PixelartSwiftmailerManipulatorExtension());
157
        $locator = new FileLocator(__DIR__.'/Fixtures/config/'.$type);
158
159
        switch ($type) {
160
            case 'yml':
161
                $loader = new YamlFileLoader($container, $locator);
162
                break;
163
164
            case 'php':
165
                $loader = new PhpFileLoader($container, $locator);
166
                break;
167
168
            default:
169
                throw new \InvalidArgumentException(sprintf('Unexpected loader format "%s"', $type));
170
        }
171
172
        $loader->load($file.'.'.$type);
173
174
        $container->getCompilerPassConfig()->setOptimizationPasses([]);
175
        $container->getCompilerPassConfig()->setRemovingPasses([]);
176
        $container->compile();
177
178
        return $container;
179
    }
180
}
181