summaryrefslogtreecommitdiffstats
path: root/tests/Unit/Db/MapperTestUtility.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Unit/Db/MapperTestUtility.php')
-rw-r--r--tests/Unit/Db/MapperTestUtility.php202
1 files changed, 16 insertions, 186 deletions
diff --git a/tests/Unit/Db/MapperTestUtility.php b/tests/Unit/Db/MapperTestUtility.php
index b414b43e3..695738179 100644
--- a/tests/Unit/Db/MapperTestUtility.php
+++ b/tests/Unit/Db/MapperTestUtility.php
@@ -23,20 +23,27 @@
namespace OCA\News\Tests\Unit\Db;
+use Doctrine\DBAL\Driver\PDOStatement;
use OCP\IDBConnection;
+use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
+
/**
* Simple utility class for testing mappers
*/
abstract class MapperTestUtility extends TestCase
{
+
+ /**
+ * @var MockObject|IDBConnection
+ */
protected $db;
- private $query;
- private $queryAt;
- private $prepareAt;
- private $fetchAt;
- private $iterators;
+
+ /**
+ * @var MockObject|PDOStatement
+ */
+ protected $query;
/**
@@ -48,187 +55,10 @@ abstract class MapperTestUtility extends TestCase
parent::setUp();
$this->db = $this->getMockBuilder(IDBConnection::class)
- ->disableOriginalConstructor()
- ->getMock();
-
- $this->query = $this->createMock(\PDOStatement::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 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=array(), $returnRows=array(),
- $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->query)));
- } 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->query)));
- } 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->query)));
- } else {
- $this->db->expects($this->at($this->prepareAt))
- ->method('prepare')
- ->with(
- $this->equalTo($sql),
- $this->equalTo($limit),
- $this->equalTo($offset)
- )
- ->will(($this->returnValue($this->query)));
- }
-
- $this->iterators[] = new ArgumentIterator($returnRows);
-
- $iterators = $this->iterators;
- $fetchAt = $this->fetchAt;
+ ->disableOriginalConstructor()
+ ->getMock();
- $this->query->expects($this->any())
- ->method('fetch')
- ->will(
- $this->returnCallback(
- 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->query->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->query->expects($this->at($this->queryAt))
- ->method('bindValue')
- ->with(
- $this->equalTo($index),
- $this->equalTo($argument),
- $this->equalTo($pdoConstant)
- );
- $index++;
- $this->queryAt++;
- }
- }
-
- $this->query->expects($this->at($this->queryAt))
- ->method('execute')
- ->will(
- $this->returnCallback(
- function ($sql, $p=null, $o=null, $s=null) {
-
- }
- )
- );
- $this->queryAt++;
-
-
-
- if ($expectClose) {
- $closing = $this->at($this->queryAt);
- } else {
- $closing = $this->any();
- }
- $this->query->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;
- }
+ $this->query = $this->getMockBuilder(\PDOStatement::class)
+ ->getMock();
}
}