Skip to content

Commit aae3170

Browse files
authored
Merge pull request #202 from ElectricMaxxx/inject_services
do not use container directly
2 parents 11de2c1 + 7085000 commit aae3170

18 files changed

+220
-247
lines changed

LocaleInformation/AllowedLocalesProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
* For the full copyright and license information, please view the LICENSE
88
* file that is distributed with this source code.
99
*/
10-
namespace Lunetics\LocaleBundle\LocaleInformation;
1110

11+
namespace Lunetics\LocaleBundle\LocaleInformation;
1212

1313
class AllowedLocalesProvider
1414
{

Resources/config/switcher.xml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
</service>
1919

2020
<service id="lunetics_locale.twig.switcher" class="%lunetics_locale.twig.switcher.class%">
21-
<argument type="service" id="service_container"/>
21+
<argument type="service" id="lunetics_locale.switcher.target_information_builder"/>
22+
<argument type="service" id="lunetics_locale.switcher_helper"/>
2223
<tag name="twig.extension"/>
2324
</service>
2425

@@ -30,5 +31,12 @@
3031
<argument>%lunetics_locale.switcher.redirect_statuscode%</argument>
3132
</service>
3233

34+
<service id="lunetics_locale.switcher.target_information_builder" class="Lunetics\LocaleBundle\Switcher\TargetInformationBuilder">
35+
<argument type="service" id="request_stack" />
36+
<argument type="service" id="router.default"/>
37+
<argument type="service" id="lunetics_locale.allowed_locales_provider"/>
38+
<argument>'%lunetics_locale.switcher.show_current_locale%'</argument>
39+
<argument>'%lunetics_locale.switcher.use_controlle%'</argument>
40+
</service>
3341
</services>
3442
</container>

Switcher/TargetInformationBuilder.php

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
* For the full copyright and license information, please view the LICENSE
88
* file that is distributed with this source code.
99
*/
10+
1011
namespace Lunetics\LocaleBundle\Switcher;
1112

12-
use Symfony\Component\HttpFoundation\Request;
13+
use Lunetics\LocaleBundle\LocaleInformation\AllowedLocalesProvider;
14+
use Symfony\Component\HttpFoundation\RequestStack;
1315
use Symfony\Component\Intl\Intl;
1416
use Symfony\Component\Routing\Exception\InvalidParameterException;
1517
use Symfony\Component\Routing\Exception\RouteNotFoundException;
@@ -24,24 +26,44 @@
2426
*/
2527
class TargetInformationBuilder
2628
{
27-
private $request;
29+
/**
30+
* @var RequestStack
31+
*/
32+
private $requestStack;
33+
/**
34+
* @var RouterInterface
35+
*/
2836
private $router;
37+
/**
38+
* @var bool
39+
*/
2940
private $showCurrentLocale;
41+
/**
42+
* @var bool
43+
*/
3044
private $useController;
31-
private $allowedLocales;
45+
/**
46+
* @var AllowedLocalesProvider
47+
*/
48+
private $allowedLocalesProvider;
3249

3350
/**
34-
* @param Request $request Request
35-
* @param RouterInterface $router Router
36-
* @param array $allowedLocales Config Var
37-
* @param bool $showCurrentLocale Config Var
38-
* @param bool $useController Config Var
51+
* @param RequestStack $requestStack Request
52+
* @param RouterInterface $router Router
53+
* @param AllowedLocalesProvider $allowedLocalesProvider
54+
* @param bool $showCurrentLocale Config Var
55+
* @param bool $useController Config Var
3956
*/
40-
public function __construct(Request $request, RouterInterface $router, $allowedLocales = array(), $showCurrentLocale = false, $useController = false)
41-
{
42-
$this->request = $request;
57+
public function __construct(
58+
RequestStack $requestStack,
59+
RouterInterface $router,
60+
AllowedLocalesProvider $allowedLocalesProvider,
61+
$showCurrentLocale = false,
62+
$useController = false
63+
) {
64+
$this->requestStack = $requestStack;
4365
$this->router = $router;
44-
$this->allowedLocales = $allowedLocales;
66+
$this->allowedLocalesProvider = $allowedLocalesProvider;
4567
$this->showCurrentLocale = $showCurrentLocale;
4668
$this->useController = $useController;
4769
}
@@ -62,13 +84,13 @@ public function __construct(Request $request, RouterInterface $router, $allowedL
6284
* locale_current_language: Anglais
6385
*
6486
* @param string|null $targetRoute The target route
65-
* @param array $parameters Parameters
87+
* @param array $parameters Parameters
6688
*
6789
* @return array Informations for the switcher template
6890
*/
69-
public function getTargetInformations($targetRoute = null, $parameters = array())
91+
public function getTargetInformations($targetRoute = null, $parameters = [])
7092
{
71-
$request = $this->request;
93+
$request = $this->requestStack->getCurrentRequest();
7294
$router = $this->router;
7395
$route = $request->attributes->get('_route');
7496

@@ -83,12 +105,11 @@ public function getTargetInformations($targetRoute = null, $parameters = array()
83105

84106
$infos['current_locale'] = $request->getLocale();
85107
$infos['current_route'] = $route;
86-
$infos['locales'] = array();
108+
$infos['locales'] = [];
87109

88110
$parameters = array_merge((array) $request->attributes->get('_route_params'), $request->query->all(), (array) $parameters);
89111

90-
$targetLocales = $this->allowedLocales;
91-
foreach ($targetLocales as $locale) {
112+
foreach ($this->allowedLocalesProvider->getAllowedLocales() as $locale) {
92113
$strpos = 0 === strpos($request->getLocale(), $locale);
93114
if ($this->showCurrentLocale && $strpos || !$strpos) {
94115
$targetLocaleTargetLang = Intl::getLanguageBundle()->getLanguageName($locale, null, $locale);
@@ -98,7 +119,7 @@ public function getTargetInformations($targetRoute = null, $parameters = array()
98119
if (null !== $targetRoute && "" !== $targetRoute) {
99120
$switchRoute = $router->generate($targetRoute, $parameters);
100121
} elseif ($this->useController) {
101-
$switchRoute = $router->generate('lunetics_locale_switcher', array('_locale' => $locale));
122+
$switchRoute = $router->generate('lunetics_locale_switcher', ['_locale' => $locale]);
102123
} elseif ($route) {
103124
$switchRoute = $router->generate($route, $parameters);
104125
} else {
@@ -118,12 +139,12 @@ public function getTargetInformations($targetRoute = null, $parameters = array()
118139
throw $e;
119140
}
120141

121-
$infos['locales'][$locale] = array(
142+
$infos['locales'][$locale] = [
122143
'locale_current_language' => $targetLocaleCurrentLang,
123144
'locale_target_language' => $targetLocaleTargetLang,
124145
'link' => $switchRoute,
125146
'locale' => $locale,
126-
);
147+
];
127148
}
128149
}
129150

Tests/EventListener/LocaleListenerTest.php

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@
1010

1111
namespace Lunetics\LocaleBundle\Tests\EventListener;
1212

13+
use Lunetics\LocaleBundle\LocaleGuesser\LocaleGuesserInterface;
14+
use Psr\Log\LoggerInterface;
15+
use Symfony\Component\EventDispatcher\EventDispatcher;
1316
use Symfony\Component\HttpFoundation\Request;
17+
use Symfony\Component\HttpFoundation\Response;
1418
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
1519
use Symfony\Component\HttpFoundation\Session\Session;
20+
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
1621
use Symfony\Component\HttpKernel\HttpKernelInterface;
1722
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
1823

@@ -147,7 +152,7 @@ public function testThatGuesserIsNotCalledIfNotInGuessingOrder()
147152

148153
public function testDispatcherIsFired()
149154
{
150-
$dispatcherMock = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventDispatcher')->disableOriginalConstructor()->getMock();
155+
$dispatcherMock = $this->createMock(EventDispatcher::class);
151156
$dispatcherMock->expects($this->once())
152157
->method('dispatch')
153158
->with($this->equalTo(LocaleBundleEvents::onLocaleChange), $this->isInstanceOf('Lunetics\LocaleBundle\Event\FilterLocaleSwitchEvent'));
@@ -162,7 +167,7 @@ public function testDispatcherIsFired()
162167

163168
public function testDispatcherIsNotFired()
164169
{
165-
$dispatcherMock = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventDispatcher')->disableOriginalConstructor()->getMock();
170+
$dispatcherMock = $this->createMock(EventDispatcher::class);
166171
$dispatcherMock->expects($this->never())
167172
->method('dispatch');
168173

@@ -306,7 +311,7 @@ public function testGetSubscribedEvents()
306311

307312
private function getEvent(Request $request)
308313
{
309-
return new GetResponseEvent($this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface'), $request, HttpKernelInterface::MASTER_REQUEST);
314+
return new GetResponseEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST);
310315
}
311316

312317
private function getListener($locale = 'en', $manager = null, $logger = null, $matcher = null)
@@ -316,7 +321,7 @@ private function getListener($locale = 'en', $manager = null, $logger = null, $m
316321
}
317322

318323
$listener = new LocaleListener($locale, $manager, $matcher, $logger);
319-
$listener->setEventDispatcher(new \Symfony\Component\EventDispatcher\EventDispatcher());
324+
$listener->setEventDispatcher(new EventDispatcher());
320325

321326
return $listener;
322327
}
@@ -352,31 +357,23 @@ private function getGuesserManager($order = array(1 => 'router', 2 => 'browser')
352357

353358
private function getMockGuesserManager()
354359
{
355-
return $this
356-
->getMockBuilder('Lunetics\LocaleBundle\LocaleGuesser\LocaleGuesserManager')
357-
->disableOriginalConstructor()
358-
->getMock()
359-
;
360+
return $this->createMock(LocaleGuesserManager::class);
360361
}
361362

362363
/**
363364
* @return LocaleGuesserInterface
364365
*/
365366
private function getMockGuesser()
366367
{
367-
$mock = $this->getMockBuilder('Lunetics\LocaleBundle\LocaleGuesser\LocaleGuesserInterface')->disableOriginalConstructor()->getMock();
368-
369-
return $mock;
368+
return $this->createMock(LocaleGuesserInterface::class);
370369
}
371370

372371
/**
373372
* @return MetaValidator
374373
*/
375374
private function getMetaValidatorMock()
376375
{
377-
$mock = $this->getMockBuilder('\Lunetics\LocaleBundle\Validator\MetaValidator')->disableOriginalConstructor()->getMock();
378-
379-
return $mock;
376+
return $this->createMock(MetaValidator::class);
380377
}
381378

382379
private function getRequestWithRouterParam($routerLocale = 'es')
@@ -413,25 +410,21 @@ private function getEmptyRequest()
413410

414411
private function getMockRequest()
415412
{
416-
return $this->getMock('Symfony\Component\HttpFoundation\Request');
413+
return $this->createMock(Request::class);
417414
}
418415

419416
private function getMockResponse()
420417
{
421-
return $this->getMock('Symfony\Component\HttpFoundation\Response');
418+
return $this->createMock(Response::class);
422419
}
423420

424421
private function getMockFilterResponseEvent()
425422
{
426-
return $this
427-
->getMockBuilder('Symfony\Component\HttpKernel\Event\FilterResponseEvent')
428-
->disableOriginalConstructor()
429-
->getMock()
430-
;
423+
return $this->createMock(FilterResponseEvent::class);
431424
}
432425

433426
private function getMockLogger()
434427
{
435-
return $this->getMock('Psr\Log\LoggerInterface');
428+
return $this->createMock(LoggerInterface::class);
436429
}
437430
}

Tests/EventListener/LocaleUpdateTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
namespace Lunetics\LocaleBundle\Tests\EventListener;
1212

1313
use Lunetics\LocaleBundle\LocaleBundleEvents;
14+
use Psr\Log\LoggerInterface;
1415
use Symfony\Component\HttpFoundation\Session\Session;
1516
use Symfony\Component\HttpKernel\KernelEvents;
1617
use Symfony\Component\HttpKernel\HttpKernelInterface;
@@ -179,7 +180,7 @@ private function getLocaleUpdateListener($registeredGuessers = array(), $updateC
179180

180181
private function getEvent(Request $request)
181182
{
182-
return new FilterResponseEvent($this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface'), $request, HttpKernelInterface::MASTER_REQUEST, new Response);
183+
return new FilterResponseEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST, new Response);
183184
}
184185

185186

@@ -199,6 +200,6 @@ private function getRequest($withCookieSet = false)
199200

200201
private function getMockLogger()
201202
{
202-
return $this->getMock('Psr\Log\LoggerInterface');
203+
return $this->createMock(LoggerInterface::class);
203204
}
204205
}

Tests/Form/Extension/Type/LocaleTypeTest.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
*/
1010
namespace Lunetics\LocaleBundle\Tests\Form\Extension\Type;
1111

12+
use Lunetics\LocaleBundle\Form\Extension\ChoiceList\LocaleChoiceList;
1213
use Lunetics\LocaleBundle\Form\Extension\Type\LocaleType;
14+
use Symfony\Component\OptionsResolver\OptionsResolver;
1315

1416
/**
1517
* @author Kevin Archer <[email protected]>
@@ -46,15 +48,11 @@ public function testGetName()
4648

4749
protected function getMockLocaleChoiceList()
4850
{
49-
return $this
50-
->getMockBuilder('Lunetics\LocaleBundle\Form\Extension\ChoiceList\LocaleChoiceList')
51-
->disableOriginalConstructor()
52-
->getMock()
53-
;
51+
return $this->createMock(LocaleChoiceList::class);
5452
}
5553

5654
protected function getMockOptionsResolverInterface()
5755
{
58-
return $this->getMock('Symfony\Component\OptionsResolver\OptionsResolver');
56+
return $this->createMock(OptionsResolver::class);
5957
}
6058
}

Tests/LocaleGuesser/DomainLocaleGuesserTest.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
namespace Lunetics\LocaleBundle\Tests\LocaleGuesser;
1111

1212
use Lunetics\LocaleBundle\LocaleGuesser\DomainLocaleGuesser;
13+
use Lunetics\LocaleBundle\LocaleInformation\DomainLocaleMap;
14+
use Lunetics\LocaleBundle\Validator\MetaValidator;
15+
use Symfony\Component\HttpFoundation\Request;
1316

1417
/**
1518
* @author Jachim Coudenys <[email protected]>
@@ -65,24 +68,21 @@ public function dataDomains()
6568
);
6669
}
6770

71+
/**
72+
* @return mixed
73+
*/
6874
private function getMockDomainLocaleMap()
6975
{
70-
return $this
71-
->getMockBuilder('\Lunetics\LocaleBundle\LocaleInformation\DomainLocaleMap')
72-
->disableOriginalConstructor()
73-
->getMock();
76+
return $this->createMock(DomainLocaleMap::class);
7477
}
7578

7679
private function getMockMetaValidator()
7780
{
78-
return $this
79-
->getMockBuilder('\Lunetics\LocaleBundle\Validator\MetaValidator')
80-
->disableOriginalConstructor()
81-
->getMock();
81+
return $this->createMock(MetaValidator::class);
8282
}
8383

8484
private function getMockRequest()
8585
{
86-
return $this->getMock('Symfony\Component\HttpFoundation\Request');
86+
return $this->createMock(Request::class);
8787
}
88-
}
88+
}

0 commit comments

Comments
 (0)