]> source.dussan.org Git - nextcloud-server.git/commitdiff
Remove long depreated AppFramework/Db/Mapper 34490/head
authorRoeland Jago Douma <roeland@famdouma.nl>
Sun, 9 Oct 2022 19:46:22 +0000 (21:46 +0200)
committerRoeland Jago Douma <roeland@famdouma.nl>
Mon, 10 Oct 2022 06:18:32 +0000 (08:18 +0200)
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
lib/composer/composer/autoload_classmap.php
lib/composer/composer/autoload_static.php
lib/public/AppFramework/Db/Mapper.php [deleted file]
tests/lib/AppFramework/Db/MapperTest.php [deleted file]
tests/lib/AppFramework/Db/MapperTestUtility.php [deleted file]

index ededda8d55cc3b60aae41b3cd9e37c551c48e77c..9cdd19d72334d13e55b1eda48d088063f4263e21 100644 (file)
@@ -31,7 +31,6 @@ return array(
     'OCP\\AppFramework\\Db\\DoesNotExistException' => $baseDir . '/lib/public/AppFramework/Db/DoesNotExistException.php',
     'OCP\\AppFramework\\Db\\Entity' => $baseDir . '/lib/public/AppFramework/Db/Entity.php',
     'OCP\\AppFramework\\Db\\IMapperException' => $baseDir . '/lib/public/AppFramework/Db/IMapperException.php',
-    'OCP\\AppFramework\\Db\\Mapper' => $baseDir . '/lib/public/AppFramework/Db/Mapper.php',
     'OCP\\AppFramework\\Db\\MultipleObjectsReturnedException' => $baseDir . '/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php',
     'OCP\\AppFramework\\Db\\QBMapper' => $baseDir . '/lib/public/AppFramework/Db/QBMapper.php',
     'OCP\\AppFramework\\Db\\TTransactional' => $baseDir . '/lib/public/AppFramework/Db/TTransactional.php',
index d2cdea38a81459aff9c0ee9cd7a962ec43da3464..fc636f312b5b15f0d273b85f6831e14f87c8c95a 100644 (file)
@@ -64,7 +64,6 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
         'OCP\\AppFramework\\Db\\DoesNotExistException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/DoesNotExistException.php',
         'OCP\\AppFramework\\Db\\Entity' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/Entity.php',
         'OCP\\AppFramework\\Db\\IMapperException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/IMapperException.php',
-        'OCP\\AppFramework\\Db\\Mapper' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/Mapper.php',
         'OCP\\AppFramework\\Db\\MultipleObjectsReturnedException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php',
         'OCP\\AppFramework\\Db\\QBMapper' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/QBMapper.php',
         'OCP\\AppFramework\\Db\\TTransactional' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/TTransactional.php',
diff --git a/lib/public/AppFramework/Db/Mapper.php b/lib/public/AppFramework/Db/Mapper.php
deleted file mode 100644 (file)
index 2d0dc87..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Christoph Wurst <christoph@winzerhof-wurst.at>
- * @author Joas Schilling <coding@schilljs.com>
- * @author Lukas Reschke <lukas@statuscode.ch>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-namespace OCP\AppFramework\Db;
-
-use OCP\IDBConnection;
-
-/**
- * Simple parent class for inheriting your data access layer from. This class
- * may be subject to change in the future
- * @since 7.0.0
- * @deprecated 14.0.0 Move over to QBMapper
- */
-abstract class Mapper {
-       protected $tableName;
-       protected $entityClass;
-       protected $db;
-
-       /**
-        * @param IDBConnection $db Instance of the Db abstraction layer
-        * @param string $tableName the name of the table. set this to allow entity
-        * @param string $entityClass the name of the entity that the sql should be
-        * mapped to queries without using sql
-        * @since 7.0.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       public function __construct(IDBConnection $db, $tableName, $entityClass = null) {
-               $this->db = $db;
-               $this->tableName = '*PREFIX*' . $tableName;
-
-               // if not given set the entity name to the class without the mapper part
-               // cache it here for later use since reflection is slow
-               if ($entityClass === null) {
-                       $this->entityClass = str_replace('Mapper', '', get_class($this));
-               } else {
-                       $this->entityClass = $entityClass;
-               }
-       }
-
-
-       /**
-        * @return string the table name
-        * @since 7.0.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       public function getTableName() {
-               return $this->tableName;
-       }
-
-
-       /**
-        * Deletes an entity from the table
-        * @param Entity $entity the entity that should be deleted
-        * @return Entity the deleted entity
-        * @since 7.0.0 - return value added in 8.1.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       public function delete(Entity $entity) {
-               $sql = 'DELETE FROM `' . $this->tableName . '` WHERE `id` = ?';
-               $stmt = $this->execute($sql, [$entity->getId()]);
-               $stmt->closeCursor();
-               return $entity;
-       }
-
-
-       /**
-        * Creates a new entry in the db from an entity
-        * @param Entity $entity the entity that should be created
-        * @return Entity the saved entity with the set id
-        * @since 7.0.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       public function insert(Entity $entity) {
-               // get updated fields to save, fields have to be set using a setter to
-               // be saved
-               $properties = $entity->getUpdatedFields();
-               $values = '';
-               $columns = '';
-               $params = [];
-
-               // build the fields
-               $i = 0;
-               foreach ($properties as $property => $updated) {
-                       $column = $entity->propertyToColumn($property);
-                       $getter = 'get' . ucfirst($property);
-
-                       $columns .= '`' . $column . '`';
-                       $values .= '?';
-
-                       // only append colon if there are more entries
-                       if ($i < count($properties) - 1) {
-                               $columns .= ',';
-                               $values .= ',';
-                       }
-
-                       $params[] = $entity->$getter();
-                       $i++;
-               }
-
-               $sql = 'INSERT INTO `' . $this->tableName . '`(' .
-                               $columns . ') VALUES(' . $values . ')';
-
-               $stmt = $this->execute($sql, $params);
-
-               $entity->setId((int) $this->db->lastInsertId($this->tableName));
-
-               $stmt->closeCursor();
-
-               return $entity;
-       }
-
-
-
-       /**
-        * Updates an entry in the db from an entity
-        * @throws \InvalidArgumentException if entity has no id
-        * @param Entity $entity the entity that should be created
-        * @return Entity the saved entity with the set id
-        * @since 7.0.0 - return value was added in 8.0.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       public function update(Entity $entity) {
-               // if entity wasn't changed it makes no sense to run a db query
-               $properties = $entity->getUpdatedFields();
-               if (count($properties) === 0) {
-                       return $entity;
-               }
-
-               // entity needs an id
-               $id = $entity->getId();
-               if ($id === null) {
-                       throw new \InvalidArgumentException(
-                               'Entity which should be updated has no id');
-               }
-
-               // get updated fields to save, fields have to be set using a setter to
-               // be saved
-               // do not update the id field
-               unset($properties['id']);
-
-               $columns = '';
-               $params = [];
-
-               // build the fields
-               $i = 0;
-               foreach ($properties as $property => $updated) {
-                       $column = $entity->propertyToColumn($property);
-                       $getter = 'get' . ucfirst($property);
-
-                       $columns .= '`' . $column . '` = ?';
-
-                       // only append colon if there are more entries
-                       if ($i < count($properties) - 1) {
-                               $columns .= ',';
-                       }
-
-                       $params[] = $entity->$getter();
-                       $i++;
-               }
-
-               $sql = 'UPDATE `' . $this->tableName . '` SET ' .
-                               $columns . ' WHERE `id` = ?';
-               $params[] = $id;
-
-               $stmt = $this->execute($sql, $params);
-               $stmt->closeCursor();
-
-               return $entity;
-       }
-
-       /**
-        * Checks if an array is associative
-        * @param array $array
-        * @return bool true if associative
-        * @since 8.1.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       private function isAssocArray(array $array) {
-               return array_values($array) !== $array;
-       }
-
-       /**
-        * Returns the correct PDO constant based on the value type
-        * @param $value
-        * @return int PDO constant
-        * @since 8.1.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       private function getPDOType($value) {
-               switch (gettype($value)) {
-                       case 'integer':
-                               return \PDO::PARAM_INT;
-                       case 'boolean':
-                               return \PDO::PARAM_BOOL;
-                       default:
-                               return \PDO::PARAM_STR;
-               }
-       }
-
-
-       /**
-        * Runs an sql query
-        * @param string $sql the prepare string
-        * @param array $params the params which should replace the ? in the sql query
-        * @param int $limit the maximum number of rows
-        * @param int $offset from which row we want to start
-        * @return \PDOStatement the database query result
-        * @since 7.0.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       protected function execute($sql, array $params = [], $limit = null, $offset = null) {
-               $query = $this->db->prepare($sql, $limit, $offset);
-
-               if ($this->isAssocArray($params)) {
-                       foreach ($params as $key => $param) {
-                               $pdoConstant = $this->getPDOType($param);
-                               $query->bindValue($key, $param, $pdoConstant);
-                       }
-               } else {
-                       $index = 1;  // bindParam is 1 indexed
-                       foreach ($params as $param) {
-                               $pdoConstant = $this->getPDOType($param);
-                               $query->bindValue($index, $param, $pdoConstant);
-                               $index++;
-                       }
-               }
-
-               $query->execute();
-
-               return $query;
-       }
-
-       /**
-        * Returns an db result and throws exceptions when there are more or less
-        * results
-        * @see findEntity
-        * @param string $sql the sql query
-        * @param array $params the parameters of the sql query
-        * @param int $limit the maximum number of rows
-        * @param int $offset from which row we want to start
-        * @throws DoesNotExistException if the item does not exist
-        * @throws MultipleObjectsReturnedException if more than one item exist
-        * @return array the result as row
-        * @since 7.0.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       protected function findOneQuery($sql, array $params = [], $limit = null, $offset = null) {
-               $stmt = $this->execute($sql, $params, $limit, $offset);
-               $row = $stmt->fetch();
-
-               if ($row === false || $row === null) {
-                       $stmt->closeCursor();
-                       $msg = $this->buildDebugMessage(
-                               'Did expect one result but found none when executing', $sql, $params, $limit, $offset
-                       );
-                       throw new DoesNotExistException($msg);
-               }
-               $row2 = $stmt->fetch();
-               $stmt->closeCursor();
-               //MDB2 returns null, PDO and doctrine false when no row is available
-               if (! ($row2 === false || $row2 === null)) {
-                       $msg = $this->buildDebugMessage(
-                               'Did not expect more than one result when executing', $sql, $params, $limit, $offset
-                       );
-                       throw new MultipleObjectsReturnedException($msg);
-               } else {
-                       return $row;
-               }
-       }
-
-       /**
-        * Builds an error message by prepending the $msg to an error message which
-        * has the parameters
-        * @see findEntity
-        * @param string $sql the sql query
-        * @param array $params the parameters of the sql query
-        * @param int $limit the maximum number of rows
-        * @param int $offset from which row we want to start
-        * @return string formatted error message string
-        * @since 9.1.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       private function buildDebugMessage($msg, $sql, array $params = [], $limit = null, $offset = null) {
-               return $msg .
-                                       ': query "' .   $sql . '"; ' .
-                                       'parameters ' . print_r($params, true) . '; ' .
-                                       'limit "' . $limit . '"; '.
-                                       'offset "' . $offset . '"';
-       }
-
-
-       /**
-        * Creates an entity from a row. Automatically determines the entity class
-        * from the current mapper name (MyEntityMapper -> MyEntity)
-        * @param array $row the row which should be converted to an entity
-        * @return Entity the entity
-        * @since 7.0.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       protected function mapRowToEntity($row) {
-               return call_user_func($this->entityClass .'::fromRow', $row);
-       }
-
-
-       /**
-        * Runs a sql query and returns an array of entities
-        * @param string $sql the prepare string
-        * @param array $params the params which should replace the ? in the sql query
-        * @param int $limit the maximum number of rows
-        * @param int $offset from which row we want to start
-        * @return array all fetched entities
-        * @since 7.0.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       protected function findEntities($sql, array $params = [], $limit = null, $offset = null) {
-               $stmt = $this->execute($sql, $params, $limit, $offset);
-
-               $entities = [];
-
-               while ($row = $stmt->fetch()) {
-                       $entities[] = $this->mapRowToEntity($row);
-               }
-
-               $stmt->closeCursor();
-
-               return $entities;
-       }
-
-
-       /**
-        * Returns an db result and throws exceptions when there are more or less
-        * results
-        * @param string $sql the sql query
-        * @param array $params the parameters of the sql query
-        * @param int $limit the maximum number of rows
-        * @param int $offset from which row we want to start
-        * @throws DoesNotExistException if the item does not exist
-        * @throws MultipleObjectsReturnedException if more than one item exist
-        * @return Entity the entity
-        * @since 7.0.0
-        * @deprecated 14.0.0 Move over to QBMapper
-        */
-       protected function findEntity($sql, array $params = [], $limit = null, $offset = null) {
-               return $this->mapRowToEntity($this->findOneQuery($sql, $params, $limit, $offset));
-       }
-}
diff --git a/tests/lib/AppFramework/Db/MapperTest.php b/tests/lib/AppFramework/Db/MapperTest.php
deleted file mode 100644 (file)
index e5a4b63..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-<?php
-
-/**
- * ownCloud - App Framework
- *
- * @author Bernhard Posselt
- * @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU Affero General Public
- * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace Test\AppFramework\Db;
-
-use OCP\AppFramework\Db\DoesNotExistException;
-use OCP\AppFramework\Db\Entity;
-use OCP\AppFramework\Db\Mapper;
-use OCP\AppFramework\Db\MultipleObjectsReturnedException;
-use OCP\IDBConnection;
-
-/**
- * @method integer getId()
- * @method void setId(integer $id)
- * @method string getEmail()
- * @method void setEmail(string $email)
- * @method string getPreName()
- * @method void setPreName(string $preName)
- */
-class Example extends Entity {
-       protected $preName;
-       protected $email;
-};
-
-
-class ExampleMapper extends Mapper {
-       public function __construct(IDBConnection $db) {
-               parent::__construct($db, 'table');
-       }
-       public function find($table, $id) {
-               return $this->findOneQuery($table, $id);
-       }
-       public function findOneEntity($table, $id) {
-               return $this->findEntity($table, $id);
-       }
-       public function findAllEntities($table) {
-               return $this->findEntities($table);
-       }
-       public function mapRow($row) {
-               return $this->mapRowToEntity($row);
-       }
-       public function execSql($sql, $params) {
-               return $this->execute($sql, $params);
-       }
-}
-
-
-class MapperTest extends MapperTestUtility {
-
-       /**
-        * @var Mapper
-        */
-       private $mapper;
-
-       protected function setUp(): void {
-               parent::setUp();
-               $this->mapper = new ExampleMapper($this->db);
-       }
-
-
-       public function testMapperShouldSetTableName() {
-               $this->assertEquals('*PREFIX*table', $this->mapper->getTableName());
-       }
-
-
-       public function testFindQuery() {
-               $sql = 'hi';
-               $params = ['jo'];
-               $rows = [
-                       ['hi']
-               ];
-               $this->setMapperResult($sql, $params, $rows);
-               $this->mapper->find($sql, $params);
-       }
-
-       public function testFindEntity() {
-               $sql = 'hi';
-               $params = ['jo'];
-               $rows = [
-                       ['pre_name' => 'hi']
-               ];
-               $this->setMapperResult($sql, $params, $rows, null, null, true);
-               $this->mapper->findOneEntity($sql, $params);
-       }
-
-       public function testFindNotFound() {
-               $sql = 'hi';
-               $params = ['jo'];
-               $rows = [];
-               $this->setMapperResult($sql, $params, $rows);
-               $this->expectException(DoesNotExistException::class);
-               $this->mapper->find($sql, $params);
-       }
-
-       public function testFindEntityNotFound() {
-               $sql = 'hi';
-               $params = ['jo'];
-               $rows = [];
-               $this->setMapperResult($sql, $params, $rows, null, null, true);
-               $this->expectException(DoesNotExistException::class);
-               $this->mapper->findOneEntity($sql, $params);
-       }
-
-       public function testFindMultiple() {
-               $sql = 'hi';
-               $params = ['jo'];
-               $rows = [
-                       ['jo'], ['ho']
-               ];
-               $this->setMapperResult($sql, $params, $rows, null, null, true);
-               $this->expectException(MultipleObjectsReturnedException::class);
-               $this->mapper->find($sql, $params);
-       }
-
-       public function testFindEntityMultiple() {
-               $sql = 'hi';
-               $params = ['jo'];
-               $rows = [
-                       ['jo'], ['ho']
-               ];
-               $this->setMapperResult($sql, $params, $rows, null, null, true);
-               $this->expectException(MultipleObjectsReturnedException::class);
-               $this->mapper->findOneEntity($sql, $params);
-       }
-
-
-       public function testDelete() {
-               $sql = 'DELETE FROM `*PREFIX*table` WHERE `id` = ?';
-               $params = [2];
-
-               $this->setMapperResult($sql, $params, [], null, null, true);
-               $entity = new Example();
-               $entity->setId($params[0]);
-
-               $this->mapper->delete($entity);
-       }
-
-
-       public function testCreate() {
-               $this->db->expects($this->once())
-                       ->method('lastInsertId')
-                       ->with($this->equalTo('*PREFIX*table'))
-                       ->willReturn(3);
-               $this->mapper = new ExampleMapper($this->db);
-
-               $sql = 'INSERT INTO `*PREFIX*table`(`pre_name`,`email`) ' .
-                               'VALUES(?,?)';
-               $params = ['john', 'my@email'];
-               $entity = new Example();
-               $entity->setPreName($params[0]);
-               $entity->setEmail($params[1]);
-
-               $this->setMapperResult($sql, $params, [], null, null, true);
-
-               $this->mapper->insert($entity);
-       }
-
-
-       public function testCreateShouldReturnItemWithCorrectInsertId() {
-               $this->db->expects($this->once())
-                       ->method('lastInsertId')
-                       ->with($this->equalTo('*PREFIX*table'))
-                       ->willReturn(3);
-               $this->mapper = new ExampleMapper($this->db);
-
-               $sql = 'INSERT INTO `*PREFIX*table`(`pre_name`,`email`) ' .
-                               'VALUES(?,?)';
-               $params = ['john', 'my@email'];
-               $entity = new Example();
-               $entity->setPreName($params[0]);
-               $entity->setEmail($params[1]);
-
-               $this->setMapperResult($sql, $params);
-
-               $result = $this->mapper->insert($entity);
-
-               $this->assertEquals(3, $result->getId());
-       }
-
-
-       public function testAssocParameters() {
-               $sql = 'test';
-               $params = [':test' => 1, ':a' => 2];
-
-               $this->setMapperResult($sql, $params);
-               $this->mapper->execSql($sql, $params);
-       }
-
-
-       public function testUpdate() {
-               $sql = 'UPDATE `*PREFIX*table` ' .
-                               'SET ' .
-                               '`pre_name` = ?,'.
-                               '`email` = ? ' .
-                               'WHERE `id` = ?';
-
-               $params = ['john', 'my@email', 1];
-               $entity = new Example();
-               $entity->setPreName($params[0]);
-               $entity->setEmail($params[1]);
-               $entity->setId($params[2]);
-
-               $this->setMapperResult($sql, $params, [], null, null, true);
-
-               $this->mapper->update($entity);
-       }
-
-
-       public function testUpdateNoId() {
-               $params = ['john', 'my@email'];
-               $entity = new Example();
-               $entity->setPreName($params[0]);
-               $entity->setEmail($params[1]);
-
-               $this->expectException(\InvalidArgumentException::class);
-
-               $this->mapper->update($entity);
-       }
-
-
-       public function testUpdateNothingChangedNoQuery() {
-               $params = ['john', 'my@email'];
-               $entity = new Example();
-               $entity->setId(3);
-               $entity->setEmail($params[1]);
-               $entity->resetUpdatedFields();
-
-               $this->db->expects($this->never())
-                       ->method('prepare');
-
-               $this->mapper->update($entity);
-       }
-
-
-       public function testMapRowToEntity() {
-               $entity1 = $this->mapper->mapRow(['pre_name' => 'test1', 'email' => 'test2']);
-               $entity2 = new Example();
-               $entity2->setPreName('test1');
-               $entity2->setEmail('test2');
-               $entity2->resetUpdatedFields();
-               $this->assertEquals($entity2, $entity1);
-       }
-
-       public function testFindEntities() {
-               $sql = 'hi';
-               $rows = [
-                       ['pre_name' => 'hi']
-               ];
-               $entity = new Example();
-               $entity->setPreName('hi');
-               $entity->resetUpdatedFields();
-               $this->setMapperResult($sql, [], $rows, null, null, true);
-               $result = $this->mapper->findAllEntities($sql);
-               $this->assertEquals([$entity], $result);
-       }
-
-       public function testFindEntitiesNotFound() {
-               $sql = 'hi';
-               $rows = [];
-               $this->setMapperResult($sql, [], $rows);
-               $result = $this->mapper->findAllEntities($sql);
-               $this->assertEquals([], $result);
-       }
-
-       public function testFindEntitiesMultiple() {
-               $sql = 'hi';
-               $rows = [
-                       ['pre_name' => 'jo'], ['email' => 'ho']
-               ];
-               $entity1 = new Example();
-               $entity1->setPreName('jo');
-               $entity1->resetUpdatedFields();
-               $entity2 = new Example();
-               $entity2->setEmail('ho');
-               $entity2->resetUpdatedFields();
-               $this->setMapperResult($sql, [], $rows);
-               $result = $this->mapper->findAllEntities($sql);
-               $this->assertEquals([$entity1, $entity2], $result);
-       }
-}
diff --git a/tests/lib/AppFramework/Db/MapperTestUtility.php b/tests/lib/AppFramework/Db/MapperTestUtility.php
deleted file mode 100644 (file)
index e17b875..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-<?php
-
-/**
- * ownCloud - App Framework
- *
- * @author Bernhard Posselt
- * @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU Affero General Public
- * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace Test\AppFramework\Db;
-
-use OCP\DB\IPreparedStatement;
-use OCP\DB\IResult;
-
-/**
- * Simple utility class for testing mappers
- */
-abstract class MapperTestUtility extends \Test\TestCase {
-       protected $db;
-       private $statement;
-       private $queryAt;
-       private $prepareAt;
-       private $fetchAt;
-       private $iterators;
-
-
-       /**
-        * Run this function before the actual test to either set or initialize the
-        * db. After this the db can be accessed by using $this->db
-        */
-       protected function setUp(): void {
-               parent::setUp();
-
-               $this->db = $this->getMockBuilder(
-                       '\OCP\IDBConnection')
-                       ->disableOriginalConstructor()
-                       ->getMock();
-
-               $this->statement = $this->createMock(IPreparedStatement::class);
-               $this->queryAt = 0;
-               $this->prepareAt = 0;
-               $this->iterators = [];
-               $this->fetchAt = 0;
-       }
-
-       /**
-        * Checks if an array is associative
-        * @param array $array
-        * @return bool true if associative
-        */
-       private function isAssocArray(array $array) {
-               return array_values($array) !== $array;
-       }
-
-       /**
-        * Returns the correct PDO constant based on the value type
-        * @param $value
-        * @return int PDO constant
-        */
-       private function getPDOType($value) {
-               switch (gettype($value)) {
-                       case 'integer':
-                               return \PDO::PARAM_INT;
-                       case 'boolean':
-                               return \PDO::PARAM_BOOL;
-                       default:
-                               return \PDO::PARAM_STR;
-               }
-       }
-
-       /**
-        * Create mocks and set expected results for database queries
-        * @param string $sql the sql query that you expect to receive
-        * @param array $arguments the expected arguments for the prepare query
-        * method
-        * @param array $returnRows the rows that should be returned for the result
-        * of the database query. If not provided, it wont be assumed that fetch
-        * will be called on the result
-        */
-       protected function setMapperResult($sql, $arguments = [], $returnRows = [],
-               $limit = null, $offset = null, $expectClose = false) {
-               if ($limit === null && $offset === null) {
-                       $this->db->expects($this->at($this->prepareAt))
-                               ->method('prepare')
-                               ->with($this->equalTo($sql))
-                               ->will(($this->returnValue($this->statement)));
-               } elseif ($limit !== null && $offset === null) {
-                       $this->db->expects($this->at($this->prepareAt))
-                               ->method('prepare')
-                               ->with($this->equalTo($sql), $this->equalTo($limit))
-                               ->will(($this->returnValue($this->statement)));
-               } elseif ($limit === null && $offset !== null) {
-                       $this->db->expects($this->at($this->prepareAt))
-                               ->method('prepare')
-                               ->with($this->equalTo($sql),
-                                       $this->equalTo(null),
-                                       $this->equalTo($offset))
-                               ->will(($this->returnValue($this->statement)));
-               } else {
-                       $this->db->expects($this->at($this->prepareAt))
-                               ->method('prepare')
-                               ->with($this->equalTo($sql),
-                                       $this->equalTo($limit),
-                                       $this->equalTo($offset))
-                               ->will(($this->returnValue($this->statement)));
-               }
-
-               $this->iterators[] = new ArgumentIterator($returnRows);
-
-               $iterators = $this->iterators;
-               $fetchAt = $this->fetchAt;
-
-               $this->statement->expects($this->any())
-                       ->method('fetch')
-                       ->willReturnCallback(
-                               function () use ($iterators, $fetchAt) {
-                                       $iterator = $iterators[$fetchAt];
-                                       $result = $iterator->next();
-
-                                       if ($result === false) {
-                                               $fetchAt++;
-                                       }
-
-                                       $this->queryAt++;
-
-                                       return $result;
-                               }
-                       );
-
-               if ($this->isAssocArray($arguments)) {
-                       foreach ($arguments as $key => $argument) {
-                               $pdoConstant = $this->getPDOType($argument);
-                               $this->statement->expects($this->at($this->queryAt))
-                                       ->method('bindValue')
-                                       ->with($this->equalTo($key),
-                                               $this->equalTo($argument),
-                                               $this->equalTo($pdoConstant));
-                               $this->queryAt++;
-                       }
-               } else {
-                       $index = 1;
-                       foreach ($arguments as $argument) {
-                               $pdoConstant = $this->getPDOType($argument);
-                               $this->statement->expects($this->at($this->queryAt))
-                                       ->method('bindValue')
-                                       ->with($this->equalTo($index),
-                                               $this->equalTo($argument),
-                                               $this->equalTo($pdoConstant));
-                               $index++;
-                               $this->queryAt++;
-                       }
-               }
-
-               $this->statement->expects($this->at($this->queryAt))
-                       ->method('execute')
-                       ->willReturnCallback(function ($sql, $p = null, $o = null, $s = null) {
-                               return $this->createMock(IResult::class);
-                       });
-               $this->queryAt++;
-
-
-
-               if ($expectClose) {
-                       $closing = $this->at($this->queryAt);
-               } else {
-                       $closing = $this->any();
-               }
-               $this->statement->expects($closing)->method('closeCursor');
-               $this->queryAt++;
-
-               $this->prepareAt++;
-               $this->fetchAt++;
-       }
-}
-
-
-class ArgumentIterator {
-       private $arguments;
-
-       public function __construct($arguments) {
-               $this->arguments = $arguments;
-       }
-
-       public function next() {
-               $result = array_shift($this->arguments);
-               if ($result === null) {
-                       return false;
-               } else {
-                       return $result;
-               }
-       }
-}