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