public function testGenerate()
 {
     $data = 'string';
     $tags = ['string_tag'];
     $this->service->expects($this->once())->method('generate')->with($this->equalTo($data), $this->equalTo(false))->will($this->returnValue($tags));
     $this->assertSame($tags, $this->extension->generate($data), 'Should return exact value from service');
 }
 public function testBuildAfter()
 {
     $config = DatagridConfiguration::createNamed(self::TEST_GRID_NAME, []);
     $acceptor = new Acceptor();
     $acceptor->setConfig($config);
     $parameters = $this->getMock('Oro\\Bundle\\DataGridBundle\\Datagrid\\ParameterBag');
     $grid = new Datagrid(self::TEST_GRID_NAME, $config, $parameters);
     $grid->setAcceptor($acceptor);
     $qb = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->getMock();
     $qb->expects($this->once())->method('getDQLPart')->with($this->equalTo('from'))->will($this->returnValue([new From(self::TEST_ENTITY_NAME, 'alias')]));
     $datasourceMock = $this->getMockBuilder('Oro\\Bundle\\DataGridBundle\\Datasource\\Orm\\OrmDatasource')->disableOriginalConstructor()->getMock();
     $datasourceMock->expects($this->any())->method('getQueryBuilder')->will($this->returnValue($qb));
     $this->generator->expects($this->once())->method('generate')->with(self::TEST_ENTITY_NAME)->will($this->returnValue([]));
     $grid->setDatasource($datasourceMock);
     $event = new BuildAfter($grid);
     $this->listener->buildAfter($event);
     $this->assertContains('oronavigation/js/content/grid-builder', $config->offsetGetByPath(sprintf('%s[%s]', ToolbarExtension::OPTIONS_PATH, MetadataObject::REQUIRED_MODULES_KEY)), 'Should add require js module');
 }
 /**
  * Check whenever datasource is ORM and try to generate tags
  * It will be available in metadata and after build will be passed to content-manager
  *
  * @param BuildAfter $event
  */
 public function buildAfter(BuildAfter $event)
 {
     $grid = $event->getDatagrid();
     $datasource = $grid->getDatasource();
     $config = $grid->getAcceptor()->getConfig();
     if ($datasource instanceof OrmDatasource) {
         // autogenerate only in case when it's not passed directly in config
         if (!$config->offsetGetByPath(ToolbarExtension::OPTIONS_PATH . self::TAGS_PATH)) {
             $tags = [];
             $qb = $datasource->getQueryBuilder();
             $fromParts = $qb->getDQLPart('from');
             /** @var \Doctrine\ORM\Query\Expr\From $singleTableMetadata */
             foreach ($fromParts as $singleTableMetadata) {
                 $tags = array_merge($tags, $this->generator->generate($singleTableMetadata->getFrom(), true));
             }
             $config->offsetSetByPath(ToolbarExtension::OPTIONS_PATH . self::TAGS_PATH, $tags);
         }
         $options = $config->offsetGetByPath(ToolbarExtension::OPTIONS_PATH, []);
         $modules = !empty($options[MetadataObject::REQUIRED_MODULES_KEY]) ? $options[MetadataObject::REQUIRED_MODULES_KEY] : [];
         $config->offsetSetByPath(sprintf('%s[%s]', ToolbarExtension::OPTIONS_PATH, MetadataObject::REQUIRED_MODULES_KEY), array_merge($modules, ['oronavigation/js/content/grid-builder']));
     }
 }
 /**
  * @dataProvider supportsDataProvider
  *
  * @param array $generators
  * @param mixed $data
  * @param bool  $result
  */
 public function testSupports(array $generators, $data, $result)
 {
     $chain = new TagGeneratorChain($generators);
     $this->assertEquals($result, $chain->supports($data));
 }
 /**
  * @param mixed $data
  * @param bool  $includeCollectionTag
  * @param bool  $processNestedData
  *
  * @return array
  */
 public function generate($data, $includeCollectionTag = false, $processNestedData = true)
 {
     // enforce plain array should returns
     return array_values($this->tagGeneratorChain->generate($data, $includeCollectionTag, $processNestedData));
 }