]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php
Create user config in one place
[github/wallabag/wallabag.git] / tests / Wallabag / UserBundle / EventListener / CreateConfigListenerTest.php
diff --git a/tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php b/tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php
new file mode 100644 (file)
index 0000000..0cebd3e
--- /dev/null
@@ -0,0 +1,93 @@
+<?php
+
+namespace Tests\Wallabag\UserBundle\EventListener;
+
+use FOS\UserBundle\Event\FilterUserResponseEvent;
+use FOS\UserBundle\FOSUserEvents;
+use Symfony\Component\EventDispatcher\EventDispatcher;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Wallabag\CoreBundle\Entity\Config;
+use Wallabag\UserBundle\EventListener\CreateConfigListener;
+use Wallabag\UserBundle\Entity\User;
+
+class CreateConfigListenerTest extends \PHPUnit_Framework_TestCase
+{
+    private $em;
+    private $listener;
+    private $dispatcher;
+    private $request;
+    private $response;
+
+    protected function setUp()
+    {
+        $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->listener = new CreateConfigListener(
+            $this->em,
+            'baggy',
+            20,
+            50,
+            'fr',
+            1
+        );
+
+        $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_COMPLETED,
+            $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');
+        $config->setReadingSpeed(1);
+
+        $this->em->expects($this->once())
+            ->method('persist')
+            ->will($this->returnValue($config));
+        $this->em->expects($this->once())
+            ->method('flush');
+
+        $this->dispatcher->dispatch(
+            FOSUserEvents::REGISTRATION_COMPLETED,
+            $event
+        );
+    }
+}