From 8f5ac5c27f81b04bb71bab930638762c8c3e501e Mon Sep 17 00:00:00 2001 From: cash Date: Tue, 12 Jan 2010 12:56:19 +0000 Subject: closes #1145 - deprecated current "copy constructor" for all entities and implemented a clone method. The clone copies over all metadata but not annotations and private settings. It sets the guid to 0 so saving the cloned entity creates a new database record. The ownership/access of metadata is set during the save and will be the same as that of the entity. git-svn-id: http://code.elgg.org/elgg/trunk@3802 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/tests/objects/objects.php | 48 ++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 19 deletions(-) (limited to 'engine/tests/objects/objects.php') diff --git a/engine/tests/objects/objects.php b/engine/tests/objects/objects.php index d30e4fae4..8209917bf 100644 --- a/engine/tests/objects/objects.php +++ b/engine/tests/objects/objects.php @@ -103,30 +103,40 @@ class ElggCoreObjectTest extends ElggCoreUnitTest { // clean up $this->entity->delete(); } - - public function testElggObjectConstructorByObject() { - $guid = $this->entity->save(); - // stdClass: use guid - $object_row = $this->get_object_row($guid); - $entity_row = $this->get_entity_row($guid); - $this->assertIdentical($this->entity, new ElggObjectTest($object_row)); - $this->assertIdentical($this->entity, new ElggObjectTest($entity_row)); + public function testElggObjectClone() { + $this->entity->title = 'testing'; + $this->entity->description = 'ElggObject'; + $this->entity->var1 = "test"; + $this->entity->var2 = 1; + $this->entity->var3 = true; + $this->entity->save(); - // copy attributes of ElggObject - $this->assertIdentical($this->entity, new ElggObjectTest($this->entity)); + // add tag array + $tag_string = 'tag1, tag2, tag3'; + $tagarray = string_to_tag_array($tag_string); + $this->entity->tags = $tagarray; - // error on ElggEntity - $entity = new ElggEntityTest($guid); - try { - $error = new ElggObjectTest($entity); - $this->assertTrue(FALSE); - } catch (Exception $e) { - $this->assertIsA($e, 'InvalidParameterException'); - $this->assertIdentical($e->getMessage(), elgg_echo('InvalidParameterException:NonElggObject')); - } + // a cloned ElggEntity has the guid reset + $object = clone $this->entity; + $this->assertIdentical(0, (int)$object->guid); + + // make sure attributes were copied over + $this->assertIdentical($object->title, 'testing'); + $this->assertIdentical($object->description, 'ElggObject'); + + $guid = $object->save(); + $this->assertTrue($guid !== 0); + $this->assertTrue($guid !== $this->entity->guid); + + // test that metadata was transfered + $this->assertIdentical($this->entity->var1, $object->var1); + $this->assertIdentical($this->entity->var2, $object->var2); + $this->assertIdentical($this->entity->var3, $object->var3); + $this->assertIdentical($this->entity->tags, $object->tags); // clean up + $object->delete(); $this->entity->delete(); } -- cgit v1.2.3