From a299354936b262e831425a39c387530058c6fdcb Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Wed, 12 Nov 2014 15:56:36 +0100 Subject: [PATCH 1/6] zendframework/zf2#5505 - constant usage instead of magic constants --- test/Adapter/DbTableGatewayTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/Adapter/DbTableGatewayTest.php b/test/Adapter/DbTableGatewayTest.php index d2607ad..98e5236 100644 --- a/test/Adapter/DbTableGatewayTest.php +++ b/test/Adapter/DbTableGatewayTest.php @@ -10,6 +10,7 @@ namespace ZendTest\Paginator\Adapter; use Zend\Db\Adapter\Platform\Sql92; +use Zend\Paginator\Adapter\DbSelect; use Zend\Paginator\Adapter\DbTableGateway; use Zend\Db\ResultSet\ResultSet; @@ -74,7 +75,7 @@ public function testCount() $mockResult = $this->getMock('Zend\Db\Adapter\Driver\ResultInterface'); $mockResult->expects($this->any()) ->method('current') - ->will($this->returnValue(array('c' => 10))); + ->will($this->returnValue(array(DbSelect::ROW_COUNT_COLUMN_NAME => 10))); $this->mockStatement->expects($this->any()) ->method('execute') From 9314fc5fc19751afe8994c42ca3cfa3f94fd3a68 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Wed, 12 Nov 2014 15:57:05 +0100 Subject: [PATCH 2/6] zendframework/zf2#5505 - removing unused import --- test/Adapter/DbTableGatewayTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/test/Adapter/DbTableGatewayTest.php b/test/Adapter/DbTableGatewayTest.php index 98e5236..342d298 100644 --- a/test/Adapter/DbTableGatewayTest.php +++ b/test/Adapter/DbTableGatewayTest.php @@ -12,7 +12,6 @@ use Zend\Db\Adapter\Platform\Sql92; use Zend\Paginator\Adapter\DbSelect; use Zend\Paginator\Adapter\DbTableGateway; -use Zend\Db\ResultSet\ResultSet; /** * @group Zend_Paginator From 5702c74d0f6e4550d28bdd67e52694fb22685b2a Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Wed, 12 Nov 2014 15:57:34 +0100 Subject: [PATCH 3/6] zendframework/zf2#5505 - removing useless `= null` default property assignments --- src/Adapter/DbSelect.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Adapter/DbSelect.php b/src/Adapter/DbSelect.php index d863f5b..ebb48fc 100644 --- a/src/Adapter/DbSelect.php +++ b/src/Adapter/DbSelect.php @@ -18,39 +18,38 @@ class DbSelect implements AdapterInterface { - const ROW_COUNT_COLUMN_NAME = 'c'; /** * @var Sql */ - protected $sql = null; + protected $sql; /** * Database query * * @var Select */ - protected $select = null; + protected $select; /** * Database count query * * @var Select */ - protected $selectCount = null; + protected $selectCount; /** * @var ResultSet */ - protected $resultSetPrototype = null; + protected $resultSetPrototype; /** * Total item count * * @var int */ - protected $rowCount = null; + protected $rowCount; /** * Constructor. From 89adfc8aafe600b5987d051c2063ef00dcd8daf1 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Wed, 12 Nov 2014 15:58:04 +0100 Subject: [PATCH 4/6] zendframework/zf2#5505 - uppercase `ROW_COUNT_COLUMN_NAME` for DB2/Firebird compat --- src/Adapter/DbSelect.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adapter/DbSelect.php b/src/Adapter/DbSelect.php index ebb48fc..2ec7816 100644 --- a/src/Adapter/DbSelect.php +++ b/src/Adapter/DbSelect.php @@ -18,7 +18,7 @@ class DbSelect implements AdapterInterface { - const ROW_COUNT_COLUMN_NAME = 'c'; + const ROW_COUNT_COLUMN_NAME = 'C'; /** * @var Sql From f9b9ea38ef74518b938903a114c812ebf1d3c800 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Wed, 12 Nov 2014 16:14:51 +0100 Subject: [PATCH 5/6] zendframework/zf2#5505 - Test case cleanups (docblocks, setup logic), assuming 4th constructor argument instead of `DbSelect#setSelectCount()` --- test/Adapter/DbSelectTest.php | 47 ++++++++++++++--------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/test/Adapter/DbSelectTest.php b/test/Adapter/DbSelectTest.php index ac8602a..dab9389 100644 --- a/test/Adapter/DbSelectTest.php +++ b/test/Adapter/DbSelectTest.php @@ -17,62 +17,53 @@ */ class DbSelectTest extends \PHPUnit_Framework_TestCase { - /** @var \PHPUnit_Framework_MockObject_MockObject */ + /** @var \PHPUnit_Framework_MockObject_MockObject|\Zend\Db\Sql\Select */ protected $mockSelect; - /** @var PHPUnit_Framework_MockObject_MockObject */ + /** @var PHPUnit_Framework_MockObject_MockObject|\Zend\Db\Sql\Select */ protected $mockSelectCount; - /** @var \PHPUnit_Framework_MockObject_MockObject */ + /** @var \PHPUnit_Framework_MockObject_MockObject|\Zend\Db\Adapter\Driver\StatementInterface */ protected $mockStatement; - /** @var \PHPUnit_Framework_MockObject_MockObject */ + /** @var \PHPUnit_Framework_MockObject_MockObject|\Zend\Db\Adapter\Driver\ResultInterface */ protected $mockResult; - /** @var \PHPUnit_Framework_MockObject_MockObject */ + /** @var \PHPUnit_Framework_MockObject_MockObject|\Zend\Db\Sql\Sql */ protected $mockSql; /** @var DbSelect */ protected $dbSelect; - - public function setup() { - $mockResult = $this->getMock('Zend\Db\Adapter\Driver\ResultInterface'); - $this->mockResult = $mockResult; - - $mockStatement = $this->getMock('Zend\Db\Adapter\Driver\StatementInterface'); - $this->mockStatement = $mockStatement; + $this->mockResult = $this->getMock('Zend\Db\Adapter\Driver\ResultInterface'); + $this->mockStatement = $this->getMock('Zend\Db\Adapter\Driver\StatementInterface'); $this->mockStatement->expects($this->any())->method('execute')->will($this->returnValue($this->mockResult)); - $mockDriver = $this->getMock('Zend\Db\Adapter\Driver\DriverInterface'); - $mockDriver->expects($this->any())->method('createStatement')->will($this->returnValue($mockStatement)); - + $mockDriver = $this->getMock('Zend\Db\Adapter\Driver\DriverInterface'); $mockPlatform = $this->getMock('Zend\Db\Adapter\Platform\PlatformInterface'); + + $mockDriver->expects($this->any())->method('createStatement')->will($this->returnValue($this->mockStatement)); $mockPlatform->expects($this->any())->method('getName')->will($this->returnValue('platform')); - $mockAdapter = $this->getMockForAbstractClass( - 'Zend\Db\Adapter\Adapter', - array($mockDriver, $mockPlatform) - ); - $mockSql = $this->getMock( + $this->mockSql = $this->getMock( 'Zend\Db\Sql\Sql', array('prepareStatementForSqlObject', 'execute'), - array($mockAdapter) + array($this->getMockForAbstractClass('Zend\Db\Adapter\Adapter', array($mockDriver, $mockPlatform))) ); - $this->mockSql = $mockSql; - $this->mockSql->expects($this->once()) + + $this + ->mockSql + ->expects($this->once()) ->method('prepareStatementForSqlObject') ->with($this->isInstanceOf('Zend\Db\Sql\Select')) ->will($this->returnValue($this->mockStatement)); - - $this->mockSelect = $this->getMock('Zend\Db\Sql\Select'); + $this->mockSelect = $this->getMock('Zend\Db\Sql\Select'); $this->mockSelectCount = $this->getMock('Zend\Db\Sql\Select'); - - $this->dbSelect = new DbSelect($this->mockSelect, $mockSql); + $this->dbSelect = new DbSelect($this->mockSelect, $this->mockSql); } public function testGetItems() @@ -95,8 +86,8 @@ public function testCount() public function testCustomCount() { + $this->dbSelect = new DbSelect($this->mockSelect, $this->mockSql, null, $this->mockSelectCount); $this->mockResult->expects($this->once())->method('current')->will($this->returnValue(array(DbSelect::ROW_COUNT_COLUMN_NAME => 7))); - $this->dbSelect->setSelectCount($this->mockSelectCount); $count = $this->dbSelect->count(); $this->assertEquals(7, $count); From 95564be4d52e37d1d21e11b186f3a0ec3e594513 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Wed, 12 Nov 2014 16:15:13 +0100 Subject: [PATCH 6/6] zendframework/zf2#5505 - Additional constructor argument instead of additional setter --- src/Adapter/DbSelect.php | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/src/Adapter/DbSelect.php b/src/Adapter/DbSelect.php index 2ec7816..631d2fe 100644 --- a/src/Adapter/DbSelect.php +++ b/src/Adapter/DbSelect.php @@ -35,9 +35,9 @@ class DbSelect implements AdapterInterface /** * Database count query * - * @var Select + * @var Select|null */ - protected $selectCount; + protected $countSelect; /** * @var ResultSet @@ -57,11 +57,18 @@ class DbSelect implements AdapterInterface * @param Select $select The select query * @param Adapter|Sql $adapterOrSqlObject DB adapter or Sql object * @param null|ResultSetInterface $resultSetPrototype + * @param null|Select $countSelect + * * @throws Exception\InvalidArgumentException */ - public function __construct(Select $select, $adapterOrSqlObject, ResultSetInterface $resultSetPrototype = null) - { + public function __construct( + Select $select, + $adapterOrSqlObject, + ResultSetInterface $resultSetPrototype = null, + Select $countSelect = null + ) { $this->select = $select; + $this->countSelect = $countSelect; if ($adapterOrSqlObject instanceof Adapter) { $adapterOrSqlObject = new Sql($adapterOrSqlObject); @@ -128,8 +135,8 @@ public function count() */ protected function getSelectCount() { - if ($this->selectCount !== null) { - return $this->selectCount; + if ($this->countSelect) { + return $this->countSelect; } $select = clone $this->select; @@ -138,22 +145,10 @@ protected function getSelectCount() $select->reset(Select::ORDER); $countSelect = new Select; + $countSelect->columns(array(self::ROW_COUNT_COLUMN_NAME => new Expression('COUNT(1)'))); $countSelect->from(array('original_select' => $select)); return $countSelect; } - - /** - * Sets custom select to count all entries in db - * - * @param Select $select - * @return self - */ - public function setSelectCount(Select $select) - { - $this->select = $select; - - return $this; - } }