[Argil-svn] SF.net SVN: argil: [540] branches/experimental
Status: Alpha
Brought to you by:
tswicegood
|
From: <tsw...@us...> - 2007-05-30 22:41:30
|
Revision: 540
http://argil.svn.sourceforge.net/argil/?rev=540&view=rev
Author: tswicegood
Date: 2007-05-30 15:41:32 -0700 (Wed, 30 May 2007)
Log Message:
-----------
Add in getPrimaryKey() to use when locating an object in persistent storage
Modified Paths:
--------------
branches/experimental/src/Argil/Model/Container.php
branches/experimental/tests/Argil/Model/ContainerTest.php
Modified: branches/experimental/src/Argil/Model/Container.php
===================================================================
--- branches/experimental/src/Argil/Model/Container.php 2007-05-30 21:11:16 UTC (rev 539)
+++ branches/experimental/src/Argil/Model/Container.php 2007-05-30 22:41:32 UTC (rev 540)
@@ -58,4 +58,16 @@
return (string)new Argil_Util_Template_CamelCapsToUnderscore($reflection->getName());
}
+
+ public function getPrimaryKey()
+ {
+ reset($this->_contained);
+ $reflection = new Argil_Reflection_Object(current($this->_contained));
+ $primary_key = $reflection->getPrimaryKey();
+ if (!empty($primary_key)) {
+ return $primary_key;
+ }
+
+ return $this->getTable() . '_id';
+ }
}
Modified: branches/experimental/tests/Argil/Model/ContainerTest.php
===================================================================
--- branches/experimental/tests/Argil/Model/ContainerTest.php 2007-05-30 21:11:16 UTC (rev 539)
+++ branches/experimental/tests/Argil/Model/ContainerTest.php 2007-05-30 22:41:32 UTC (rev 540)
@@ -24,6 +24,13 @@
{
}
+/**
+ * @primaryKey id
+ */
+class ArgilModelWithId
+{
+}
+
class Argil_Model_ContainerTest extends UnitTestCase
{
public function testWillTellWhatTypeOfObjectThisContains()
@@ -98,4 +105,20 @@
$container = new Argil_Model_Container(new ArgilModelWithTable());
$this->assertEqual($container->getTable(), 'some_table');
}
+
+ public function testCanDeterminePrimaryKeyBasedOnTableNamePlusUnderscoreId()
+ {
+ $container = new Argil_Model_Container(new ArgilSampleModel());
+ $this->assertEqual($container->getPrimaryKey(), 'argil_sample_model_id');
+ unset($container);
+
+ $container = new Argil_Model_Container(new ArgilModelWithTable());
+ $this->assertEqual($container->getPrimaryKey(), 'some_table_id');
+ }
+
+ public function testUsesModelPrimaryAnnotationIfSet()
+ {
+ $container = new Argil_Model_Container(new ArgilModelWithId());
+ $this->assertEqual($container->getPrimaryKey(), 'id');
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|