소스 검색

Use admin entry as service ID (#3903)

In df42796fde5d850f04440fb344cac25caad25268, the admin groups variable was
changed from containing only service IDs to containing an array of options
per item.

To get the service ID, the 'admin' entry should be used.
Wouter J 9 년 전
부모
커밋
c7e103c45b
2개의 변경된 파일45개의 추가작업 그리고 16개의 파일을 삭제
  1. 2 2
      Admin/Pool.php
  2. 43 14
      Tests/Admin/PoolTest.php

+ 2 - 2
Admin/Pool.php

@@ -169,8 +169,8 @@ class Pool
             return $admins;
         }
 
-        foreach ($this->adminGroups[$group]['items'] as $id) {
-            $admins[] = $this->getInstance($id);
+        foreach ($this->adminGroups[$group]['items'] as $item) {
+            $admins[] = $this->getInstance($item['admin']);
         }
 
         return $admins;

+ 43 - 14
Tests/Admin/PoolTest.php

@@ -35,7 +35,7 @@ class PoolTest extends \PHPUnit_Framework_TestCase
 
         $expectedOutput = array(
             'adminGroup1' => array(
-                'sonata.user.admin.group1' => 'adminUserClass',
+                'sonata.user.admin.group1' => 'sonata_user_admin_group1_AdminClass',
             ),
         );
 
@@ -74,13 +74,13 @@ class PoolTest extends \PHPUnit_Framework_TestCase
 
         $pool->setAdminGroups(array(
             'adminGroup1' => array(
-                'items' => array('itemKey' => array('admin' => 'sonata.user.admin.group1', 'label' => '', 'route' => '', 'route_params' => array())),
+                'items' => array('itemKey' => $this->getItemArray('sonata.user.admin.group1')),
             ),
             'adminGroup2' => array(
-                'items' => array('itemKey' => array('admin' => 'sonata.user.admin.group2', 'label' => '', 'route' => '', 'route_params' => array())),
+                'items' => array('itemKey' => $this->getItemArray('sonata.user.admin.group2')),
             ),
             'adminGroup3' => array(
-                'items' => array('itemKey' => array('admin' => 'sonata.user.admin.group3', 'label' => '', 'route' => '', 'route_params' => array())),
+                'items' => array('itemKey' => $this->getItemArray('sonata.user.admin.group3')),
             ),
         ));
 
@@ -115,12 +115,22 @@ class PoolTest extends \PHPUnit_Framework_TestCase
     {
         $this->pool->setAdminServiceIds(array('sonata.admin1', 'sonata.admin2', 'sonata.admin3'));
         $this->pool->setAdminGroups(array(
-            'adminGroup1' => array('items' => array('sonata.admin1', 'sonata.admin2')),
-            'adminGroup2' => array('items' => array('sonata.admin3')),
+            'adminGroup1' => array(
+                'items' => array(
+                    $this->getItemArray('sonata.admin1'),
+                    $this->getItemArray('sonata.admin2'),
+                ),
+            ),
+            'adminGroup2' => array(
+                'items' => array($this->getItemArray('sonata.admin3')),
+            ),
         ));
 
-        $this->assertCount(2, $this->pool->getAdminsByGroup('adminGroup1'));
-        $this->assertCount(1, $this->pool->getAdminsByGroup('adminGroup2'));
+        $this->assertEquals(array(
+            'sonata_admin1_AdminClass',
+            'sonata_admin2_AdminClass',
+        ), $this->pool->getAdminsByGroup('adminGroup1'));
+        $this->assertEquals(array('sonata_admin3_AdminClass'), $this->pool->getAdminsByGroup('adminGroup2'));
     }
 
     public function testGetAdminForClassWhenAdminClassIsNotSet()
@@ -146,17 +156,23 @@ class PoolTest extends \PHPUnit_Framework_TestCase
      */
     public function testGetAdminForClassWithTooManyRegisteredAdmin()
     {
-        $this->pool->setAdminClasses(array('someclass' => array('sonata.user.admin.group1', 'sonata.user.admin.group2')));
+        $this->pool->setAdminClasses(array(
+            'someclass' => array('sonata.user.admin.group1', 'sonata.user.admin.group2'),
+        ));
+
         $this->assertTrue($this->pool->hasAdminByClass('someclass'));
-        $this->assertSame('adminUserClass', $this->pool->getAdminByClass('someclass'));
+        $this->pool->getAdminByClass('someclass');
     }
 
     public function testGetAdminForClassWhenAdminClassIsSet()
     {
         $this->pool->setAdminServiceIds(array('sonata.user.admin.group1'));
-        $this->pool->setAdminClasses(array('someclass' => array('sonata.user.admin.group1')));
+        $this->pool->setAdminClasses(array(
+            'someclass' => array('sonata.user.admin.group1'),
+        ));
+
         $this->assertTrue($this->pool->hasAdminByClass('someclass'));
-        $this->assertSame('adminUserClass', $this->pool->getAdminByClass('someclass'));
+        $this->assertSame('sonata_user_admin_group1_AdminClass', $this->pool->getAdminByClass('someclass'));
     }
 
     /**
@@ -171,7 +187,8 @@ class PoolTest extends \PHPUnit_Framework_TestCase
     public function testGetAdminByAdminCode()
     {
         $this->pool->setAdminServiceIds(array('sonata.news.admin.post'));
-        $this->assertSame('adminUserClass', $this->pool->getAdminByAdminCode('sonata.news.admin.post'));
+
+        $this->assertSame('sonata_news_admin_post_AdminClass', $this->pool->getAdminByAdminCode('sonata.news.admin.post'));
     }
 
     public function testGetAdminByAdminCodeForChildClass()
@@ -261,8 +278,20 @@ class PoolTest extends \PHPUnit_Framework_TestCase
         $containerMock = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
         $containerMock->expects($this->any())
             ->method('get')
-            ->will($this->returnValue('adminUserClass'));
+            ->will($this->returnCallback(function ($serviceId) {
+                return str_replace('.', '_', $serviceId).'_AdminClass';
+            }));
 
         return $containerMock;
     }
+
+    private function getItemArray($serviceId)
+    {
+        return array(
+            'admin' => $serviceId,
+            'label' => '',
+            'route' => '',
+            'route_params' => array(),
+        );
+    }
 }