Example #1
0
 public function testGetFilterFieldDescription()
 {
     $modelAdmin = new ModelAdmin('sonata.post.admin.model', 'Application\\Sonata\\FooBundle\\Entity\\Model', 'SonataFooBundle:ModelAdmin');
     $fooFieldDescription = new FieldDescription();
     $barFieldDescription = new FieldDescription();
     $bazFieldDescription = new FieldDescription();
     $modelManager = $this->getMock('Sonata\\AdminBundle\\Model\\ModelManagerInterface');
     $modelManager->expects($this->exactly(3))->method('getNewFieldDescriptionInstance')->will($this->returnCallback(function ($adminClass, $name, $filterOptions) use($fooFieldDescription, $barFieldDescription, $bazFieldDescription) {
         switch ($name) {
             case 'foo':
                 $fieldDescription = $fooFieldDescription;
                 break;
             case 'bar':
                 $fieldDescription = $barFieldDescription;
                 break;
             case 'baz':
                 $fieldDescription = $bazFieldDescription;
                 break;
             default:
                 throw new \RuntimeException(sprintf('Unknown filter name "%s"', $name));
                 break;
         }
         $fieldDescription->setName($name);
         return $fieldDescription;
     }));
     $modelAdmin->setModelManager($modelManager);
     $pager = $this->getMock('Sonata\\AdminBundle\\Datagrid\\PagerInterface');
     $datagrid = $this->getMock('Sonata\\AdminBundle\\Datagrid\\DatagridInterface');
     $datagrid->expects($this->once())->method('getPager')->will($this->returnValue($pager));
     $datagridBuilder = $this->getMock('Sonata\\AdminBundle\\Builder\\DatagridBuilderInterface');
     $datagridBuilder->expects($this->once())->method('getBaseDatagrid')->with($this->identicalTo($modelAdmin), array())->will($this->returnValue($datagrid));
     $datagridBuilder->expects($this->exactly(3))->method('addFilter')->will($this->returnCallback(function ($datagrid, $type, $fieldDescription, AdminInterface $admin) {
         $admin->addFilterFieldDescription($fieldDescription->getName(), $fieldDescription);
         $fieldDescription->mergeOption('field_options', array('required' => false));
     }));
     $modelAdmin->setDatagridBuilder($datagridBuilder);
     $this->assertSame(array('foo' => $fooFieldDescription, 'bar' => $barFieldDescription, 'baz' => $bazFieldDescription), $modelAdmin->getFilterFieldDescriptions());
     $this->assertFalse($modelAdmin->hasFilterFieldDescription('fooBar'));
     $this->assertTrue($modelAdmin->hasFilterFieldDescription('foo'));
     $this->assertTrue($modelAdmin->hasFilterFieldDescription('bar'));
     $this->assertTrue($modelAdmin->hasFilterFieldDescription('baz'));
     $this->assertSame($fooFieldDescription, $modelAdmin->getFilterFieldDescription('foo'));
     $this->assertSame($barFieldDescription, $modelAdmin->getFilterFieldDescription('bar'));
     $this->assertSame($bazFieldDescription, $modelAdmin->getFilterFieldDescription('baz'));
 }
Example #2
0
 public function testGetSideMenu()
 {
     $item = $this->getMock('Knp\\Menu\\ItemInterface');
     $item->expects($this->once())->method('setChildrenAttribute')->with('class', 'nav navbar-nav');
     $item->expects($this->once())->method('setExtra')->with('translation_domain', 'foo_bar_baz');
     $menuFactory = $this->getMock('Knp\\Menu\\FactoryInterface');
     $menuFactory->expects($this->once())->method('createItem')->will($this->returnValue($item));
     $modelAdmin = new ModelAdmin('sonata.post.admin.model', 'Application\\Sonata\\FooBundle\\Entity\\Model', 'SonataFooBundle:ModelAdmin');
     $modelAdmin->setMenuFactory($menuFactory);
     $modelAdmin->setTranslationDomain('foo_bar_baz');
     $modelAdmin->getSideMenu('foo');
 }