/**
  * @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());
 }
 public function testDefaultFieldQueryExtender()
 {
     $extensionGateway = $this->createQueryExtensionGateway();
     $queryBuilder = $this->getQueryBuilder();
     $config = new SumOrderAmount(new OrderTableLoader());
     $rule = new RuleVo(1);
     $rule->setDefinitionUid($config->getUniqueIdentifier());
     $rule->setOrder(0);
     $beforeSql = $queryBuilder->getSQL();
     $extensionGateway->addRule($rule, $queryBuilder);
     $afterSql = $queryBuilder->getSQL();
     $this->assertNotEquals($beforeSql, $afterSql);
 }
 /**
  * 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());
     }
 }
 /**
  * @param RuleVo $vo
  *
  * @return AbstractSortDefinition
  */
 private function loadDefinition(RuleVo $vo)
 {
     return $this->definitionCollection->getDefinition($vo->getDefinitionUid());
 }
 /**
  * Info: Naming comes from DBALQuery Builder.
  *
  * @param RuleVo $rule
  *
  * @return string
  */
 public function getOrder(RuleVo $rule)
 {
     return $rule->isDescending() ? self::ORDER_DESC : self::ORDER_ASC;
 }