From: Jeremy Benoist Date: Thu, 1 Oct 2015 20:25:23 +0000 (+0200) Subject: Add test on RegistrationConfirmedListener X-Git-Tag: 2.0.0-alpha.1~28^2~7 X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=772d8c4b93adc36baefda93ec37007e4a85321de;p=github%2Fwallabag%2Fwallabag.git Add test on RegistrationConfirmedListener And PLEASE @nicosomb, NEVER EVER inject the whole container inside a service. --- diff --git a/src/Wallabag/CoreBundle/EventListener/RegistrationConfirmedListener.php b/src/Wallabag/CoreBundle/EventListener/RegistrationConfirmedListener.php index bcc84923..68c25f1f 100644 --- a/src/Wallabag/CoreBundle/EventListener/RegistrationConfirmedListener.php +++ b/src/Wallabag/CoreBundle/EventListener/RegistrationConfirmedListener.php @@ -2,22 +2,28 @@ namespace Wallabag\CoreBundle\EventListener; -use FOS\UserBundle\FOSUserEvents; -use Symfony\Component\DependencyInjection\Container; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Doctrine\ORM\EntityManager; use FOS\UserBundle\Event\FilterUserResponseEvent; +use FOS\UserBundle\FOSUserEvents; use Wallabag\CoreBundle\Entity\Config; class RegistrationConfirmedListener implements EventSubscriberInterface { private $em; - private $container; + private $theme; + private $itemsOnPage; + private $rssLimit; + private $language; - public function __construct(Container $container, $em) + public function __construct(EntityManager $em, $theme, $itemsOnPage, $rssLimit, $language) { - $this->container = $container; $this->em = $em; + $this->theme = $theme; + $this->itemsOnPage = $itemsOnPage; + $this->rssLimit = $rssLimit; + $this->language = $language; } public static function getSubscribedEvents() @@ -34,10 +40,10 @@ class RegistrationConfirmedListener implements EventSubscriberInterface } $config = new Config($event->getUser()); - $config->setTheme($this->container->getParameter('theme')); - $config->setItemsPerPage($this->container->getParameter('items_on_page')); - $config->setRssLimit($this->container->getParameter('rss_limit')); - $config->setLanguage($this->container->getParameter('language')); + $config->setTheme($this->theme); + $config->setItemsPerPage($this->itemsOnPage); + $config->setRssLimit($this->rssLimit); + $config->setLanguage($this->language); $this->em->persist($config); $this->em->flush(); } diff --git a/src/Wallabag/CoreBundle/Resources/config/services.yml b/src/Wallabag/CoreBundle/Resources/config/services.yml index f2247260..c38787de 100644 --- a/src/Wallabag/CoreBundle/Resources/config/services.yml +++ b/src/Wallabag/CoreBundle/Resources/config/services.yml @@ -34,7 +34,8 @@ services: wallabag_core.doctrine.prefixed_naming_strategy: class: Wallabag\CoreBundle\Doctrine\Mapping\PrefixedNamingStrategy - arguments: [%database_table_prefix%] + arguments: + - %database_table_prefix% wallabag_core.graby: class: Graby\Graby @@ -48,6 +49,11 @@ services: wallabag_core.registration_confirmed: class: Wallabag\CoreBundle\EventListener\RegistrationConfirmedListener - arguments: [@service_container, @doctrine.orm.entity_manager] + arguments: + - @doctrine.orm.entity_manager + - %theme% + - %items_on_page% + - %rss_limit% + - %language% tags: - { name: kernel.event_subscriber } diff --git a/src/Wallabag/CoreBundle/Tests/EventListener/RegistrationConfirmedListenerTest.php b/src/Wallabag/CoreBundle/Tests/EventListener/RegistrationConfirmedListenerTest.php new file mode 100644 index 00000000..137c097c --- /dev/null +++ b/src/Wallabag/CoreBundle/Tests/EventListener/RegistrationConfirmedListenerTest.php @@ -0,0 +1,92 @@ +em = $this->getMockBuilder('Doctrine\ORM\EntityManager') + ->disableOriginalConstructor() + ->getMock(); + + $this->listener = new RegistrationConfirmedListener( + $this->em, + 'baggy', + 20, + 50, + 'fr' + ); + + $this->dispatcher = new EventDispatcher(); + $this->dispatcher->addSubscriber($this->listener); + + $this->request = Request::create('/'); + $this->response = Response::create(); + } + + public function testWithInvalidUser() + { + $user = new User(); + $user->setEnabled(false); + + $event = new FilterUserResponseEvent( + $user, + $this->request, + $this->response + ); + + $this->em->expects($this->never())->method('persist'); + $this->em->expects($this->never())->method('flush'); + + $this->dispatcher->dispatch( + FOSUserEvents::REGISTRATION_CONFIRMED, + $event + ); + } + + public function testWithValidUser() + { + $user = new User(); + $user->setEnabled(true); + + $event = new FilterUserResponseEvent( + $user, + $this->request, + $this->response + ); + + $config = new Config($user); + $config->setTheme('baggy'); + $config->setItemsPerPage(20); + $config->setRssLimit(50); + $config->setLanguage('fr'); + + $this->em->expects($this->once()) + ->method('persist') + ->will($this->returnValue($config)); + $this->em->expects($this->once()) + ->method('flush'); + + $this->dispatcher->dispatch( + FOSUserEvents::REGISTRATION_CONFIRMED, + $event + ); + } +}