Issue #1245332 by Dave Reid, rfay: Fixed Warning when all bundles removed from an entity.

8.0.x
Nathaniel 2012-02-27 12:45:36 +09:00
parent 71899b0b65
commit 97058d458f
2 changed files with 32 additions and 10 deletions

View File

@ -691,16 +691,16 @@ function field_info_field_by_ids() {
*/ */
function field_info_instances($entity_type = NULL, $bundle_name = NULL) { function field_info_instances($entity_type = NULL, $bundle_name = NULL) {
$info = _field_info_collate_fields(); $info = _field_info_collate_fields();
if (!isset($entity_type)) {
if (isset($entity_type) && isset($bundle_name)) {
return isset($info['instances'][$entity_type][$bundle_name]) ? $info['instances'][$entity_type][$bundle_name] : array();
}
elseif (isset($entity_type)) {
return isset($info['instances'][$entity_type]) ? $info['instances'][$entity_type] : array();
}
else {
return $info['instances']; return $info['instances'];
} }
if (!isset($bundle_name)) {
return $info['instances'][$entity_type];
}
if (isset($info['instances'][$entity_type][$bundle_name])) {
return $info['instances'][$entity_type][$bundle_name];
}
return array();
} }
/** /**

View File

@ -1079,11 +1079,14 @@ class FieldInfoTestCase extends FieldTestCase {
} }
// Verify that no unexpected instances exist. // Verify that no unexpected instances exist.
$core_fields = field_info_fields(); $instances = field_info_instances('test_entity');
$expected = array('test_bundle' => array());
$this->assertIdentical($instances, $expected, "field_info_instances('test_entity') returns " . var_export($expected, TRUE) . '.');
$instances = field_info_instances('test_entity', 'test_bundle'); $instances = field_info_instances('test_entity', 'test_bundle');
$this->assertTrue(empty($instances), t('With no instances, info bundles is empty.')); $this->assertIdentical($instances, array(), "field_info_instances('test_entity', 'test_bundle') returns an empty array.");
// Create a field, verify it shows up. // Create a field, verify it shows up.
$core_fields = field_info_fields();
$field = array( $field = array(
'field_name' => drupal_strtolower($this->randomName()), 'field_name' => drupal_strtolower($this->randomName()),
'type' => 'test_field', 'type' => 'test_field',
@ -1119,6 +1122,25 @@ class FieldInfoTestCase extends FieldTestCase {
$instances = field_info_instances('test_entity', $instance['bundle']); $instances = field_info_instances('test_entity', $instance['bundle']);
$this->assertEqual(count($instances), 1, t('One instance shows up in info when attached to a bundle.')); $this->assertEqual(count($instances), 1, t('One instance shows up in info when attached to a bundle.'));
$this->assertTrue($instance < $instances[$instance['field_name']], t('Instance appears in info correctly')); $this->assertTrue($instance < $instances[$instance['field_name']], t('Instance appears in info correctly'));
// Test a valid entity type but an invalid bundle.
$instances = field_info_instances('test_entity', 'invalid_bundle');
$this->assertIdentical($instances, array(), "field_info_instances('test_entity', 'invalid_bundle') returns an empty array.");
// Test invalid entity type and bundle.
$instances = field_info_instances('invalid_entity', $instance['bundle']);
$this->assertIdentical($instances, array(), "field_info_instances('invalid_entity', 'test_bundle') returns an empty array.");
// Test invalid entity type, no bundle provided.
$instances = field_info_instances('invalid_entity');
$this->assertIdentical($instances, array(), "field_info_instances('invalid_entity') returns an empty array.");
// Test with an entity type that has no bundles.
$instances = field_info_instances('user');
$expected = array('user' => array());
$this->assertIdentical($instances, $expected, "field_info_instances('user') returns " . var_export($expected, TRUE) . '.');
$instances = field_info_instances('user', 'user');
$this->assertIdentical($instances, array(), "field_info_instances('user', 'user') returns an empty array.");
} }
/** /**