123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- <?php
- /**
- * Elgg Metastrings test
- *
- * @package Elgg.Core
- * @subpackage Metastrings.Test
- */
- class ElggCoreMetastringsTest extends \ElggCoreUnitTest {
- public $metastringTypes = array('metadata', 'annotation');
- public $metastringTables = array(
- 'metadata' => 'metadata',
- 'annotation' => 'annotations',
- );
- /**
- * Called before each test object.
- */
- public function __construct() {
- parent::__construct();
- $this->metastrings = array();
- $this->object = new \ElggObject();
- $this->object->save();
- }
- public function createAnnotations($max = 1) {
- $annotations = array();
- for ($i=0; $i<$max; $i++) {
- $name = 'test_annotation_name' . rand();
- $value = 'test_annotation_value' . rand();
- $id = create_annotation($this->object->guid, $name, $value);
- $annotations[] = $id;
- }
- return $annotations;
- }
- public function createMetadata($max = 1) {
- $metadata = array();
- for ($i=0; $i<$max; $i++) {
- $name = 'test_metadata_name' . rand();
- $value = 'test_metadata_value' . rand();
- $id = create_metadata($this->object->guid, $name, $value);
- $metadata[] = $id;
- }
- return $metadata;
- }
- /**
- * Called after each test method.
- */
- public function tearDown() {
- access_show_hidden_entities(true);
- elgg_delete_annotations(array(
- 'guid' => $this->object->guid,
- ));
- access_show_hidden_entities(false);
- }
- /**
- * Called after each test object.
- */
- public function __destruct() {
- $this->object->delete();
- parent::__destruct();
- }
- public function testDeleteByID() {
- $db_prefix = elgg_get_config('dbprefix');
- $annotation = $this->createAnnotations(1);
- $metadata = $this->createMetadata(1);
- foreach ($this->metastringTypes as $type) {
- $id = ${$type}[0];
- $table = $db_prefix . $this->metastringTables[$type];
- $q = "SELECT * FROM $table WHERE id = $id";
- $test = get_data($q);
- $this->assertEqual($test[0]->id, $id);
- $this->assertTrue(_elgg_delete_metastring_based_object_by_id($id, $type));
- $this->assertIdentical(array(), get_data($q));
- }
- }
- public function testGetMetastringObjectFromID() {
- $db_prefix = elgg_get_config('dbprefix');
- $annotation = $this->createAnnotations(1);
- $metadata = $this->createMetadata(1);
- foreach ($this->metastringTypes as $type) {
- $id = ${$type}[0];
- $test = _elgg_get_metastring_based_object_from_id($id, $type);
- $this->assertEqual($id, $test->id);
- $this->assertTrue(_elgg_delete_metastring_based_object_by_id($id, $type));
- }
- }
- public function testGetMetastringObjectFromIDWithDisabledAnnotation() {
- $name = 'test_annotation_name' . rand();
- $value = 'test_annotation_value' . rand();
- $id = create_annotation($this->object->guid, $name, $value);
- $annotation = elgg_get_annotation_from_id($id);
- $this->assertTrue($annotation->disable());
- $test = _elgg_get_metastring_based_object_from_id($id, 'annotation');
- $this->assertEqual(false, $test);
- $prev = access_get_show_hidden_status();
- access_show_hidden_entities(true);
- $this->assertTrue(_elgg_delete_metastring_based_object_by_id($id, 'annotation'));
- access_show_hidden_entities($prev);
- }
- public function testGetMetastringBasedObjectWithDisabledAnnotation() {
- $name = 'test_annotation_name' . rand();
- $value = 'test_annotation_value' . rand();
- $id = create_annotation($this->object->guid, $name, $value);
- $annotation = elgg_get_annotation_from_id($id);
- $this->assertTrue($annotation->disable());
- $test = _elgg_get_metastring_based_objects(array(
- 'metastring_type' => 'annotations',
- 'guid' => $this->object->guid,
- ));
- $this->assertEqual(array(), $test);
- $prev = access_get_show_hidden_status();
- access_show_hidden_entities(true);
- $this->assertTrue(_elgg_delete_metastring_based_object_by_id($id, 'annotation'));
- access_show_hidden_entities($prev);
- }
- public function testEnableDisableByID() {
- $db_prefix = elgg_get_config('dbprefix');
- $annotation = $this->createAnnotations(1);
- $metadata = $this->createMetadata(1);
- foreach ($this->metastringTypes as $type) {
- $id = ${$type}[0];
- $table = $db_prefix . $this->metastringTables[$type];
- $q = "SELECT * FROM $table WHERE id = $id";
- $test = get_data($q);
- // disable
- $this->assertEqual($test[0]->enabled, 'yes');
- $this->assertTrue(_elgg_set_metastring_based_object_enabled_by_id($id, 'no', $type));
- $test = get_data($q);
- $this->assertEqual($test[0]->enabled, 'no');
- // enable
- $ashe = access_get_show_hidden_status();
- access_show_hidden_entities(true);
- $this->assertTrue(_elgg_set_metastring_based_object_enabled_by_id($id, 'yes', $type));
- $test = get_data($q);
- $this->assertEqual($test[0]->enabled, 'yes');
- access_show_hidden_entities($ashe);
- $this->assertTrue(_elgg_delete_metastring_based_object_by_id($id, $type));
- }
- }
- public function testKeepMeFromDeletingEverything() {
- foreach ($this->metastringTypes as $type) {
- $required = array(
- 'guid', 'guids'
- );
- switch ($type) {
- case 'metadata':
- $metadata_required = array(
- 'metadata_owner_guid', 'metadata_owner_guids',
- 'metadata_name', 'metadata_names',
- 'metadata_value', 'metadata_values'
- );
- $required = array_merge($required, $metadata_required);
- break;
- case 'annotation':
- $annotations_required = array(
- 'annotation_owner_guid', 'annotation_owner_guids',
- 'annotation_name', 'annotation_names',
- 'annotation_value', 'annotation_values'
- );
- $required = array_merge($required, $annotations_required);
- break;
- }
- $options = array();
- $this->assertFalse(_elgg_is_valid_options_for_batch_operation($options, $type));
- // limit alone isn't valid:
- $options = array('limit' => 10);
- $this->assertFalse(_elgg_is_valid_options_for_batch_operation($options, $type));
- foreach ($required as $key) {
- $options = array();
- $options[$key] = ELGG_ENTITIES_ANY_VALUE;
- $this->assertFalse(_elgg_is_valid_options_for_batch_operation($options, $type), "Sent $key = ELGG_ENTITIES_ANY_VALUE");
- $options[$key] = ELGG_ENTITIES_NO_VALUE;
- $this->assertFalse(_elgg_is_valid_options_for_batch_operation($options, $type), "Sent $key = ELGG_ENTITIES_NO_VALUE");
- $options[$key] = false;
- $this->assertFalse(_elgg_is_valid_options_for_batch_operation($options, $type), "Sent $key = bool false");
- $options[$key] = true;
- $this->assertTrue(_elgg_is_valid_options_for_batch_operation($options, $type), "Sent $key = bool true");
- $options[$key] = 'test';
- $this->assertTrue(_elgg_is_valid_options_for_batch_operation($options, $type), "Sent $key = 'test'");
- $options[$key] = array('test');
- $this->assertTrue(_elgg_is_valid_options_for_batch_operation($options, $type), "Sent $key = array('test')");
- }
- }
- }
- }
|