/** * @covers Sonata\AdminBundle\Admin\Admin::getSubClasses * @covers Sonata\AdminBundle\Admin\Admin::getSubClass * @covers Sonata\AdminBundle\Admin\Admin::setSubClasses * @covers Sonata\AdminBundle\Admin\Admin::hasSubClass * @covers Sonata\AdminBundle\Admin\Admin::hasActiveSubClass * @covers Sonata\AdminBundle\Admin\Admin::getActiveSubClass * @covers Sonata\AdminBundle\Admin\Admin::getActiveSubclassCode * @covers Sonata\AdminBundle\Admin\Admin::getClass */ public function testSubClass() { $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\\Entity\\Post', 'SonataNewsBundle:PostAdmin'); $this->assertFalse($admin->hasSubClass('test')); $this->assertFalse($admin->hasActiveSubClass()); $this->assertCount(0, $admin->getSubClasses()); $this->assertNull($admin->getActiveSubClass()); $this->assertNull($admin->getActiveSubclassCode()); $this->assertSame('NewsBundle\\Entity\\Post', $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->assertSame('stdClass', $admin->getClass()); $admin->setSubClasses(array('extended1' => 'NewsBundle\\Entity\\PostExtended1', 'extended2' => 'NewsBundle\\Entity\\PostExtended2')); $this->assertFalse($admin->hasSubClass('test')); $this->assertTrue($admin->hasSubClass('extended1')); $this->assertFalse($admin->hasActiveSubClass()); $this->assertCount(2, $admin->getSubClasses()); $this->assertNull($admin->getActiveSubClass()); $this->assertNull($admin->getActiveSubclassCode()); $this->assertSame('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->assertSame('stdClass', $admin->getActiveSubClass()); $this->assertSame('extended1', $admin->getActiveSubclassCode()); $this->assertSame('stdClass', $admin->getClass()); $request->query->set('subclass', 'inject'); $this->assertNull($admin->getActiveSubclassCode()); }