diff options
Diffstat (limited to 'engine/tests')
-rw-r--r-- | engine/tests/api/entity_getter_functions.php | 311 | ||||
-rw-r--r-- | engine/tests/objects/users.php | 131 |
2 files changed, 419 insertions, 23 deletions
diff --git a/engine/tests/api/entity_getter_functions.php b/engine/tests/api/entity_getter_functions.php index 49fd4ec0d..1d7261c0d 100644 --- a/engine/tests/api/entity_getter_functions.php +++ b/engine/tests/api/entity_getter_functions.php @@ -1365,6 +1365,262 @@ class ElggCoreEntityGetterFunctionsTest extends ElggCoreUnitTest { } } + function testElggApiGettersEntityMetadataNVPValidNValidVEqualsTriple() { + $subtypes = $this->getRandomValidSubtypes(array('object'), 1); + $subtype = $subtypes[0]; + $md_name = 'test_metadata_name_' . rand(); + $md_value = 'test_metadata_value_' . rand(); + + $md_name2 = 'test_metadata_name_' . rand(); + $md_value2 = 'test_metadata_value_' . rand(); + + $md_name3 = 'test_metadata_name_' . rand(); + $md_value3 = 'test_metadata_value_' . rand(); + + $guids = array(); + + // our target + $valid = new ElggObject(); + $valid->subtype = $subtype; + $valid->$md_name = $md_value; + $valid->$md_name2 = $md_value2; + $valid->$md_name3 = $md_value3; + $valid->save(); + $guids[] = $valid->getGUID(); + + // make some bad ones + $invalid_md_name = 'test_metadata_name_' . rand(); + $e = new ElggObject(); + $e->subtype = $subtype; + $e->$md_name = $invalid_md_value; + $e->$md_name2 = $invalid_md_value; + $e->$md_name3 = $invalid_md_value; + $e->save(); + $guids[] = $e->getGUID(); + + $invalid_md_value = 'test_metadata_value_' . rand(); + $e = new ElggObject(); + $e->subtype = $subtype; + $e->$md_name = $invalid_md_value; + $e->$md_name2 = $invalid_md_value; + $e->$md_name3 = $invalid_md_value; + $e->save(); + $guids[] = $e->getGUID(); + + $md_invalid_names = array(); + + $options = array( + 'type' => 'object', + 'subtype' => $subtype, + 'metadata_name_value_pairs' => array( + array( + 'name' => $md_name, + 'value' => $md_value + ), + array( + 'name' => $md_name2, + 'value' => $md_value2 + ), + array( + 'name' => $md_name3, + 'value' => $md_value3 + ) + ) + ); + + $entities = elgg_get_entities_from_metadata($options); + + $this->assertIsa($entities, 'array'); + $this->assertEqual(count($entities), 1); + + foreach ($entities as $entity) { + $this->assertEqual($entity->getGUID(), $valid->getGUID()); + $this->assertEqual($entity->$md_name, $md_value); + $entity->delete(); + } + + foreach ($guids as $guid) { + if ($e = get_entity($guid)) { + $e->delete(); + } + } + } + + function testElggApiGettersEntityMetadataNVPValidNValidVEqualsDouble() { + $subtypes = $this->getRandomValidSubtypes(array('object'), 1); + $subtype = $subtypes[0]; + $md_name = 'test_metadata_name_' . rand(); + $md_value = 'test_metadata_value_' . rand(); + + $md_name2 = 'test_metadata_name_' . rand(); + $md_value2 = 'test_metadata_value_' . rand(); + + $guids = array(); + + // our target + $valid = new ElggObject(); + $valid->subtype = $subtype; + $valid->$md_name = $md_value; + $valid->$md_name2 = $md_value2; + $valid->save(); + $guids[] = $valid->getGUID(); + + // make some bad ones + $invalid_md_name = 'test_metadata_name_' . rand(); + $e = new ElggObject(); + $e->subtype = $subtype; + $e->$md_name = $invalid_md_value; + $e->$md_name2 = $invalid_md_value; + $e->save(); + $guids[] = $e->getGUID(); + + $invalid_md_value = 'test_metadata_value_' . rand(); + $e = new ElggObject(); + $e->subtype = $subtype; + $e->$md_name = $invalid_md_value; + $e->$md_name2 = $invalid_md_value; + $e->save(); + $guids[] = $e->getGUID(); + + $md_invalid_names = array(); + + $options = array( + 'type' => 'object', + 'subtype' => $subtype, + 'metadata_name_value_pairs' => array( + array( + 'name' => $md_name, + 'value' => $md_value + ), + array( + 'name' => $md_name2, + 'value' => $md_value2 + ) + ) + ); + + $entities = elgg_get_entities_from_metadata($options); + + $this->assertIsa($entities, 'array'); + $this->assertEqual(count($entities), 1); + + foreach ($entities as $entity) { + $this->assertEqual($entity->getGUID(), $valid->getGUID()); + $this->assertEqual($entity->$md_name, $md_value); + $entity->delete(); + } + + foreach ($guids as $guid) { + if ($e = get_entity($guid)) { + $e->delete(); + } + } + } + + function testElggApiGettersEntityMetadataNVPValidNValidVEqualsStupid() { + $subtypes = $this->getRandomValidSubtypes(array('object'), 1); + $subtype = $subtypes[0]; + $md_name = 'test_metadata_name_' . rand(); + $md_value = 'test_metadata_value_' . rand(); + + $md_name2 = 'test_metadata_name_' . rand(); + $md_value2 = 'test_metadata_value_' . rand(); + + $md_name3 = 'test_metadata_name_' . rand(); + $md_value3 = 'test_metadata_value_' . rand(); + + $md_name3 = 'test_metadata_name_' . rand(); + $md_value3 = 'test_metadata_value_' . rand(); + + $md_name4 = 'test_metadata_name_' . rand(); + $md_value4 = 'test_metadata_value_' . rand(); + + $md_name5 = 'test_metadata_name_' . rand(); + $md_value5 = 'test_metadata_value_' . rand(); + + $guids = array(); + + // our target + $valid = new ElggObject(); + $valid->subtype = $subtype; + $valid->$md_name = $md_value; + $valid->$md_name2 = $md_value2; + $valid->$md_name3 = $md_value3; + $valid->$md_name4 = $md_value4; + $valid->$md_name5 = $md_value5; + $valid->save(); + $guids[] = $valid->getGUID(); + + // make some bad ones + $invalid_md_name = 'test_metadata_name_' . rand(); + $e = new ElggObject(); + $e->subtype = $subtype; + $e->$md_name = $invalid_md_value; + $e->$md_name2 = $invalid_md_value; + $e->$md_name3 = $invalid_md_value; + $e->$md_name4 = $invalid_md_value; + $e->$md_name5 = $invalid_md_value; + $e->save(); + $guids[] = $e->getGUID(); + + $invalid_md_value = 'test_metadata_value_' . rand(); + $e = new ElggObject(); + $e->subtype = $subtype; + $e->$md_name = $invalid_md_value; + $e->$md_name2 = $invalid_md_value; + $e->$md_name3 = $invalid_md_value; + $e->$md_name4 = $invalid_md_value; + $e->$md_name5 = $invalid_md_value; + $e->save(); + $guids[] = $e->getGUID(); + + $md_invalid_names = array(); + + $options = array( + 'type' => 'object', + 'subtype' => $subtype, + 'metadata_name_value_pairs' => array( + array( + 'name' => $md_name, + 'value' => $md_value + ), + array( + 'name' => $md_name2, + 'value' => $md_value2 + ), + array( + 'name' => $md_name3, + 'value' => $md_value3 + ), + array( + 'name' => $md_name4, + 'value' => $md_value4 + ), + array( + 'name' => $md_name5, + 'value' => $md_value5 + ), + ) + ); + + $entities = elgg_get_entities_from_metadata($options); + + $this->assertIsa($entities, 'array'); + $this->assertEqual(count($entities), 1); + + foreach ($entities as $entity) { + $this->assertEqual($entity->getGUID(), $valid->getGUID()); + $this->assertEqual($entity->$md_name, $md_value); + $entity->delete(); + } + + foreach ($guids as $guid) { + if ($e = get_entity($guid)) { + $e->delete(); + } + } + } + function testElggApiGettersEntityMetadataNVPValidNInvalidV() { $subtypes = $this->getRandomValidSubtypes(array('object'), 1); $subtype = $subtypes[0]; @@ -1730,4 +1986,59 @@ class ElggCoreEntityGetterFunctionsTest extends ElggCoreUnitTest { } } } + + /** + * Annotations + */ + public function testElggApiGettersEntitiesFromAnnotation() { + + // grab a few different users to annotation + // there will always be at least 2 here because of the construct. + $users = elgg_get_entities(array('type' => 'user', 'limit' => 2)); + + // create some test annotations + $subtypes = $this->getRandomValidSubtypes(array('object'), 1); + $subtype = $subtypes[0]; + $annotation_name = 'test_annotation_name_' . rand(); + $annotation_value = rand(1000, 9999); + $annotation_name2 = 'test_annotation_name_' . rand(); + $annotation_value2 = rand(1000, 9999); + $guids = array(); + + // our targets + $valid = new ElggObject(); + $valid->subtype = $subtype; + $valid->save(); + $guids[] = $valid->getGUID(); + create_annotation($valid->getGUID(), $annotation_name, $annotation_value, 'integer', $users[0]->getGUID()); + + $valid2 = new ElggObject(); + $valid2->subtype = $subtype; + $valid2->save(); + $guids[] = $valid2->getGUID(); + create_annotation($valid2->getGUID(), $annotation_name2, $annotation_value2, 'integer', $users[1]->getGUID()); + + $options = array( + 'annotation_owner_guid' => $users[0]->getGUID(), + 'annotation_name' => $annotation_name + ); + + $entities = elgg_get_entities_from_annotations($options); + + foreach ($entities as $entity) { + $this->assertTrue(in_array($entity->getGUID(), $guids)); + $annotations = $entity->getAnnotations($annotation_name); + $this->assertEqual(count($annotations), 1); + + $this->assertEqual($annotations[0]->name, $annotation_name); + $this->assertEqual($annotations[0]->value, $annotation_value); + $this->assertEqual($annotations[0]->owner_guid, $users[0]->getGUID()); + } + + foreach ($guids as $guid) { + if ($e = get_entity($guid)) { + $e->delete(); + } + } + } } diff --git a/engine/tests/objects/users.php b/engine/tests/objects/users.php index c03091a91..d6d73a37b 100644 --- a/engine/tests/objects/users.php +++ b/engine/tests/objects/users.php @@ -14,7 +14,7 @@ class ElggCoreUserTest extends ElggCoreUnitTest { */ public function __construct() { parent::__construct(); - + // all code should come after here } @@ -31,7 +31,7 @@ class ElggCoreUserTest extends ElggCoreUnitTest { public function tearDown() { // do not allow SimpleTest to interpret Elgg notices as exceptions $this->swallowErrors(); - + unset($this->user); } @@ -68,17 +68,18 @@ class ElggCoreUserTest extends ElggCoreUnitTest { $attributes['language'] = ''; $attributes['code'] = ''; $attributes['banned'] = 'no'; - + $attributes['admin'] = 'no'; + $this->assertIdentical($this->user->expose_attributes(), $attributes); } - + public function testElggUserLoad() { // new object $object = new ElggObject(); $this->AssertEqual($object->getGUID(), 0); $guid = $object->save(); $this->AssertNotEqual($guid, 0); - + // fail on wrong type try { $error = new ElggUserTest($guid); @@ -88,15 +89,15 @@ class ElggCoreUserTest extends ElggCoreUnitTest { $message = sprintf(elgg_echo('InvalidClassException:NotValidElggStar'), $guid, 'ElggUser'); $this->assertIdentical($e->getMessage(), $message); } - + // clean up $object->delete(); } - + public function testElggUserConstructorByGuid() { $user = new ElggUser(get_loggedin_userid()); $this->assertIdentical($user, $_SESSION['user']); - + // fail with garbage try { $error = new ElggUserTest(array('invalid')); @@ -107,57 +108,141 @@ class ElggCoreUserTest extends ElggCoreUnitTest { $this->assertIdentical($e->getMessage(), $message); } } - + public function testElggUserConstructorByDbRow() { $row = $this->fetchUser(get_loggedin_userid()); $user = new ElggUser($row); $this->assertIdentical($user, $_SESSION['user']); } - + public function testElggUserConstructorByUsername() { $row = $this->fetchUser(get_loggedin_userid()); $user = new ElggUser($row->username); $this->assertIdentical($user, $_SESSION['user']); } - + public function testElggUserSave() { // new object $this->AssertEqual($this->user->getGUID(), 0); $guid = $this->user->save(); $this->AssertNotEqual($guid, 0); - + // clean up $this->user->delete(); } - + public function testElggUserDelete() { $guid = $this->user->save(); - + // delete object $this->assertTrue($this->user->delete()); - + // check GUID not in database $this->assertFalse($this->fetchUser($guid)); } - + public function testElggUserNameCache() { // Trac #1305 - + // very unlikely a user would have this username $name = (string)time(); $this->user->username = $name; - + $guid = $this->user->save(); - - $user = get_user_by_username($name); - $user->delete(); + + $user = get_user_by_username($name); + $user->delete(); $user = get_user_by_username($name); $this->assertFalse($user); } - + + + public function testElggUserMakeAdmin() { + global $CONFIG; + + // need to save user to have a guid + $guid = $this->user->save(); + + $this->assertTrue($this->user->makeAdmin()); + + $q = "SELECT admin FROM {$CONFIG->dbprefix}users_entity WHERE guid = $guid"; + $r = mysql_query($q); + + $admin = mysql_fetch_assoc($r); + $this->assertEqual($admin['admin'], 'yes'); + + $this->user->delete(); + } + + public function testElggUserRemoveAdmin() { + global $CONFIG; + + // need to save user to have a guid + $guid = $this->user->save(); + + $this->assertTrue($this->user->removeAdmin()); + + $q = "SELECT admin FROM {$CONFIG->dbprefix}users_entity WHERE guid = $guid"; + $r = mysql_query($q); + + $admin = mysql_fetch_assoc($r); + $this->assertEqual($admin['admin'], 'no'); + + $this->user->delete(); + } + + public function testElggUserIsAdmin() { + // need to grab a real user with a guid and everything. + $guid = $this->user->save(); + + $this->assertTrue($this->user->makeAdmin()); + + // this is testing the function, not the SQL. + // that's been tested above. + $this->assertTrue($this->user->isAdmin()); + + $this->user->delete(); + } + + public function testElggUserIsNotAdmin() { + // need to grab a real user with a guid and everything. + $guid = $this->user->save(); + + $this->assertTrue($this->user->removeAdmin()); + + // this is testing the function, not the SQL. + // that's been tested above. + $this->assertFalse($this->user->isAdmin()); + + $this->user->delete(); + } + + // remove in 1.9 + public function testElggUserIsAdminLegacy() { + $this->user->save(); + $this->user->makeAdmin(); + + $this->assertTrue($this->user->admin); + $this->assertTrue($this->user->siteadmin); + + $this->user->removeAdmin(); + $this->user->delete(); + } + + public function testElggUserIsNotAdminLegacy() { + $this->user->save(); + $this->user->removeAdmin(); + + $this->assertFalse($this->user->admin); + $this->assertFalse($this->user->siteadmin); + + $this->user->removeAdmin(); + $this->user->delete(); + } + protected function fetchUser($guid) { global $CONFIG; - + return get_data_row("SELECT * FROM {$CONFIG->dbprefix}users_entity WHERE guid = '$guid'"); } } |