/**
  * @param array $rawData
  *
  * @return RuleVo
  */
 public function createRuleVo(array $rawData)
 {
     $this->testKeysExists($rawData, ['id', 'sortOrder', 'definitionUid', 'descending']);
     $vo = new RuleVo($rawData['id']);
     $vo->setOrder($rawData['sortOrder']);
     $vo->setDescending($rawData['descending']);
     $vo->setDefinitionUid($rawData['definitionUid']);
     return $vo;
 }
 public function testDefaultFieldQueryExtenderWithGroupExpressionCondition()
 {
     $defaultFieldQueryExtender = new OrderByFilterChain();
     $ruleVo = new RuleVo(1);
     $ruleVo->setDefinitionUid('s_articles::foo');
     $ruleVo->setDescending(true);
     $ruleVo->setOrder(0);
     $sortDefinition = new MockArticleNameDefinition(new ArticleTableLoader());
     $qb = $this->getQueryBuilder();
     $defaultFieldQueryExtender->extendQuery('product', $sortDefinition, $ruleVo, $qb);
     $this->assertContains('product_foo DESC', $qb->getSQL());
 }
 /**
  * triggers: Memory allocation error: 1038 Out of sort memory, consider increasing server sort buffer size.
  *
  * so no ->execute()
  */
 public function testIntegrationAll()
 {
     $qb = $this->getQueryBuilder();
     $qb->select('*');
     /** @var AbstractSortDefinition $definition */
     foreach ($this->definitionCollection as $definition) {
         $rule = new RuleVo(1);
         $rule->setOrder(0);
         $rule->setDescending(true);
         $rule->setDefinitionUid($definition->getUniqueIdentifier());
         $this->queryExtensionGateway->addRule($rule, $qb);
         $this->assertContains($definition->getFieldName(), $qb->getSQL());
         $this->assertContains($definition->getTableName(), $qb->getSql());
     }
 }