Andrej Hudec пре 11 година
родитељ
комит
62129cc018
3 измењених фајлова са 77 додато и 10 уклоњено
  1. 4 10
      Model/AuditManager.php
  2. 7 0
      Model/AuditManagerInterface.php
  3. 66 0
      Tests/Model/AuditManagerTest.php

+ 4 - 10
Model/AuditManager.php

@@ -30,8 +30,7 @@ class AuditManager implements AuditManagerInterface
     }
     }
 
 
     /**
     /**
-     * @param string $serviceId
-     * @param array  $classes
+     * {@inheritdoc}
      */
      */
     public function setReader($serviceId, array $classes)
     public function setReader($serviceId, array $classes)
     {
     {
@@ -39,9 +38,7 @@ class AuditManager implements AuditManagerInterface
     }
     }
 
 
     /**
     /**
-     * @param string $class
-     *
-     * @return bool
+     * {@inheritdoc}
      */
      */
     public function hasReader($class)
     public function hasReader($class)
     {
     {
@@ -55,10 +52,7 @@ class AuditManager implements AuditManagerInterface
     }
     }
 
 
     /**
     /**
-     * @param string $class
-     *
-     * @return \Sonata\AdminBundle\Model\AuditReaderInterface
-     * @throws \RuntimeException
+     * {@inheritdoc}
      */
      */
     public function getReader($class)
     public function getReader($class)
     {
     {
@@ -68,6 +62,6 @@ class AuditManager implements AuditManagerInterface
             }
             }
         }
         }
 
 
-        throw new \RuntimeException(sprintf('The class %s does not have any reader manager', $class));
+        throw new \RuntimeException(sprintf('The class "%s" does not have any reader manager', $class));
     }
     }
 }
 }

+ 7 - 0
Model/AuditManagerInterface.php

@@ -14,12 +14,16 @@ namespace Sonata\AdminBundle\Model;
 interface AuditManagerInterface
 interface AuditManagerInterface
 {
 {
     /**
     /**
+     * Set AuditReaderInterface service id for array of $classes.
+     *
      * @param string $serviceId
      * @param string $serviceId
      * @param array  $classes
      * @param array  $classes
      */
      */
     public function setReader($serviceId, array $classes);
     public function setReader($serviceId, array $classes);
 
 
     /**
     /**
+     * Returns true if $class has AuditReaderInterface.
+     *
      * @param string $class
      * @param string $class
      *
      *
      * @return bool
      * @return bool
@@ -27,9 +31,12 @@ interface AuditManagerInterface
     public function hasReader($class);
     public function hasReader($class);
 
 
     /**
     /**
+     * Get AuditReaderInterface service for $class.
+     *
      * @param string $class
      * @param string $class
      *
      *
      * @return \Sonata\AdminBundle\Model\AuditReaderInterface
      * @return \Sonata\AdminBundle\Model\AuditReaderInterface
+     *
      * @throws \RuntimeException
      * @throws \RuntimeException
      */
      */
     public function getReader($class);
     public function getReader($class);

+ 66 - 0
Tests/Model/AuditManagerTest.php

@@ -0,0 +1,66 @@
+<?php
+
+/*
+ * This file is part of the Sonata package.
+ *
+ * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Sonata\AdminBundle\Model;
+
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Sonata\AdminBundle\Model\AuditManager;
+
+/**
+ * Test for AuditManager
+ *
+ * @author Andrej Hudec <pulzarraider@gmail.com>
+ */
+class AuditManagerTest extends \PHPUnit_Framework_TestCase
+{
+    public function testGetReader()
+    {
+        $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
+
+        $fooReader = $this->getMock('Sonata\AdminBundle\Model\AuditReaderInterface');
+        $barReader = $this->getMock('Sonata\AdminBundle\Model\AuditReaderInterface');
+
+        $container->expects($this->any())
+            ->method('get')
+            ->will($this->returnCallback(function($id) use ($fooReader, $barReader) {
+                    switch ($id) {
+                        case 'foo_reader':
+                            return $fooReader;
+                            break;
+
+                        case 'bar_reader':
+                            return $barReader;
+                            break;
+                    }
+
+                    return null;
+            }));
+
+        $auditManager = new AuditManager($container);
+
+        $this->assertFalse($auditManager->hasReader('Foo\Foo1'));
+
+        $auditManager->setReader('foo_reader', array('Foo\Foo1', 'Foo\Foo2'));
+
+        $this->assertTrue($auditManager->hasReader('Foo\Foo1'));
+        $this->assertSame($fooReader, $auditManager->getReader('Foo\Foo1'));
+    }
+
+    public function testGetReaderWithException()
+    {
+        $this->setExpectedException('\RuntimeException', 'The class "Foo\Foo" does not have any reader manager');
+
+        $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
+        $auditManager = new AuditManager($container);
+
+        $auditManager->getReader('Foo\Foo');
+    }
+}