Browse Source

fix dashboardGroup Admin instance

Amine Zaghdoudi 10 years ago
parent
commit
daadcf2d68
2 changed files with 29 additions and 11 deletions
  1. 9 7
      Admin/Pool.php
  2. 20 4
      Tests/Admin/PoolTest.php

+ 9 - 7
Admin/Pool.php

@@ -84,13 +84,15 @@ class Pool
 
         foreach ($this->adminGroups as $name => $adminGroup) {
             if (isset($adminGroup['items'])) {
-                foreach ($adminGroup['items'] as $key => $id) {
-                    $admin = $this->getInstance($id);
-
-                    if ($admin->showIn(Admin::CONTEXT_DASHBOARD)) {
-                        $groups[$name]['items'][$key] = $admin;
-                    } else {
-                        unset($groups[$name]['items'][$key]);
+                foreach ($adminGroup['items'] as $key => $item) {
+                    if ('' != $item['admin']) {
+                        $admin = $this->getInstance($item['admin']);
+
+                        if ($admin->showIn(Admin::CONTEXT_DASHBOARD)) {
+                            $groups[$name]['items'][$key] = $admin;
+                        } else {
+                            unset($groups[$name]['items'][$key]);
+                        }
                     }
                 }
             }

+ 20 - 4
Tests/Admin/PoolTest.php

@@ -74,19 +74,35 @@ class PoolTest extends \PHPUnit_Framework_TestCase
 
         $pool->setAdminGroups(array(
             'adminGroup1' => array(
-                'items' => array('itemKey' => 'sonata.user.admin.group1')
+                'items' => array('itemKey' =>  array('admin' => 'sonata.user.admin.group1', 'label' => '', 'route' => '', 'route_params' => array()))
             ),
             'adminGroup2' => array(
-                'items' => array('itemKey' => 'sonata.user.admin.group2')
+                'items' => array('itemKey' =>  array('admin' => 'sonata.user.admin.group2', 'label' => '', 'route' => '', 'route_params' => array()))
             ),
             'adminGroup3' => array(
-                'items' => array('itemKey' => 'sonata.user.admin.group3')
+                'items' => array('itemKey' =>  array('admin' => 'sonata.user.admin.group3', 'label' => '', 'route' => '', 'route_params' => array()))
+            ),
+            'adminGroup4' => array(
+                'items' => array('itemKey' => array('admin' => '', 'label' => 'custom_label', 'route' => 'custom_route', 'route_params' => array()))
             ),
         ));
 
         $groups = $pool->getDashboardGroups();
 
-        $this->assertCount(1, $groups);
+        $this->assertCount(2, $groups);
+
+        $expectedAdminGroup4 = array(
+            'items' => array(
+                'itemKey' => array(
+                    'admin'         => '',
+                    'label'         => 'custom_label',
+                    'route'         => 'custom_route',
+                    'route_params'  => array()
+                )
+            )
+        );
+
+        $this->assertEquals($expectedAdminGroup4, $groups['adminGroup4']);
     }
 
     /**