/**
  * Create a new database connection mock object for every test.
  *
  * @return void
  */
 protected function setUp()
 {
     parent::setUp();
     $this->connection = $this->prophesize(Connection::class);
     $this->connection->quoteIdentifier(Argument::cetera())->will(function ($args) {
         return '"' . join('"."', explode('.', $args[0])) . '"';
     });
     $this->connection->quote(Argument::cetera())->will(function ($args) {
         return "'" . $args[0] . "'";
     });
     $this->connection->getDatabasePlatform()->willReturn(new MockPlatform());
     $this->queryContext = GeneralUtility::makeInstance(QueryContext::class);
     $this->expressionBuilder = GeneralUtility::makeInstance(ExpressionBuilder::class, $this->connection->reveal());
 }
Ejemplo n.º 2
0
 /**
  * @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();
 }