123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <?php
- /**
- * This requires elgg_get_logged_in_user_guid() in session.php, the access
- * constants defined in entities.php, and elgg_normalize_url() in output.php
- */
- class ElggEntityTest extends \PHPUnit_Framework_TestCase {
- /** @var \ElggEntity */
- protected $obj;
- protected function setUp() {
- _elgg_services()->setValue('session', \ElggSession::getMock());
- $this->obj = $this->getMockForAbstractClass('\ElggEntity');
- $reflection = new ReflectionClass('\ElggEntity');
- $method = $reflection->getMethod('initializeAttributes');
- if (method_exists($method, 'setAccessible')) {
- $method->setAccessible(true);
- $method->invokeArgs($this->obj, array());
- }
- }
- public function testDefaultAttributes() {
- $this->assertEquals(null, $this->obj->guid);
- $this->assertEquals(null, $this->obj->type);
- $this->assertEquals(null, $this->obj->subtype);
- $this->assertEquals(elgg_get_logged_in_user_guid(), $this->obj->owner_guid);
- $this->assertEquals(elgg_get_logged_in_user_guid(), $this->obj->container_guid);
- $this->assertEquals(null, $this->obj->site_guid);
- $this->assertEquals(ACCESS_PRIVATE, $this->obj->access_id);
- $this->assertEquals(null, $this->obj->time_created);
- $this->assertEquals(null, $this->obj->time_updated);
- $this->assertEquals(null, $this->obj->last_action);
- $this->assertEquals('yes', $this->obj->enabled);
- }
- public function testSettingAndGettingAttribute() {
- // Note: before save() subtype returns string, int after
- // see https://github.com/Elgg/Elgg/issues/5920#issuecomment-25246298
- $this->obj->subtype = 'foo';
- $this->assertEquals('foo', $this->obj->subtype);
- }
- public function testSettingIntegerAttributes() {
- foreach (array('access_id', 'owner_guid', 'container_guid') as $name) {
- $this->obj->$name = '77';
- $this->assertSame(77, $this->obj->$name);
- }
- }
- public function testSettingUnsettableAttributes() {
- foreach (array('guid', 'time_updated', 'last_action') as $name) {
- $this->obj->$name = 'foo';
- $this->assertNotEquals('foo', $this->obj->$name);
- }
- }
- public function testSettingMetadataNoDatabase() {
- $this->obj->foo = 'test';
- $this->assertEquals('test', $this->obj->foo);
- $this->obj->foo = 'overwrite';
- $this->assertEquals('overwrite', $this->obj->foo);
- }
- public function testGettingNonexistentMetadataNoDatabase() {
- $this->assertNull($this->obj->foo);
- }
- public function testSimpleGetters() {
- $this->obj->type = 'foo';
- $this->obj->subtype = 'subtype';
- $this->obj->owner_guid = 77;
- $this->obj->access_id = 2;
- $this->obj->time_created = 123456789;
- $this->assertEquals($this->obj->getGUID(), $this->obj->guid );
- $this->assertEquals($this->obj->getType(), $this->obj->type );
- // Note: before save() subtype returns string, int after
- // see https://github.com/Elgg/Elgg/issues/5920#issuecomment-25246298
- $this->assertEquals($this->obj->getSubtype(), $this->obj->subtype );
- $this->assertEquals($this->obj->getOwnerGUID(), $this->obj->owner_guid );
- $this->assertEquals($this->obj->getAccessID(), $this->obj->access_id );
- $this->assertEquals($this->obj->getTimeCreated(), $this->obj->time_created );
- $this->assertEquals($this->obj->getTimeUpdated(), $this->obj->time_updated );
- }
- public function testUnsetAttribute() {
- $this->obj->access_id = 2;
- unset($this->obj->access_id);
- $this->assertEquals('', $this->obj->access_id);
- }
- /**
- * @expectedException InvalidParameterException
- */
- public function testSaveWithoutType() {
- $db = $this->getMock('\Elgg\Database',
- array('getData', 'getTablePrefix', 'sanitizeString'),
- array(),
- '',
- false
- );
- $db->expects($this->any())
- ->method('sanitizeString')
- ->will($this->returnArgument(0));
- _elgg_services()->setValue('db', $db);
- // requires type to be set
- $this->obj->save();
- }
- public function testIsEnabled() {
- $this->assertTrue($this->obj->isEnabled());
- }
- public function testDisableBeforeSaved() {
- // false on disable because it's not saved yet.
- $this->assertFalse($this->obj->disable());
- }
- public function testToObject() {
- $keys = array(
- 'guid',
- 'type',
- 'subtype',
- 'time_created',
- 'time_updated',
- 'container_guid',
- 'owner_guid',
- 'site_guid',
- 'url',
- 'read_access',
- );
- sort($keys);
- $object = $this->obj->toObject();
- $object_keys = array_keys(get_object_vars($object));
- sort($object_keys);
- $this->assertEquals($keys, $object_keys);
- }
- public function testLatLong() {
- // Coordinates for Elgg, Switzerland
- $lat = 47.483333;
- $long = 8.866667;
- $this->obj->setLatLong($lat, $long);
- $this->assertEquals($this->obj->getLatitude(), $lat);
- $this->assertEquals($this->obj->getLongitude(), $long);
- }
- }
|