fix mappertestutility
This commit is contained in:
parent
7b2fdbfb0b
commit
aaf753bc9a
|
@ -57,110 +57,114 @@ abstract class MapperTestUtility extends \Test\TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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);
|
/**
|
||||||
|
* 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)));
|
||||||
|
}
|
||||||
|
|
||||||
$iterators = $this->iterators;
|
$this->iterators[] = new ArgumentIterator($returnRows);
|
||||||
$fetchAt = $this->fetchAt;
|
|
||||||
|
|
||||||
$this->query->expects($this->any())
|
$iterators = $this->iterators;
|
||||||
->method('fetch')
|
$fetchAt = $this->fetchAt;
|
||||||
->will($this->returnCallback(
|
|
||||||
function() use ($iterators, $fetchAt){
|
|
||||||
$iterator = $iterators[$fetchAt];
|
|
||||||
$result = $iterator->next();
|
|
||||||
|
|
||||||
if($result === false) {
|
$this->query->expects($this->any())
|
||||||
$fetchAt++;
|
->method('fetch')
|
||||||
}
|
->will($this->returnCallback(
|
||||||
|
function() use ($iterators, $fetchAt){
|
||||||
|
$iterator = $iterators[$fetchAt];
|
||||||
|
$result = $iterator->next();
|
||||||
|
|
||||||
$this->queryAt++;
|
if($result === false) {
|
||||||
|
$fetchAt++;
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
$this->queryAt++;
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
$index = 1;
|
return $result;
|
||||||
foreach($arguments as $argument) {
|
}
|
||||||
switch (gettype($argument)) {
|
));
|
||||||
case 'integer':
|
|
||||||
$pdoConstant = \PDO::PARAM_INT;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'NULL':
|
$index = 1;
|
||||||
$pdoConstant = \PDO::PARAM_NULL;
|
foreach($arguments as $argument) {
|
||||||
break;
|
switch (gettype($argument)) {
|
||||||
|
case 'integer':
|
||||||
|
$pdoConstant = \PDO::PARAM_INT;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'boolean':
|
case 'NULL':
|
||||||
$pdoConstant = \PDO::PARAM_BOOL;
|
$pdoConstant = \PDO::PARAM_NULL;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
case 'boolean':
|
||||||
$pdoConstant = \PDO::PARAM_STR;
|
$pdoConstant = \PDO::PARAM_BOOL;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
$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))
|
default:
|
||||||
->method('execute');
|
$pdoConstant = \PDO::PARAM_STR;
|
||||||
$this->queryAt++;
|
break;
|
||||||
|
}
|
||||||
|
$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) {
|
if ($expectClose) {
|
||||||
$closing = $this->once();
|
$closing = $this->at($this->queryAt);
|
||||||
} else {
|
} else {
|
||||||
$closing = $this->any();
|
$closing = $this->any();
|
||||||
}
|
}
|
||||||
$this->query->expects($closing)->method('closeCursor');
|
$this->query->expects($closing)->method('closeCursor');
|
||||||
$this->queryAt++;
|
$this->queryAt++;
|
||||||
|
|
||||||
$this->prepareAt++;
|
$this->prepareAt++;
|
||||||
$this->fetchAt++;
|
$this->fetchAt++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -168,19 +172,19 @@ abstract class MapperTestUtility extends \Test\TestCase {
|
||||||
|
|
||||||
class ArgumentIterator {
|
class ArgumentIterator {
|
||||||
|
|
||||||
private $arguments;
|
private $arguments;
|
||||||
|
|
||||||
public function __construct($arguments){
|
public function __construct($arguments){
|
||||||
$this->arguments = $arguments;
|
$this->arguments = $arguments;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function next(){
|
public function next(){
|
||||||
$result = array_shift($this->arguments);
|
$result = array_shift($this->arguments);
|
||||||
if($result === null){
|
if($result === null){
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue