EntityBundleFieldTest.php in Zircon Profile 8.0
File
core/modules/system/src/Tests/Entity/EntityBundleFieldTest.php
View source
<?php
namespace Drupal\system\Tests\Entity;
class EntityBundleFieldTest extends EntityUnitTestBase {
public static $modules = array(
'entity_schema_test',
);
protected $moduleHandler;
protected $database;
protected function setUp() {
parent::setUp();
$this
->installSchema('user', array(
'users_data',
));
$this
->installSchema('system', array(
'router',
));
$this->moduleHandler = $this->container
->get('module_handler');
$this->database = $this->container
->get('database');
}
public function testCustomBundleFieldUsage() {
entity_test_create_bundle('custom');
$storage = $this->entityManager
->getStorage('entity_test');
$entity = $storage
->create([
'type' => 'entity_test',
]);
$this
->assertFalse($entity
->hasField('custom_bundle_field'));
$entity = $storage
->create([
'type' => 'custom',
]);
$this
->assertTrue($entity
->hasField('custom_bundle_field'));
$field_map = \Drupal::entityManager()
->getFieldMap();
$this
->assertEqual($field_map['entity_test']['custom_bundle_field'], [
'type' => 'string',
'bundles' => [
'custom' => 'custom',
],
]);
$entity->custom_bundle_field->value = 'swanky';
$entity
->save();
$storage
->resetCache();
$entity = $storage
->load($entity
->id());
$this
->assertEqual($entity->custom_bundle_field->value, 'swanky', 'Entity was saved correctly');
$entity->custom_bundle_field->value = 'cozy';
$entity
->save();
$storage
->resetCache();
$entity = $storage
->load($entity
->id());
$this
->assertEqual($entity->custom_bundle_field->value, 'cozy', 'Entity was updated correctly.');
$entity
->delete();
$table_mapping = $storage
->getTableMapping();
$table = $table_mapping
->getDedicatedDataTableName($entity
->getFieldDefinition('custom_bundle_field'));
$result = $this->database
->select($table, 'f')
->fields('f')
->condition('f.entity_id', $entity
->id())
->execute();
$this
->assertFalse($result
->fetchAssoc(), 'Field data has been deleted');
$entity = $storage
->create([
'type' => 'custom',
'custom_bundle_field' => 'new',
]);
$entity
->save();
entity_test_delete_bundle('custom');
$table = $table_mapping
->getDedicatedDataTableName($entity
->getFieldDefinition('custom_bundle_field'));
$result = $this->database
->select($table, 'f')
->condition('f.entity_id', $entity
->id())
->condition('deleted', 1)
->countQuery()
->execute();
$this
->assertEqual(1, $result
->fetchField(), 'Field data has been deleted');
$field_map = \Drupal::entityManager()
->getFieldMap();
$this
->assertFalse(isset($field_map['entity_test']['custom_bundle_field']));
}
}