From 0f0a7f0c473ba9c7ddbf4321ffb264fe2b58e33b Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Wed, 20 Mar 2013 12:19:17 +0100 Subject: moved entity to the appframework --- db/entity.php | 159 ------------------------------------------------ db/item.php | 6 +- tests/db/EntityTest.php | 135 ---------------------------------------- tests/db/ItemTest.php | 4 -- 4 files changed, 2 insertions(+), 302 deletions(-) delete mode 100644 db/entity.php delete mode 100644 tests/db/EntityTest.php diff --git a/db/entity.php b/db/entity.php deleted file mode 100644 index a13bcce34..000000000 --- a/db/entity.php +++ /dev/null @@ -1,159 +0,0 @@ -. -* -*/ - -namespace OCA\News\Db; - -abstract class Entity { - - public $id; - - private $tableName; - private $updatedFields; - - public function __construct($tableName){ - $this->updatedFields = array(); - $this->tableName = '*dbprefix*' . $tableName; - } - - - /** - * Each time a setter is called, push the part after set - * into an array: for instance setId will save Id in the - * updated fields array so it can be easily used to create the - * getter method - */ - public function __call($methodName, $args){ - - // setters - if(strpos($methodName, 'set') === 0){ - $attr = lcfirst( substr($methodName, 3) ); - - // setters should only work for existing attributes - if(property_exists($this, $attr)){ - $this->markFieldUpdated($attr); - $this->$attr = $args[0]; - } else { - throw new \BadFunctionCallException($attr . - ' is not a valid attribute'); - } - - // getters - } elseif(strpos($methodName, 'get') === 0) { - $attr = lcfirst( substr($methodName, 3) ); - - // getters should only work for existing attributes - if(property_exists($this, $attr)){ - return $this->$attr; - } else { - throw new \BadFunctionCallException($attr . - ' is not a valid attribute'); - } - } else { - throw new \BadFunctionCallException($methodName . - ' does not exist'); - } - - } - - - /** - * Mark am attribute as updated - * @param string $attribute the name of the attribute - */ - protected function markFieldUpdated($attribute){ - $this->updatedFields[$attribute] = true; - } - - - /** - * Transform a database columnname to a property - * @param string $columnName the name of the column - * @return string the property name - */ - public function columnToProperty($columnName){ - $parts = explode('_', $columnName); - $property = null; - - foreach($parts as $part){ - if($property === null){ - $property = $part; - } else { - $property .= ucfirst($part); - } - } - - return $property; - } - - - /** - * Transform a property to a database column name - * @param string $property the name of the property - * @return string the column name - */ - public function propertyToColumn($property){ - $parts = preg_split('/(?=[A-Z])/', $property); - $column = null; - - foreach($parts as $part){ - if($column === null){ - $column = $part; - } else { - $column .= '_' . lcfirst($part); - } - } - - return $column; - } - - - /** - * @return array array of updated fields for update query - */ - public function getUpdatedFields(){ - return $this->updatedFields; - } - - - /** - * Maps the keys of the row array to the attributes - * @param array $row the row to map onto the entity - */ - public function fromRow(array $row){ - foreach($row as $key => $value){ - $prop = $this->columnToProperty($key); - $this->$prop = $value; - } - } - - - /** - * @return string the table name - */ - public function getTableName(){ - return $this->tableName; - } - -} \ No newline at end of file diff --git a/db/item.php b/db/item.php index 321c1d384..11a5becf1 100644 --- a/db/item.php +++ b/db/item.php @@ -25,6 +25,8 @@ namespace OCA\News\Db; +use \OCA\AppFramework\Db\Entity; + class Item extends Entity { @@ -41,10 +43,6 @@ class Item extends Entity { public $status; public $feedTitle; - public function __construct(){ - parent::__construct('news_items'); - } - public function setRead() { $this->markFieldUpdated('status'); $this->status &= ~StatusFlag::UNREAD; diff --git a/tests/db/EntityTest.php b/tests/db/EntityTest.php deleted file mode 100644 index e7e44e332..000000000 --- a/tests/db/EntityTest.php +++ /dev/null @@ -1,135 +0,0 @@ -. -* -*/ - -namespace OCA\News\Db; - -require_once(__DIR__ . "/../classloader.php"); - - -class TestEntity extends Entity { - public $name; - public $email; - - public function __construct(){ - parent::__construct('entity'); - } -}; - - -class EntityTest extends \PHPUnit_Framework_TestCase { - - private $entity; - - protected function setUp(){ - $this->entity = new TestEntity(); - } - - - public function testFromRow(){ - $row = array( - 'pre_name' => 'john', - 'email' => 'john@something.com' - ); - $this->entity = new TestEntity(); - - $this->entity->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(){ - $id = 3; - $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->fromRow($row); - $this->assertEquals($entity2, $this->entity); - } - - - public function testEntityShouldSetTableName(){ - $this->assertEquals('*dbprefix*entity', $this->entity->getTableName()); - } - -} \ No newline at end of file diff --git a/tests/db/ItemTest.php b/tests/db/ItemTest.php index 872b464c3..1e4379729 100644 --- a/tests/db/ItemTest.php +++ b/tests/db/ItemTest.php @@ -66,8 +66,4 @@ class ItemTest extends \PHPUnit_Framework_TestCase { } - public function testTableName(){ - $this->assertEquals('*dbprefix*news_items', $this->item->getTableName()); - } - } \ No newline at end of file -- cgit v1.2.3