Issue #1400256 by mahaprasad, David_Rothstein, amcgowanca: Tests for field info cache.
parent
13b929b667
commit
02f199f62b
|
@ -297,7 +297,6 @@ class FieldInfoTest extends FieldUnitTestBase {
|
|||
$this->assertEqual($map, $expected);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test that the field_info settings convenience functions work.
|
||||
*/
|
||||
|
@ -323,6 +322,31 @@ class FieldInfoTest extends FieldUnitTestBase {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the field info cache can be built correctly.
|
||||
*/
|
||||
function testFieldInfoCache() {
|
||||
// Create a test field and ensure it's in the array returned by
|
||||
// field_info_fields().
|
||||
$field_name = drupal_strtolower($this->randomName());
|
||||
$field = array(
|
||||
'field_name' => $field_name,
|
||||
'type' => 'test_field',
|
||||
);
|
||||
field_create_field($field);
|
||||
$fields = field_info_fields();
|
||||
$this->assertTrue(isset($fields[$field_name]), 'The test field is initially found in the array returned by field_info_fields().');
|
||||
|
||||
// Now rebuild the field info cache, and set a variable which will cause
|
||||
// the cache to be cleared while it's being rebuilt; see
|
||||
// field_test_entity_info(). Ensure the test field is still in the returned
|
||||
// array.
|
||||
field_info_cache_clear();
|
||||
state()->set('field_test.clear_info_cache_in_hook_entity_info', TRUE);
|
||||
$fields = field_info_fields();
|
||||
$this->assertTrue(isset($fields[$field_name]), 'The test field is found in the array returned by field_info_fields() even if its cache is cleared while being rebuilt.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that the widget definition functions work.
|
||||
*/
|
||||
|
|
|
@ -8,6 +8,17 @@
|
|||
use Drupal\Core\Entity\EntityInterface;
|
||||
use Drupal\field_test\Plugin\Core\Entity\TestEntity;
|
||||
|
||||
/**
|
||||
* Implements hook_entity_info().
|
||||
*/
|
||||
function field_test_entity_info() {
|
||||
// If requested, clear the field cache while this is being called. See
|
||||
// Drupal\field\Tests\FieldInfoTest::testFieldInfoCache().
|
||||
if (state()->get('field_test.clear_info_cache_in_hook_entity_info')) {
|
||||
field_info_cache_clear();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_entity_info_alter().
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue