ソースを参照

Improved QueryStringBuilderTest and RouteCollectionTest

Andrej Hudec 11 年 前
コミット
6d195d59d6

+ 57 - 3
Tests/Route/QueryStringBuilderTest.php

@@ -16,14 +16,63 @@ use Sonata\AdminBundle\Route\RouteCollection;
 
 class QueryStringBuilderTest extends \PHPUnit_Framework_TestCase
 {
+    /**
+     * @dataProvider getBuildTests
+     */
+    public function testBuild(array $expectedRoutes, $hasReader, $aclEnabled, $getParent)
+    {
+        $audit = $this->getMock('Sonata\AdminBundle\Model\AuditManagerInterface');
+        $audit->expects($this->once())->method('hasReader')->will($this->returnValue($hasReader));
+
+        $admin = $this->getMock('Sonata\AdminBundle\Admin\AdminInterface');
+        $admin->expects($this->once())->method('getParent')->will($this->returnValue($getParent));
+        $admin->expects($this->any())->method('getChildren')->will($this->returnValue(array()));
+        $admin->expects($this->once())->method('isAclEnabled')->will($this->returnValue($aclEnabled));
+
+        $routeCollection = new RouteCollection('base.Code.Route', 'baseRouteName', 'baseRoutePattern', 'baseControllerName');
+
+        $pathBuilder = new QueryStringBuilder($audit);
+
+        $pathBuilder->build($admin, $routeCollection);
+
+        $this->assertCount(count($expectedRoutes), $routeCollection->getElements());
 
-    public function testBuild()
+        foreach ($expectedRoutes as $expectedRoute) {
+            $this->assertTrue($routeCollection->has($expectedRoute), sprintf('Expected route: "%s" doesn`t exist.', $expectedRoute));
+        }
+    }
+
+    public function getBuildTests()
+    {
+        return array(
+            array(array('list', 'create', 'batch', 'edit', 'delete', 'show', 'export', 'history', 'history_view_revision', 'acl'), true, true, null),
+            array(array('list', 'create', 'batch', 'edit', 'delete', 'show', 'export', 'acl'), false, true, null),
+            array(array('list', 'create', 'batch', 'edit', 'delete', 'show', 'export', 'history', 'history_view_revision'), true, false, null),
+            array(array('list', 'create', 'batch', 'edit', 'delete', 'show', 'export', 'history', 'history_view_revision', 'acl'), true, true, $this->getMock('Sonata\AdminBundle\Admin\AdminInterface')),
+        );
+    }
+
+    public function testBuildWithChildren()
     {
         $audit = $this->getMock('Sonata\AdminBundle\Model\AuditManagerInterface');
         $audit->expects($this->once())->method('hasReader')->will($this->returnValue(true));
 
+        $childRouteCollection1 = new RouteCollection('child1.Code.Route', 'child1RouteName', 'child1RoutePattern', 'child1ControllerName');
+        $childRouteCollection1->add('foo');
+        $childRouteCollection1->add('bar');
+
+        $childRouteCollection2 = new RouteCollection('child2.Code.Route', 'child2RouteName', 'child2RoutePattern', 'child2ControllerName');
+        $childRouteCollection2->add('baz');
+
+        $child1 = $this->getMock('Sonata\AdminBundle\Admin\AdminInterface');
+        $child1->expects($this->once())->method('getRoutes')->will($this->returnValue($childRouteCollection1));
+
+        $child2 = $this->getMock('Sonata\AdminBundle\Admin\AdminInterface');
+        $child2->expects($this->once())->method('getRoutes')->will($this->returnValue($childRouteCollection2));
+
         $admin = $this->getMock('Sonata\AdminBundle\Admin\AdminInterface');
-        $admin->expects($this->once())->method('getChildren')->will($this->returnValue(array()));
+        $admin->expects($this->once())->method('getParent')->will($this->returnValue(null));
+        $admin->expects($this->once())->method('getChildren')->will($this->returnValue(array($child1, $child2)));
         $admin->expects($this->once())->method('isAclEnabled')->will($this->returnValue(true));
 
         $routeCollection = new RouteCollection('base.Code.Route', 'baseRouteName', 'baseRoutePattern', 'baseControllerName');
@@ -32,6 +81,11 @@ class QueryStringBuilderTest extends \PHPUnit_Framework_TestCase
 
         $pathBuilder->build($admin, $routeCollection);
 
-        $this->assertCount(10, $routeCollection->getElements());
+        $expectedRoutes = array('list', 'create', 'batch', 'edit', 'delete', 'show', 'export', 'history', 'history_view_revision', 'acl', 'child1.Code.Route.foo', 'child1.Code.Route.bar', 'child2.Code.Route.baz');
+        $this->assertCount(count($expectedRoutes), $routeCollection->getElements());
+
+        foreach ($expectedRoutes as $expectedRoute) {
+            $this->assertTrue($routeCollection->has($expectedRoute), sprintf('Expected route: "%s" doesn`t exist.', $expectedRoute));
+        }
     }
 }

+ 8 - 0
Tests/Route/RouteCollectionTest.php

@@ -82,6 +82,14 @@ class RouteCollectionTest extends \PHPUnit_Framework_TestCase
         $this->assertFalse($routeCollection->has('list'));
     }
 
+    public function testGetWithException()
+    {
+        $this->setExpectedException('\InvalidArgumentException', 'Element "foo" does not exist.');
+
+        $routeCollection = new RouteCollection('base.Code.Route', 'baseRouteName', 'baseRoutePattern', 'baseControllerName');
+        $routeCollection->get('foo');
+    }
+
     public function testChildCollection()
     {
         $childCollection = new RouteCollection('baseCodeRouteChild', 'baseRouteNameChild', 'baseRoutePatternChild', 'baseControllerNameChild');