Completed
Pull Request — master (#4880)
by Grégoire
18:52
created

testContainerCompileWithJMSDiExtraBundle()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 8
rs 9.4285
cc 1
eloc 4
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Sonata Project package.
7
 *
8
 * (c) Thomas Rabaix <[email protected]>
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Sonata\AdminBundle\Tests\DependencyInjection;
15
16
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;
17
use Sonata\AdminBundle\Bridge\Exporter\AdminExporter;
18
use Sonata\AdminBundle\DependencyInjection\SonataAdminExtension;
19
20
class SonataAdminExtensionTest extends AbstractExtensionTestCase
21
{
22
    /**
23
     * @group legacy
24
     */
25
    public function testContainerCompileWithJMSDiExtraBundle(): void
26
    {
27
        $this->container->setParameter('kernel.bundles', [
28
            'JMSDiExtraBundle' => true,
29
        ]);
30
31
        $this->container->compile();
32
    }
33
34
    public function testHasServiceDefinitionForLockExtension(): void
35
    {
36
        $this->container->setParameter('kernel.bundles', []);
37
        $this->load(['options' => ['lock_protection' => true]]);
38
        $this->assertContainerBuilderHasService('sonata.admin.lock.extension');
39
    }
40
41
    public function testNotHasServiceDefinitionForLockExtension(): void
42
    {
43
        $this->container->setParameter('kernel.bundles', []);
44
        $this->load(['options' => ['lock_protection' => false]]);
45
        $this->assertContainerBuilderNotHasService('sonata.admin.lock.extension');
46
    }
47
48
    public function testLoadsExporterServiceDefinitionWhenExporterBundleIsRegistered(): void
49
    {
50
        $this->container->setParameter('kernel.bundles', ['SonataExporterBundle' => 'whatever']);
51
        $this->load();
52
        $this->assertContainerBuilderHasService(
53
            'sonata.admin.admin_exporter',
54
            AdminExporter::class
55
        );
56
    }
57
58
    public function testHasSecurityRoleParameters(): void
59
    {
60
        $this->container->setParameter('kernel.bundles', []);
61
        $this->load();
62
63
        $this->assertContainerBuilderHasParameter('sonata.admin.configuration.security.role_admin');
64
        $this->assertContainerBuilderHasParameter('sonata.admin.configuration.security.role_super_admin');
65
    }
66
67
    public function testExtraStylesheetsGetAdded(): void
68
    {
69
        $this->container->setParameter('kernel.bundles', []);
70
        $this->load([
71
            'assets' => [
72
                'extra_stylesheets' => [
73
                    'foo/bar.css',
74
                    'bar/quux.css',
75
                ],
76
            ],
77
        ]);
78
        $stylesheets = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['stylesheets'];
79
80
        $this->assertEquals($stylesheets, [
81
            'bundles/sonatacore/vendor/bootstrap/dist/css/bootstrap.min.css',
82
            'bundles/sonatacore/vendor/components-font-awesome/css/font-awesome.min.css',
83
            'bundles/sonatacore/vendor/ionicons/css/ionicons.min.css',
84
            'bundles/sonataadmin/vendor/admin-lte/dist/css/AdminLTE.min.css',
85
            'bundles/sonataadmin/vendor/admin-lte/dist/css/skins/skin-black.min.css',
86
            'bundles/sonataadmin/vendor/iCheck/skins/square/blue.css',
87
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
88
            'bundles/sonataadmin/vendor/jqueryui/themes/base/jquery-ui.css',
89
            'bundles/sonatacore/vendor/select2/select2.css',
90
            'bundles/sonatacore/vendor/select2-bootstrap-css/select2-bootstrap.min.css',
91
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/css/bootstrap-editable.css',
92
            'bundles/sonataadmin/css/styles.css',
93
            'bundles/sonataadmin/css/layout.css',
94
            'bundles/sonataadmin/css/tree.css',
95
            'foo/bar.css',
96
            'bar/quux.css',
97
        ]);
98
    }
99
100
    public function testRemoveStylesheetsGetRemoved(): void
101
    {
102
        $this->container->setParameter('kernel.bundles', []);
103
        $this->load([
104
            'assets' => [
105
                'remove_stylesheets' => [
106
                    'bundles/sonataadmin/vendor/admin-lte/dist/css/skins/skin-black.min.css',
107
                    'bundles/sonataadmin/vendor/jqueryui/themes/base/jquery-ui.css',
108
                ],
109
            ],
110
        ]);
111
112
        $stylesheets = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['stylesheets'];
113
114
        $this->assertEquals($stylesheets, [
115
            'bundles/sonatacore/vendor/bootstrap/dist/css/bootstrap.min.css',
116
            'bundles/sonatacore/vendor/components-font-awesome/css/font-awesome.min.css',
117
            'bundles/sonatacore/vendor/ionicons/css/ionicons.min.css',
118
            'bundles/sonataadmin/vendor/admin-lte/dist/css/AdminLTE.min.css',
119
            'bundles/sonataadmin/vendor/iCheck/skins/square/blue.css',
120
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
121
            'bundles/sonatacore/vendor/select2/select2.css',
122
            'bundles/sonatacore/vendor/select2-bootstrap-css/select2-bootstrap.min.css',
123
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/css/bootstrap-editable.css',
124
            'bundles/sonataadmin/css/styles.css',
125
            'bundles/sonataadmin/css/layout.css',
126
            'bundles/sonataadmin/css/tree.css',
127
        ]);
128
    }
129
130
    public function testExtraJavascriptsGetAdded(): void
131
    {
132
        $this->container->setParameter('kernel.bundles', []);
133
        $this->load([
134
            'assets' => [
135
                'extra_javascripts' => [
136
                    'foo/bar.js',
137
                    'bar/quux.js',
138
                ],
139
            ],
140
        ]);
141
        $javascripts = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['javascripts'];
142
143
        $this->assertEquals($javascripts, [
144
            'bundles/sonatacore/vendor/jquery/dist/jquery.min.js',
145
            'bundles/sonataadmin/vendor/jquery.scrollTo/jquery.scrollTo.min.js',
146
            'bundles/sonatacore/vendor/moment/min/moment.min.js',
147
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/jquery-ui.min.js',
148
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/i18n/jquery-ui-i18n.min.js',
149
            'bundles/sonatacore/vendor/bootstrap/dist/js/bootstrap.min.js',
150
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
151
            'bundles/sonataadmin/vendor/jquery-form/jquery.form.js',
152
            'bundles/sonataadmin/jquery/jquery.confirmExit.js',
153
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/js/bootstrap-editable.min.js',
154
            'bundles/sonatacore/vendor/select2/select2.min.js',
155
            'bundles/sonataadmin/vendor/admin-lte/dist/js/app.min.js',
156
            'bundles/sonataadmin/vendor/iCheck/icheck.min.js',
157
            'bundles/sonataadmin/vendor/slimScroll/jquery.slimscroll.min.js',
158
            'bundles/sonataadmin/vendor/waypoints/lib/jquery.waypoints.min.js',
159
            'bundles/sonataadmin/vendor/waypoints/lib/shortcuts/sticky.min.js',
160
            'bundles/sonataadmin/vendor/readmore-js/readmore.min.js',
161
            'bundles/sonataadmin/vendor/masonry/dist/masonry.pkgd.min.js',
162
            'bundles/sonataadmin/Admin.js',
163
            'bundles/sonataadmin/treeview.js',
164
            'bundles/sonataadmin/sidebar.js',
165
            'foo/bar.js',
166
            'bar/quux.js',
167
        ]);
168
    }
169
170
    public function testRemoveJavascriptsGetRemoved(): void
171
    {
172
        $this->container->setParameter('kernel.bundles', []);
173
        $this->load([
174
            'assets' => [
175
                'remove_javascripts' => [
176
                    'bundles/sonataadmin/vendor/readmore-js/readmore.min.js',
177
                    'bundles/sonataadmin/jquery/jquery.confirmExit.js',
178
                ],
179
            ],
180
        ]);
181
        $javascripts = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['javascripts'];
182
183
        $this->assertEquals($javascripts, [
184
            'bundles/sonatacore/vendor/jquery/dist/jquery.min.js',
185
            'bundles/sonataadmin/vendor/jquery.scrollTo/jquery.scrollTo.min.js',
186
            'bundles/sonatacore/vendor/moment/min/moment.min.js',
187
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/jquery-ui.min.js',
188
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/i18n/jquery-ui-i18n.min.js',
189
            'bundles/sonatacore/vendor/bootstrap/dist/js/bootstrap.min.js',
190
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
191
            'bundles/sonataadmin/vendor/jquery-form/jquery.form.js',
192
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/js/bootstrap-editable.min.js',
193
            'bundles/sonatacore/vendor/select2/select2.min.js',
194
            'bundles/sonataadmin/vendor/admin-lte/dist/js/app.min.js',
195
            'bundles/sonataadmin/vendor/iCheck/icheck.min.js',
196
            'bundles/sonataadmin/vendor/slimScroll/jquery.slimscroll.min.js',
197
            'bundles/sonataadmin/vendor/waypoints/lib/jquery.waypoints.min.js',
198
            'bundles/sonataadmin/vendor/waypoints/lib/shortcuts/sticky.min.js',
199
            'bundles/sonataadmin/vendor/masonry/dist/masonry.pkgd.min.js',
200
            'bundles/sonataadmin/Admin.js',
201
            'bundles/sonataadmin/treeview.js',
202
            'bundles/sonataadmin/sidebar.js',
203
        ]);
204
    }
205
206
    public function testAssetsCanBeAddedAndRemoved(): void
207
    {
208
        $this->container->setParameter('kernel.bundles', []);
209
        $this->load([
210
            'assets' => [
211
                'extra_stylesheets' => [
212
                    'foo/bar.css',
213
                    'bar/quux.css',
214
                ],
215
                'remove_stylesheets' => [
216
                    'bundles/sonataadmin/vendor/admin-lte/dist/css/skins/skin-black.min.css',
217
                    'bundles/sonataadmin/vendor/jqueryui/themes/base/jquery-ui.css',
218
                ],
219
                'extra_javascripts' => [
220
                    'foo/bar.js',
221
                    'bar/quux.js',
222
                ],
223
                'remove_javascripts' => [
224
                    'bundles/sonataadmin/vendor/readmore-js/readmore.min.js',
225
                    'bundles/sonataadmin/jquery/jquery.confirmExit.js',
226
                ],
227
            ],
228
        ]);
229
        $stylesheets = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['stylesheets'];
230
        $javascripts = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['javascripts'];
231
232
        $this->assertEquals($stylesheets, [
233
            'bundles/sonatacore/vendor/bootstrap/dist/css/bootstrap.min.css',
234
            'bundles/sonatacore/vendor/components-font-awesome/css/font-awesome.min.css',
235
            'bundles/sonatacore/vendor/ionicons/css/ionicons.min.css',
236
            'bundles/sonataadmin/vendor/admin-lte/dist/css/AdminLTE.min.css',
237
            'bundles/sonataadmin/vendor/iCheck/skins/square/blue.css',
238
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
239
            'bundles/sonatacore/vendor/select2/select2.css',
240
            'bundles/sonatacore/vendor/select2-bootstrap-css/select2-bootstrap.min.css',
241
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/css/bootstrap-editable.css',
242
            'bundles/sonataadmin/css/styles.css',
243
            'bundles/sonataadmin/css/layout.css',
244
            'bundles/sonataadmin/css/tree.css',
245
            'foo/bar.css',
246
            'bar/quux.css',
247
        ]);
248
249
        $this->assertEquals($javascripts, [
250
            'bundles/sonatacore/vendor/jquery/dist/jquery.min.js',
251
            'bundles/sonataadmin/vendor/jquery.scrollTo/jquery.scrollTo.min.js',
252
            'bundles/sonatacore/vendor/moment/min/moment.min.js',
253
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/jquery-ui.min.js',
254
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/i18n/jquery-ui-i18n.min.js',
255
            'bundles/sonatacore/vendor/bootstrap/dist/js/bootstrap.min.js',
256
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
257
            'bundles/sonataadmin/vendor/jquery-form/jquery.form.js',
258
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/js/bootstrap-editable.min.js',
259
            'bundles/sonatacore/vendor/select2/select2.min.js',
260
            'bundles/sonataadmin/vendor/admin-lte/dist/js/app.min.js',
261
            'bundles/sonataadmin/vendor/iCheck/icheck.min.js',
262
            'bundles/sonataadmin/vendor/slimScroll/jquery.slimscroll.min.js',
263
            'bundles/sonataadmin/vendor/waypoints/lib/jquery.waypoints.min.js',
264
            'bundles/sonataadmin/vendor/waypoints/lib/shortcuts/sticky.min.js',
265
            'bundles/sonataadmin/vendor/masonry/dist/masonry.pkgd.min.js',
266
            'bundles/sonataadmin/Admin.js',
267
            'bundles/sonataadmin/treeview.js',
268
            'bundles/sonataadmin/sidebar.js',
269
            'foo/bar.js',
270
            'bar/quux.js',
271
        ]);
272
    }
273
274
    protected function getContainerExtensions()
275
    {
276
        return [new SonataAdminExtension()];
277
    }
278
}
279