/**
  * @test
  */
 public function queryRestrictionsAreReevaluatedOnSettingsChangeForExecute()
 {
     $GLOBALS['TCA']['pages']['ctrl'] = ['tstamp' => 'tstamp', 'versioningWS' => true, 'delete' => 'deleted', 'crdate' => 'crdate', 'enablecolumns' => ['disabled' => 'hidden']];
     $this->connection->quoteIdentifier(Argument::cetera())->willReturnArgument(0);
     $this->connection->quoteIdentifiers(Argument::cetera())->willReturnArgument(0);
     $this->connection->getExpressionBuilder()->willReturn(GeneralUtility::makeInstance(ExpressionBuilder::class, $this->connection->reveal()));
     $concreteQueryBuilder = GeneralUtility::makeInstance(\Doctrine\DBAL\Query\QueryBuilder::class, $this->connection->reveal());
     $subject = GeneralUtility::makeInstance(QueryBuilder::class, $this->connection->reveal(), null, $concreteQueryBuilder);
     $subject->select('*')->from('pages')->where('uid=1');
     $subject->getQueryContext()->setIgnoreEnableFields(true)->setIgnoredEnableFields(['disabled']);
     $expectedSQL = 'SELECT * FROM pages WHERE (uid=1) AND (pages.deleted = 0)';
     $this->connection->executeQuery($expectedSQL, Argument::cetera())->shouldBeCalled();
     $subject->execute();
     $subject->getQueryContext()->setIgnoreEnableFields(false);
     $expectedSQL = 'SELECT * FROM pages WHERE (uid=1) AND ((pages.hidden = 0) AND (pages.deleted = 0))';
     $this->connection->executeQuery($expectedSQL, Argument::cetera())->shouldBeCalled();
     $subject->execute();
 }
Exemplo n.º 2
0
 /**
  * Gets an ExpressionBuilder used for object-oriented construction of query expressions.
  * This producer method is intended for convenient inline usage. Example:
  *
  * For more complex expression construction, consider storing the expression
  * builder object in a local variable.
  *
  * @return ExpressionBuilder
  */
 public function expr() : ExpressionBuilder
 {
     return $this->connection->getExpressionBuilder();
 }