diff options
-rw-r--r-- | engine/lib/annotations.php | 7 | ||||
-rw-r--r-- | engine/lib/elgglib.php | 3 | ||||
-rw-r--r-- | engine/tests/regression/trac_bugs.php | 66 |
3 files changed, 75 insertions, 1 deletions
diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php index 666b83309..b18475d57 100644 --- a/engine/lib/annotations.php +++ b/engine/lib/annotations.php @@ -1146,6 +1146,7 @@ function delete_annotation($id) { * Clear all the annotations for a given entity, assuming you have access to that metadata. * * @param int $guid + * @return number of annotations deleted or false if an error */ function clear_annotations($guid, $name = "") { global $CONFIG; @@ -1154,6 +1155,10 @@ function clear_annotations($guid, $name = "") { if (!empty($name)) { $name = get_metastring_id($name); + if ($name === false) { + // name doesn't exist so 0 rows were deleted + return 0; + } } $entity_guid = (int) $guid; @@ -1173,6 +1178,8 @@ function clear_annotations($guid, $name = "") { return delete_data($query); } } + + return FALSE; } /** diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 9b5b34d86..c6a03cc4f 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -2757,6 +2757,7 @@ function elgg_boot() { function elgg_api_test($hook, $type, $value, $params) { global $CONFIG; $value[] = $CONFIG->path . 'engine/tests/api/entity_getter_functions.php'; + $value[] = $CONFIG->path . 'engine/tests/regression/trac_bugs.php'; return $value; } @@ -2774,4 +2775,4 @@ define('ELGG_ENTITIES_NO_VALUE', 0); register_elgg_event_handler('init', 'system', 'elgg_init'); register_elgg_event_handler('boot', 'system', 'elgg_boot', 1000); -register_plugin_hook('unit_test', 'system', 'elgg_api_test');
\ No newline at end of file +register_plugin_hook('unit_test', 'system', 'elgg_api_test'); diff --git a/engine/tests/regression/trac_bugs.php b/engine/tests/regression/trac_bugs.php new file mode 100644 index 000000000..01900b849 --- /dev/null +++ b/engine/tests/regression/trac_bugs.php @@ -0,0 +1,66 @@ +<?php +/** + * Elgg Regression Tests -- Trac Bugfixes + * Any bugfixes from Trac that require testing belong here. + * + * @package Elgg + * @subpackage Test + * @author Curverider Ltd + * @link http://elgg.org/ + */ +class ElggCoreRegressionBugsTest extends ElggCoreUnitTest { + + /** + * Called before each test object. + */ + public function __construct() { + $this->ia = elgg_set_ignore_access(TRUE); + parent::__construct(); + + // all __construct() code should come after here + } + + /** + * Called before each test method. + */ + public function setUp() { + + } + + /** + * Called after each test method. + */ + public function tearDown() { + // do not allow SimpleTest to interpret Elgg notices as exceptions + $this->swallowErrors(); + } + + /** + * Called after each test object. + */ + public function __destruct() { + elgg_set_ignore_access($this->ia); + // all __destruct() code should go above here + parent::__destruct(); + } + + /** + * #1558 + */ + public function testElggObjectClearAnnotations() { + $this->entity = new ElggObject(); + $guid = $this->entity->save(); + + $this->entity->annotate('test', 'hello', ACCESS_PUBLIC); + + $this->entity->clearAnnotations('does not exist'); + + $num = $this->entity->countAnnotations('test'); + + //$this->assertIdentical($num, 1); + $this->assertEqual($num, 1); + + // clean up + $this->entity->delete(); + } +} |