diff --git a/core/includes/common.inc b/core/includes/common.inc index 2f1474056adb9ffff365dc491238c838c3f13192..ed57616f10d1e15089a40117e35bdf090566556e 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -7444,6 +7444,8 @@ function drupal_flush_all_caches() { system_rebuild_theme_data(); drupal_theme_rebuild(); + entity_info_cache_clear(); + // @todo D8: Split cache flushing from rebuilding. // @see http://drupal.org/node/996236 if (module_exists('node')) { diff --git a/core/modules/entity/tests/entity.test b/core/modules/entity/tests/entity.test index e7a4b349c170ec65435f089fed0641aff96c2788..35b6ab1c26226e4ed054e7c6a77655ddb21aaeb9 100644 --- a/core/modules/entity/tests/entity.test +++ b/core/modules/entity/tests/entity.test @@ -66,3 +66,50 @@ class EntityAPITestCase extends DrupalWebTestCase { $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.'); + } +} diff --git a/core/modules/entity/tests/entity_cache_test_dependency.module b/core/modules/entity/tests/entity_cache_test_dependency.module index 73a11495f58f95d1248cbdad2f57661f03ee4055..2d4b3be4d6f83489917c7302b2b0f8b99d2109fa 100644 --- a/core/modules/entity/tests/entity_cache_test_dependency.module +++ b/core/modules/entity/tests/entity_cache_test_dependency.module @@ -11,7 +11,7 @@ function entity_cache_test_dependency_entity_info() { return array( 'entity_cache_test' => array( - 'label' => 'Entity Cache Test', + 'label' => variable_get('entity_cache_test_label', 'Entity Cache Test'), ), ); } diff --git a/core/modules/system/system.test b/core/modules/system/system.test index 36b7f0cb5e0761736fd581ba44043b49804d74b4..7e35657e3cda0704578e82dadc21a2e6a671bb41 100644 --- a/core/modules/system/system.test +++ b/core/modules/system/system.test @@ -271,19 +271,6 @@ class EnableDisableTestCase extends ModuleTestCase { $this->assertText(t('The configuration options have been saved.'), t('Modules status has been updated.')); } - /** - * Tests entity cache after enabling a module with a dependency on an enitity - * providing module. - * - * @see entity_cache_test_watchdog() - */ - function testEntityCache() { - 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.'); - } - /** * Disables and uninstalls a module and asserts that it was done correctly. *