_platformMock = new DatabasePlatformMock(); parent::__construct($params, $driver, $config, $eventManager); // Override possible assignment of platform to database platform mock $this->_platform = $this->_platformMock; } /** * {@inheritdoc} */ public function getDatabasePlatform() { return $this->_platformMock; } /** * {@inheritdoc} */ public function insert($tableName, array $data, array $types = []) { $this->_inserts[$tableName][] = $data; } /** * {@inheritdoc} */ public function executeUpdate($query, array $params = [], array $types = []) { $this->_executeUpdates[] = ['query' => $query, 'params' => $params, 'types' => $types]; } /** * {@inheritdoc} */ public function lastInsertId($seqName = null) { return $this->_lastInsertId; } /** * {@inheritdoc} */ public function fetchColumn($statement, array $params = [], $colnum = 0, array $types = []) { if (null !== $this->_fetchOneException) { throw $this->_fetchOneException; } return $this->_fetchOneResult; } /** * {@inheritdoc} */ public function query() : Statement { return $this->_queryResult; } /** * {@inheritdoc} */ public function quote($input, $type = null) { if (is_string($input)) { return "'" . $input . "'"; } return $input; } /* Mock API */ /** * @param mixed $fetchOneResult * * @return void */ public function setFetchOneResult($fetchOneResult) { $this->_fetchOneResult = $fetchOneResult; } /** * @param \Exception|null $exception * * @return void */ public function setFetchOneException(\Exception $exception = null) { $this->_fetchOneException = $exception; } /** * @param \Doctrine\DBAL\Platforms\AbstractPlatform $platform * * @return void */ public function setDatabasePlatform($platform) { $this->_platformMock = $platform; } /** * @param int $id * * @return void */ public function setLastInsertId($id) { $this->_lastInsertId = $id; } /** * @param Statement $result */ public function setQueryResult(Statement $result) { $this->_queryResult = $result; } /** * @return array */ public function getInserts() { return $this->_inserts; } /** * @return array */ public function getExecuteUpdates() { return $this->_executeUpdates; } /** * @return void */ public function reset() { $this->_inserts = []; $this->_lastInsertId = 0; } }