* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Sonata\AdminBundle\Tests\Admin; use Sonata\AdminBundle\Admin\AdminHelper; use Sonata\AdminBundle\Admin\Pool; use Symfony\Component\Form\FormBuilder; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Form\FormFactoryInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Sonata\AdminBundle\Admin\FieldDescriptionInterface; use Sonata\AdminBundle\Admin\AdminInterface; use Symfony\Component\Form\FormView; class AdminHelperTest extends \PHPUnit_Framework_TestCase { public function testgetChildFormBuilder() { $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface'); $pool = new Pool($container, 'title', 'logo.png'); $helper = new AdminHelper($pool); $formFactory = $this->getMock('Symfony\Component\Form\FormFactoryInterface'); $eventDispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface'); $formBuilder = new FormBuilder('test', $formFactory, $eventDispatcher); $childFormBuilder = new FormBuilder('elementId', $formFactory, $eventDispatcher); $formBuilder->add($childFormBuilder); $this->assertNull($helper->getChildFormBuilder($formBuilder, 'foo')); $this->isInstanceOf('Symfony\Component\Form\FormBuilder', $helper->getChildFormBuilder($formBuilder, 'test_elementId')); } public function testgetChildFormView() { $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface'); $pool = new Pool($container, 'title', 'logo.png'); $helper = new AdminHelper($pool); $formView = new FormView(); $formView->set('id', 'test'); $child = new FormView(); $child->set('id', 'test_elementId'); $formView->setChildren(array('elementId' => $child)); $this->assertNull($helper->getChildFormView($formView, 'foo')); $this->isInstanceOf('Symfony\Component\Form\FormView', $helper->getChildFormView($formView, 'test_elementId')); } public function testaddNewInstance() { $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface'); $pool = new Pool($container, 'title', 'logo.png'); $helper = new AdminHelper($pool); $admin = $this->getMock('Sonata\AdminBundle\Admin\AdminInterface'); $admin->expects($this->once())->method('getNewInstance')->will($this->returnValue(new \stdClass())); $fieldDescription = $this->getMock('Sonata\AdminBundle\Admin\FieldDescriptionInterface'); $fieldDescription->expects($this->once())->method('getAssociationAdmin')->will($this->returnValue($admin)); $fieldDescription->expects($this->once())->method('getAssociationMapping')->will($this->returnValue(array('fieldName' => 'fooBar'))); $object = $this->getMock('sdtClass', array('addFooBar')); $object->expects($this->once())->method('addFooBar'); $helper->addNewInstance($object, $fieldDescription); } }