Thomas Rabaix 11 anni fa
parent
commit
0134566081
2 ha cambiato i file con 18 aggiunte e 10 eliminazioni
  1. 9 3
      Admin/Admin.php
  2. 9 7
      Tests/Admin/BaseAdminTest.php

+ 9 - 3
Admin/Admin.php

@@ -938,11 +938,17 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
      */
     public function getClass()
     {
+        if ($this->hasSubject()) {
+            return get_class($this->getSubject());
+        }
+
         if (!$this->hasActiveSubClass()) {
-            $subject = $this->getSubject();
+            if (count($this->getSubClasses()) > 0) {
+                $subject = $this->getSubject();
 
-            if ($subject) {
-                return get_class($subject);
+                if ($subject) {
+                    return get_class($subject);
+                }
             }
 
             return $this->class;

+ 9 - 7
Tests/Admin/BaseAdminTest.php

@@ -388,10 +388,12 @@ class BaseAdminTest extends \PHPUnit_Framework_TestCase
         $this->assertNull($admin->getActiveSubClass());
         $this->assertNull($admin->getActiveSubclassCode());
         $this->assertEquals('NewsBundle\Entity\Post', $admin->getClass());
-        
-        $admin->setSubject(new \stdClass());
-        $this->assertEquals('stdClass', $admin->getClass());
-        
+
+        // Just for the record, if there is no inheritance set, the getSubject is not used
+        // the getSubject can also lead to some issue
+         $admin->setSubject(new \stdClass());
+         $this->assertEquals('stdClass', $admin->getClass());
+
         $admin->setSubClasses(array('extended1' => 'NewsBundle\Entity\PostExtended1', 'extended2' => 'NewsBundle\Entity\PostExtended2'));
         $this->assertFalse($admin->hasSubClass('test'));
         $this->assertTrue($admin->hasSubClass('extended1'));
@@ -400,16 +402,16 @@ class BaseAdminTest extends \PHPUnit_Framework_TestCase
         $this->assertNull($admin->getActiveSubClass());
         $this->assertNull($admin->getActiveSubclassCode());
         $this->assertEquals('stdClass', $admin->getClass());
-        
+
         $request = new \Symfony\Component\HttpFoundation\Request(array('subclass' => 'extended1'));
         $admin->setRequest($request);
         $this->assertFalse($admin->hasSubClass('test'));
         $this->assertTrue($admin->hasSubClass('extended1'));
         $this->assertTrue($admin->hasActiveSubClass());
         $this->assertCount(2, $admin->getSubClasses());
-        $this->assertEquals('NewsBundle\Entity\PostExtended1', $admin->getActiveSubClass());
+        $this->assertEquals('stdClass', $admin->getActiveSubClass());
         $this->assertEquals('extended1', $admin->getActiveSubclassCode());
-        $this->assertEquals('NewsBundle\Entity\PostExtended1', $admin->getClass());
+        $this->assertEquals('stdClass', $admin->getClass());
 
         $request->query->set('subclass', 'inject');
         $this->assertNull($admin->getActiveSubclassCode());