/** * Make sure entity is loaded from cache during save operations * See #10612 */ public function testNewObjectLoadedFromCacheDuringSaveOperations() { $object = new \ElggObject(); $object->subtype = 'elgg_entity_test_subtype'; // Add temporary metadata, annotation and private settings // to extend the scope of tests and catch issues with save operations $object->test_metadata = 'bar'; $object->annotate('test_annotation', 'baz'); $object->setPrivateSetting('test_setting', 'foo'); $metadata_called = false; $metadata_event_handler = function ($event, $type, $metadata) use(&$metadata_called) { /* @var $metadata \ElggMetadata */ $entity = get_entity($metadata->entity_guid); $this->assertEqual($metadata->entity_guid, $entity->guid); $metadata_called = true; }; $annotation_called = false; $annotation_event_handler = function ($event, $type, $annotation) use(&$annotation_called) { /* @var $metadata \ElggAnnotation */ $entity = get_entity($annotation->entity_guid); $this->assertEqual($annotation->entity_guid, $entity->guid); $annotation_called = true; }; elgg_register_event_handler('create', 'metadata', $metadata_event_handler); elgg_register_event_handler('create', 'annotation', $annotation_event_handler); $object->save(); elgg_unregister_event_handler('create', 'metadata', $metadata_event_handler); elgg_unregister_event_handler('create', 'annotation', $annotation_event_handler); $object->delete(); $this->assertTrue($metadata_called); $this->assertTrue($annotation_called); }