116 lines
3.9 KiB
Plaintext
116 lines
3.9 KiB
Plaintext
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Entity CRUD API tests.
|
|
*/
|
|
|
|
/**
|
|
* Tests the basic Entity API.
|
|
*/
|
|
class EntityAPITestCase extends DrupalWebTestCase {
|
|
|
|
public static function getInfo() {
|
|
return array(
|
|
'name' => 'Entity CRUD',
|
|
'description' => 'Tests basic CRUD functionality.',
|
|
'group' => 'Entity API',
|
|
);
|
|
}
|
|
|
|
function setUp() {
|
|
parent::setUp('entity', 'entity_test');
|
|
}
|
|
|
|
/**
|
|
* Tests basic CRUD functionality of the Entity API.
|
|
*/
|
|
function testCRUD() {
|
|
$user1 = $this->drupalCreateUser();
|
|
|
|
// Create some test entities.
|
|
$entity = entity_create('entity_test', array('name' => 'test', 'uid' => $user1->uid));
|
|
$entity->save();
|
|
$entity = entity_create('entity_test', array('name' => 'test2', 'uid' => $user1->uid));
|
|
$entity->save();
|
|
$entity = entity_create('entity_test', array('name' => 'test', 'uid' => NULL));
|
|
$entity->save();
|
|
|
|
$entities = array_values(entity_test_load_multiple(FALSE, array('name' => 'test')));
|
|
|
|
$this->assertEqual($entities[0]->name, 'test', 'Created and loaded entity.');
|
|
$this->assertEqual($entities[1]->name, 'test', 'Created and loaded entity.');
|
|
|
|
// Test loading a single entity.
|
|
$loaded_entity = entity_test_load($entity->id);
|
|
$this->assertEqual($loaded_entity->id, $entity->id, 'Loaded a single entity by id.');
|
|
|
|
// Test deleting an entity.
|
|
$entities = array_values(entity_test_load_multiple(FALSE, array('name' => 'test2')));
|
|
$entities[0]->delete();
|
|
$entities = array_values(entity_test_load_multiple(FALSE, array('name' => 'test2')));
|
|
$this->assertEqual($entities, array(), 'Entity deleted.');
|
|
|
|
// Test updating an entity.
|
|
$entities = array_values(entity_test_load_multiple(FALSE, array('name' => 'test')));
|
|
$entities[0]->name = 'test3';
|
|
$entities[0]->save();
|
|
$entity = entity_test_load($entities[0]->id);
|
|
$this->assertEqual($entity->name, 'test3', 'Entity updated.');
|
|
|
|
// Try deleting multiple test entities by deleting all.
|
|
$ids = array_keys(entity_test_load_multiple(FALSE));
|
|
entity_test_delete_multiple($ids);
|
|
|
|
$all = entity_test_load_multiple(FALSE);
|
|
$this->assertTrue(empty($all), 'Deleted all entities.');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Tests Entity API base functionality.
|
|
*/
|
|
class EntityAPIInfoTestCase extends DrupalWebTestCase {
|
|
|
|
public static function getInfo() {
|
|
return array(
|
|
'name' => 'Entity info',
|
|
'description' => 'Makes sure entity info is accurately cached.',
|
|
'group' => 'Entity API',
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Ensures entity info cache is updated after changes.
|
|
*/
|
|
function testEntityInfoChanges() {
|
|
module_enable(array('entity_cache_test'));
|
|
$entity_info = entity_get_info();
|
|
$this->assertTrue(isset($entity_info['entity_cache_test']), 'Test entity type found.');
|
|
|
|
// Change the label of the test entity type and make sure changes appear
|
|
// after flushing caches.
|
|
variable_set('entity_cache_test_label', 'New label.');
|
|
drupal_flush_all_caches();
|
|
$info = entity_get_info('entity_cache_test');
|
|
$this->assertEqual($info['label'], 'New label.', 'New label appears in entity info.');
|
|
|
|
// Disable the providing module and make sure the entity type is gone.
|
|
module_disable(array('entity_cache_test', 'entity_cache_test_dependency'));
|
|
$entity_info = entity_get_info();
|
|
$this->assertFalse(isset($entity_info['entity_cache_test']), 'Entity type of the providing module is gone.');
|
|
}
|
|
|
|
/**
|
|
* Tests entity info cache after enabling a module with a dependency on an entity providing module.
|
|
*
|
|
* @see entity_cache_test_watchdog()
|
|
*/
|
|
function testEntityInfoCacheWatchdog() {
|
|
module_enable(array('entity_cache_test'));
|
|
$info = variable_get('entity_cache_test');
|
|
$this->assertEqual($info['label'], 'Entity Cache Test', 'Entity info label is correct.');
|
|
$this->assertEqual($info['controller class'], 'DrupalDefaultEntityController', 'Entity controller class info is correct.');
|
|
}
|
|
}
|