/** * 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()); }
/** * @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(); }