/**
  * @dataProvider nodeDefinitionProvider
  *
  * @param GroupNodeDefinition $node
  */
 public function testToBlockConfig(GroupNodeDefinition $node)
 {
     $result = $node->toBlockConfig();
     $this->assertArrayHasKey($node->getName(), $result);
     $result = $result[$node->getName()];
     $this->assertArrayHasKey('title', $result);
     $this->assertArrayHasKey('priority', $result);
     $this->assertArrayHasKey('description', $result);
     $this->assertArrayNotHasKey('some_another', $result);
     $this->assertArrayNotHasKey('icon', $result);
 }
 /**
  * Builds group node, called recursively
  *
  * @param array $nodes
  * @param int   $correctFieldsLevel fields should be placed on the same levels that comes from view
  * @param int   $level              current level
  *
  * @throws \Exception
  * @return array
  */
 protected function buildGroupNode($nodes, $correctFieldsLevel, $level = 0)
 {
     $level++;
     foreach ($nodes as $name => $node) {
         if (is_array($node) && isset($node['children'])) {
             if (!isset($this->config[ProcessorDecorator::GROUPS_NODE][$name])) {
                 throw new \Exception(sprintf('Group "%s" does not defined', $name));
             }
             $group = $this->config[ProcessorDecorator::GROUPS_NODE][$name];
             $data = $this->buildGroupNode($node['children'], $correctFieldsLevel, $level);
             $node = new GroupNodeDefinition($name, array_merge($group, $nodes[$name]), $data);
             $node->setLevel($level);
             $nodes[$node->getName()] = $node;
         } else {
             if ($level !== $correctFieldsLevel) {
                 throw new \Exception(sprintf('Field "%s" will not be ever rendered. Please check nesting level', $node));
             }
             $nodes[$name] = $this->buildFieldNode($node);
         }
     }
     return $nodes;
 }
Example #3
0
 /**
  * Builds group node, called recursively
  *
  * @param array $nodes
  * @param int   $correctFieldsLevel fields should be placed on the same levels that comes from view
  * @param int   $level              current level
  *
  * @throws ItemNotFoundException
  * @throws \Exception
  * @return array
  */
 protected function buildGroupNode($nodes, $correctFieldsLevel, $level = 0)
 {
     $level++;
     foreach ($nodes as $name => $node) {
         if (is_array($node) && isset($node['children'])) {
             $group = $this->configBag->getGroupsNode($name);
             if ($group === false) {
                 throw new ItemNotFoundException(sprintf('Group "%s" is not defined.', $name));
             }
             $data = $this->buildGroupNode($node['children'], $correctFieldsLevel, $level);
             $node = new GroupNodeDefinition($name, array_merge($group, $nodes[$name]), $data);
             $node->setLevel($level);
             $nodes[$node->getName()] = $node;
         } else {
             if ($level !== $correctFieldsLevel) {
                 throw new \Exception(sprintf('Field "%s" will not be ever rendered. Please check nesting level', $node));
             }
             $nodes[$name] = $this->buildFieldNode($node);
         }
     }
     return $nodes;
 }