diff options
Diffstat (limited to 'tests/lib/appframework/db')
-rw-r--r-- | tests/lib/appframework/db/EntityTest.php | 224 | ||||
-rw-r--r-- | tests/lib/appframework/db/mappertest.php | 290 | ||||
-rw-r--r-- | tests/lib/appframework/db/mappertestutility.php | 209 |
3 files changed, 0 insertions, 723 deletions
diff --git a/tests/lib/appframework/db/EntityTest.php b/tests/lib/appframework/db/EntityTest.php deleted file mode 100644 index 161e11d8030..00000000000 --- a/tests/lib/appframework/db/EntityTest.php +++ /dev/null @@ -1,224 +0,0 @@ -<?php - -/** -* ownCloud - App Framework -* -* @author Bernhard Posselt -* @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -namespace OCP\AppFramework\Db; - - -/** - * @method integer getId() - * @method void setId(integer $id) - * @method integer getTestId() - * @method void setTestId(integer $id) - * @method string getName() - * @method void setName(string $name) - * @method string getEmail() - * @method void setEmail(string $email) - * @method string getPreName() - * @method void setPreName(string $preName) - */ -class TestEntity extends Entity { - protected $name; - protected $email; - protected $testId; - protected $preName; - - public function __construct($name=null){ - $this->addType('testId', 'integer'); - $this->name = $name; - } -}; - - -class EntityTest extends \Test\TestCase { - - private $entity; - - protected function setUp(){ - parent::setUp(); - $this->entity = new TestEntity(); - } - - - public function testResetUpdatedFields(){ - $entity = new TestEntity(); - $entity->setId(3); - $entity->resetUpdatedFields(); - - $this->assertEquals(array(), $entity->getUpdatedFields()); - } - - - public function testFromRow(){ - $row = array( - 'pre_name' => 'john', - 'email' => 'john@something.com' - ); - $this->entity = TestEntity::fromRow($row); - - $this->assertEquals($row['pre_name'], $this->entity->getPreName()); - $this->assertEquals($row['email'], $this->entity->getEmail()); - } - - - public function testGetSetId(){ - $id = 3; - $this->entity->setId(3); - - $this->assertEquals($id, $this->entity->getId()); - } - - - public function testColumnToPropertyNoReplacement(){ - $column = 'my'; - $this->assertEquals('my', - $this->entity->columnToProperty($column)); - } - - - public function testColumnToProperty(){ - $column = 'my_attribute'; - $this->assertEquals('myAttribute', - $this->entity->columnToProperty($column)); - } - - - public function testPropertyToColumnNoReplacement(){ - $property = 'my'; - $this->assertEquals('my', - $this->entity->propertyToColumn($property)); - } - - - public function testSetterMarksFieldUpdated(){ - $this->entity->setId(3); - - $this->assertContains('id', $this->entity->getUpdatedFields()); - } - - - public function testCallShouldOnlyWorkForGetterSetter(){ - $this->setExpectedException('\BadFunctionCallException'); - - $this->entity->something(); - } - - - public function testGetterShouldFailIfAttributeNotDefined(){ - $this->setExpectedException('\BadFunctionCallException'); - - $this->entity->getTest(); - } - - - public function testSetterShouldFailIfAttributeNotDefined(){ - $this->setExpectedException('\BadFunctionCallException'); - - $this->entity->setTest(); - } - - - public function testFromRowShouldNotAssignEmptyArray(){ - $row = array(); - $entity2 = new TestEntity(); - - $this->entity = TestEntity::fromRow($row); - $this->assertEquals($entity2, $this->entity); - } - - - public function testIdGetsConvertedToInt(){ - $row = array('id' => '4'); - - $this->entity = TestEntity::fromRow($row); - $this->assertSame(4, $this->entity->getId()); - } - - - public function testSetType(){ - $row = array('testId' => '4'); - - $this->entity = TestEntity::fromRow($row); - $this->assertSame(4, $this->entity->getTestId()); - } - - - public function testFromParams(){ - $params = array( - 'testId' => 4, - 'email' => 'john@doe' - ); - - $entity = TestEntity::fromParams($params); - - $this->assertEquals($params['testId'], $entity->getTestId()); - $this->assertEquals($params['email'], $entity->getEmail()); - $this->assertTrue($entity instanceof TestEntity); - } - - public function testSlugify(){ - $entity = new TestEntity(); - $entity->setName('Slugify this!'); - $this->assertEquals('slugify-this', $entity->slugify('name')); - $entity->setName('°!"§$%&/()=?`´ß\}][{³²#\'+~*-_.:,;<>|äöüÄÖÜSlugify this!'); - $this->assertEquals('slugify-this', $entity->slugify('name')); - } - - - public function testSetterCasts() { - $entity = new TestEntity(); - $entity->setId('3'); - $this->assertSame(3, $entity->getId()); - } - - - public function testSetterDoesNotCastOnNull() { - $entity = new TestEntity(); - $entity->setId(null); - $this->assertSame(null, $entity->getId()); - } - - - public function testGetFieldTypes() { - $entity = new TestEntity(); - $this->assertEquals(array( - 'id' => 'integer', - 'testId' => 'integer' - ), $entity->getFieldTypes()); - } - - - public function testGetItInt() { - $entity = new TestEntity(); - $entity->setId(3); - $this->assertEquals('integer', gettype($entity->getId())); - } - - - public function testFieldsNotMarkedUpdatedIfNothingChanges() { - $entity = new TestEntity('hey'); - $entity->setName('hey'); - $this->assertEquals(0, count($entity->getUpdatedFields())); - } - - -} diff --git a/tests/lib/appframework/db/mappertest.php b/tests/lib/appframework/db/mappertest.php deleted file mode 100644 index c8b999ad62c..00000000000 --- a/tests/lib/appframework/db/mappertest.php +++ /dev/null @@ -1,290 +0,0 @@ -<?php - -/** - * ownCloud - App Framework - * - * @author Bernhard Posselt - * @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - - -namespace OCP\AppFramework\Db; - -use \OCP\IDBConnection; -use Test\AppFramework\Db\MapperTestUtility; - -/** - * @method integer getId() - * @method void setId(integer $id) - * @method string getEmail() - * @method void setEmail(string $email) - * @method string getPreName() - * @method void setPreName(string $preName) - */ -class Example extends Entity { - protected $preName; - protected $email; -}; - - -class ExampleMapper extends Mapper { - public function __construct(IDBConnection $db){ parent::__construct($db, 'table'); } - public function find($table, $id){ return $this->findOneQuery($table, $id); } - public function findOneEntity($table, $id){ return $this->findEntity($table, $id); } - public function findAllEntities($table){ return $this->findEntities($table); } - public function mapRow($row){ return $this->mapRowToEntity($row); } - public function execSql($sql, $params){ return $this->execute($sql, $params); } -} - - -class MapperTest extends MapperTestUtility { - - /** - * @var Mapper - */ - private $mapper; - - protected function setUp(){ - parent::setUp(); - $this->mapper = new ExampleMapper($this->db); - } - - - public function testMapperShouldSetTableName(){ - $this->assertEquals('*PREFIX*table', $this->mapper->getTableName()); - } - - - public function testFindQuery(){ - $sql = 'hi'; - $params = array('jo'); - $rows = array( - array('hi') - ); - $this->setMapperResult($sql, $params, $rows); - $this->mapper->find($sql, $params); - } - - public function testFindEntity(){ - $sql = 'hi'; - $params = array('jo'); - $rows = array( - array('pre_name' => 'hi') - ); - $this->setMapperResult($sql, $params, $rows, null, null, true); - $this->mapper->findOneEntity($sql, $params); - } - - public function testFindNotFound(){ - $sql = 'hi'; - $params = array('jo'); - $rows = array(); - $this->setMapperResult($sql, $params, $rows); - $this->setExpectedException( - '\OCP\AppFramework\Db\DoesNotExistException'); - $this->mapper->find($sql, $params); - } - - public function testFindEntityNotFound(){ - $sql = 'hi'; - $params = array('jo'); - $rows = array(); - $this->setMapperResult($sql, $params, $rows, null, null, true); - $this->setExpectedException( - '\OCP\AppFramework\Db\DoesNotExistException'); - $this->mapper->findOneEntity($sql, $params); - } - - public function testFindMultiple(){ - $sql = 'hi'; - $params = array('jo'); - $rows = array( - array('jo'), array('ho') - ); - $this->setMapperResult($sql, $params, $rows, null, null, true); - $this->setExpectedException( - '\OCP\AppFramework\Db\MultipleObjectsReturnedException'); - $this->mapper->find($sql, $params); - } - - public function testFindEntityMultiple(){ - $sql = 'hi'; - $params = array('jo'); - $rows = array( - array('jo'), array('ho') - ); - $this->setMapperResult($sql, $params, $rows, null, null, true); - $this->setExpectedException( - '\OCP\AppFramework\Db\MultipleObjectsReturnedException'); - $this->mapper->findOneEntity($sql, $params); - } - - - public function testDelete(){ - $sql = 'DELETE FROM `*PREFIX*table` WHERE `id` = ?'; - $params = array(2); - - $this->setMapperResult($sql, $params, [], null, null, true); - $entity = new Example(); - $entity->setId($params[0]); - - $this->mapper->delete($entity); - } - - - public function testCreate(){ - $this->db->expects($this->once()) - ->method('lastInsertId') - ->with($this->equalTo('*PREFIX*table')) - ->will($this->returnValue(3)); - $this->mapper = new ExampleMapper($this->db); - - $sql = 'INSERT INTO `*PREFIX*table`(`pre_name`,`email`) ' . - 'VALUES(?,?)'; - $params = array('john', 'my@email'); - $entity = new Example(); - $entity->setPreName($params[0]); - $entity->setEmail($params[1]); - - $this->setMapperResult($sql, $params, [], null, null, true); - - $this->mapper->insert($entity); - } - - - public function testCreateShouldReturnItemWithCorrectInsertId(){ - $this->db->expects($this->once()) - ->method('lastInsertId') - ->with($this->equalTo('*PREFIX*table')) - ->will($this->returnValue(3)); - $this->mapper = new ExampleMapper($this->db); - - $sql = 'INSERT INTO `*PREFIX*table`(`pre_name`,`email`) ' . - 'VALUES(?,?)'; - $params = array('john', 'my@email'); - $entity = new Example(); - $entity->setPreName($params[0]); - $entity->setEmail($params[1]); - - $this->setMapperResult($sql, $params); - - $result = $this->mapper->insert($entity); - - $this->assertEquals(3, $result->getId()); - } - - - public function testAssocParameters() { - $sql = 'test'; - $params = [':test' => 1, ':a' => 2]; - - $this->setMapperResult($sql, $params); - $this->mapper->execSql($sql, $params); - } - - - public function testUpdate(){ - $sql = 'UPDATE `*PREFIX*table` ' . - 'SET ' . - '`pre_name` = ?,'. - '`email` = ? ' . - 'WHERE `id` = ?'; - - $params = array('john', 'my@email', 1); - $entity = new Example(); - $entity->setPreName($params[0]); - $entity->setEmail($params[1]); - $entity->setId($params[2]); - - $this->setMapperResult($sql, $params, [], null, null, true); - - $this->mapper->update($entity); - } - - - public function testUpdateNoId(){ - $params = array('john', 'my@email'); - $entity = new Example(); - $entity->setPreName($params[0]); - $entity->setEmail($params[1]); - - $this->setExpectedException('InvalidArgumentException'); - - $this->mapper->update($entity); - } - - - public function testUpdateNothingChangedNoQuery(){ - $params = array('john', 'my@email'); - $entity = new Example(); - $entity->setId(3); - $entity->setEmail($params[1]); - $entity->resetUpdatedFields(); - - $this->db->expects($this->never()) - ->method('prepareQuery'); - - $this->mapper->update($entity); - } - - - public function testMapRowToEntity(){ - $entity1 = $this->mapper->mapRow(array('pre_name' => 'test1', 'email' => 'test2')); - $entity2 = new Example(); - $entity2->setPreName('test1'); - $entity2->setEmail('test2'); - $entity2->resetUpdatedFields(); - $this->assertEquals($entity2, $entity1); - } - - public function testFindEntities(){ - $sql = 'hi'; - $rows = array( - array('pre_name' => 'hi') - ); - $entity = new Example(); - $entity->setPreName('hi'); - $entity->resetUpdatedFields(); - $this->setMapperResult($sql, array(), $rows, null, null, true); - $result = $this->mapper->findAllEntities($sql); - $this->assertEquals(array($entity), $result); - } - - public function testFindEntitiesNotFound(){ - $sql = 'hi'; - $rows = array(); - $this->setMapperResult($sql, array(), $rows); - $result = $this->mapper->findAllEntities($sql); - $this->assertEquals(array(), $result); - } - - public function testFindEntitiesMultiple(){ - $sql = 'hi'; - $rows = array( - array('pre_name' => 'jo'), array('email' => 'ho') - ); - $entity1 = new Example(); - $entity1->setPreName('jo'); - $entity1->resetUpdatedFields(); - $entity2 = new Example(); - $entity2->setEmail('ho'); - $entity2->resetUpdatedFields(); - $this->setMapperResult($sql, array(), $rows); - $result = $this->mapper->findAllEntities($sql); - $this->assertEquals(array($entity1, $entity2), $result); - } -} diff --git a/tests/lib/appframework/db/mappertestutility.php b/tests/lib/appframework/db/mappertestutility.php deleted file mode 100644 index 69f0ad4eb67..00000000000 --- a/tests/lib/appframework/db/mappertestutility.php +++ /dev/null @@ -1,209 +0,0 @@ -<?php - -/** - * ownCloud - App Framework - * - * @author Bernhard Posselt - * @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - - -namespace Test\AppFramework\Db; - - -/** - * Simple utility class for testing mappers - */ -abstract class MapperTestUtility extends \Test\TestCase { - protected $db; - private $query; - 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\IDBConnection') - ->disableOriginalConstructor() - ->getMock(); - - $this->query = $this->getMock('\PDOStatement'); - $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 int 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; - - $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; - } - } -} - |