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)); }