From 8e74fa253deea78486df2324071c94654bdca503 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Wed, 3 Dec 2014 10:40:41 +0100 Subject: Make expand entries in compact view after jumping to next/previous feed optional with a setting --- tests/classloader.php | 3 - tests/unit/controller/PageControllerTest.php | 22 +++- tests/unit/db/FeedMapperTest.php | 2 +- tests/unit/db/FolderMapperTest.php | 2 +- tests/unit/db/ItemMapperTest.php | 2 +- tests/unit/db/mappertestutility.php | 179 +++++++++++++++++++++++++++ tests/unit/db/mysql/ItemMapperTest.php | 2 +- 7 files changed, 204 insertions(+), 8 deletions(-) create mode 100644 tests/unit/db/mappertestutility.php (limited to 'tests') diff --git a/tests/classloader.php b/tests/classloader.php index 648b7432d..2a46091e7 100644 --- a/tests/classloader.php +++ b/tests/classloader.php @@ -13,9 +13,6 @@ require_once __DIR__ . '/../appinfo/autoload.php'; -require_once - __DIR__ . '/../../../tests/lib/appframework/db/mappertestutility.php'; - // to execute without owncloud, we need to create our own classloader spl_autoload_register(function ($className){ if (strpos($className, 'OCA\\') === 0) { diff --git a/tests/unit/controller/PageControllerTest.php b/tests/unit/controller/PageControllerTest.php index ee138fded..fd548df62 100644 --- a/tests/unit/controller/PageControllerTest.php +++ b/tests/unit/controller/PageControllerTest.php @@ -142,6 +142,7 @@ class PageControllerTest extends \PHPUnit_Framework_TestCase { 'compact' => true, 'preventReadOnScroll' => true, 'oldestFirst' => true, + 'compactExpand' => true, 'language' => 'de', 'exploreUrl' => 'test' ] @@ -174,6 +175,12 @@ class PageControllerTest extends \PHPUnit_Framework_TestCase { $this->equalTo($this->appName), $this->equalTo('oldestFirst')) ->will($this->returnValue('1')); + $this->settings->expects($this->at(4)) + ->method('getUserValue') + ->with($this->equalTo($this->user), + $this->equalTo($this->appName), + $this->equalTo('compactExpand')) + ->will($this->returnValue('1')); $this->config->expects($this->once()) ->method('getExploreUrl') ->will($this->returnValue(' ')); @@ -196,6 +203,7 @@ class PageControllerTest extends \PHPUnit_Framework_TestCase { 'preventReadOnScroll' => true, 'oldestFirst' => true, 'language' => 'de', + 'compactExpand' => true, 'exploreUrl' => 'abc' ] ]; @@ -227,6 +235,12 @@ class PageControllerTest extends \PHPUnit_Framework_TestCase { $this->equalTo($this->appName), $this->equalTo('oldestFirst')) ->will($this->returnValue('1')); + $this->settings->expects($this->at(4)) + ->method('getUserValue') + ->with($this->equalTo($this->user), + $this->equalTo($this->appName), + $this->equalTo('compactExpand')) + ->will($this->returnValue('1')); $this->config->expects($this->once()) ->method('getExploreUrl') ->will($this->returnValue('abc')); @@ -263,7 +277,13 @@ class PageControllerTest extends \PHPUnit_Framework_TestCase { $this->equalTo($this->appName), $this->equalTo('oldestFirst'), $this->equalTo(true)); - $this->controller->updateSettings(true, true, false, true); + $this->settings->expects($this->at(4)) + ->method('setUserValue') + ->with($this->equalTo($this->user), + $this->equalTo($this->appName), + $this->equalTo('compactExpand'), + $this->equalTo(true)); + $this->controller->updateSettings(true, true, false, true, true); } diff --git a/tests/unit/db/FeedMapperTest.php b/tests/unit/db/FeedMapperTest.php index 9bbce1ab0..2d1626ad7 100644 --- a/tests/unit/db/FeedMapperTest.php +++ b/tests/unit/db/FeedMapperTest.php @@ -14,7 +14,7 @@ namespace OCA\News\Db; -class FeedMapperTest extends \Test\AppFramework\Db\MapperTestUtility { +class FeedMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility { private $mapper; private $feeds; diff --git a/tests/unit/db/FolderMapperTest.php b/tests/unit/db/FolderMapperTest.php index 87f9e617c..e9df37195 100644 --- a/tests/unit/db/FolderMapperTest.php +++ b/tests/unit/db/FolderMapperTest.php @@ -14,7 +14,7 @@ namespace OCA\News\Db; -class FolderMapperTest extends \Test\AppFramework\Db\MapperTestUtility { +class FolderMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility { private $folderMapper; private $folders; diff --git a/tests/unit/db/ItemMapperTest.php b/tests/unit/db/ItemMapperTest.php index a4e3fe919..26c9074dd 100644 --- a/tests/unit/db/ItemMapperTest.php +++ b/tests/unit/db/ItemMapperTest.php @@ -14,7 +14,7 @@ namespace OCA\News\Db; -class ItemMapperTest extends \Test\AppFramework\Db\MapperTestUtility { +class ItemMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility { private $mapper; private $items; diff --git a/tests/unit/db/mappertestutility.php b/tests/unit/db/mappertestutility.php new file mode 100644 index 000000000..a612f2f14 --- /dev/null +++ b/tests/unit/db/mappertestutility.php @@ -0,0 +1,179 @@ +. + * + */ + + +namespace OCA\News\Tests\Unit\Db; + + +/** + * Simple utility class for testing mappers + */ +abstract class MapperTestUtility extends \PHPUnit_Framework_TestCase { + protected $db; + private $query; + private $pdoResult; + 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(){ + parent::setUp(); + + $this->db = $this->getMockBuilder( + '\OCP\IDb') + ->disableOriginalConstructor() + ->getMock(); + + $this->query = $this->getMock('Query', array('execute', 'bindValue')); + $this->pdoResult = $this->getMock('Result', array('fetch')); + $this->queryAt = 0; + $this->prepareAt = 0; + $this->iterators = array(); + $this->fetchAt = 0; + } + + + /** + * 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){ + + $this->iterators[] = new ArgumentIterator($returnRows); + + $iterators = $this->iterators; + $fetchAt = $this->fetchAt; + + $this->pdoResult->expects($this->any()) + ->method('fetch') + ->will($this->returnCallback( + function() use ($iterators, $fetchAt){ + $iterator = $iterators[$fetchAt]; + $result = $iterator->next(); + + if($result === false) { + $fetchAt++; + } + + return $result; + } + )); + + $index = 1; + foreach($arguments as $argument) { + switch (gettype($argument)) { + case 'integer': + $pdoConstant = \PDO::PARAM_INT; + break; + + case 'NULL': + $pdoConstant = \PDO::PARAM_NULL; + break; + + case 'boolean': + $pdoConstant = \PDO::PARAM_BOOL; + 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++; + } + + $this->query->expects($this->at($this->queryAt)) + ->method('execute') + ->with() + ->will($this->returnValue($this->pdoResult)); + $this->queryAt++; + + if($limit === null && $offset === null) { + $this->db->expects($this->at($this->prepareAt)) + ->method('prepareQuery') + ->with($this->equalTo($sql)) + ->will(($this->returnValue($this->query))); + } elseif($limit !== null && $offset === null) { + $this->db->expects($this->at($this->prepareAt)) + ->method('prepareQuery') + ->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('prepareQuery') + ->with($this->equalTo($sql), + $this->equalTo(null), + $this->equalTo($offset)) + ->will(($this->returnValue($this->query))); + } else { + $this->db->expects($this->at($this->prepareAt)) + ->method('prepareQuery') + ->with($this->equalTo($sql), + $this->equalTo($limit), + $this->equalTo($offset)) + ->will(($this->returnValue($this->query))); + } + $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; + } + } +} + diff --git a/tests/unit/db/mysql/ItemMapperTest.php b/tests/unit/db/mysql/ItemMapperTest.php index 84c9f5dc3..3c091341a 100644 --- a/tests/unit/db/mysql/ItemMapperTest.php +++ b/tests/unit/db/mysql/ItemMapperTest.php @@ -17,7 +17,7 @@ use \OCA\News\Db\Item; use \OCA\News\Db\StatusFlag; -class ItemMapperTest extends \Test\AppFramework\Db\MapperTestUtility { +class ItemMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility { private $mapper; private $items; -- cgit v1.2.3