Mercurial > hg > isophonics-drupal-site
view core/modules/field/src/Tests/EntityReference/EntityReferenceFileUploadTest.php @ 5:c69a71b4f40f
Add slideshow module
author | Chris Cannam |
---|---|
date | Thu, 07 Dec 2017 14:46:23 +0000 |
parents | 4c8ae668cc8c |
children | 7a779792577d |
line wrap: on
line source
<?php namespace Drupal\field\Tests\EntityReference; use Drupal\Core\Field\FieldStorageDefinitionInterface; use Drupal\field\Entity\FieldConfig; use Drupal\simpletest\WebTestBase; use Drupal\field\Entity\FieldStorageConfig; /** * Tests an autocomplete widget with file upload. * * @group entity_reference */ class EntityReferenceFileUploadTest extends WebTestBase { public static $modules = ['entity_reference', 'node', 'file']; /** * The name of a content type that will reference $referencedType. * * @var string */ protected $referencingType; /** * The name of a content type that will be referenced by $referencingType. * * @var string */ protected $referencedType; /** * Node id. * * @var int */ protected $nodeId; protected function setUp() { parent::setUp(); // Create "referencing" and "referenced" node types. $referencing = $this->drupalCreateContentType(); $this->referencingType = $referencing->id(); $referenced = $this->drupalCreateContentType(); $this->referencedType = $referenced->id(); $this->nodeId = $this->drupalCreateNode(['type' => $referenced->id()])->id(); FieldStorageConfig::create([ 'field_name' => 'test_field', 'entity_type' => 'node', 'translatable' => FALSE, 'entity_types' => [], 'settings' => [ 'target_type' => 'node', ], 'type' => 'entity_reference', 'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED, ])->save(); FieldConfig::create([ 'label' => 'Entity reference field', 'field_name' => 'test_field', 'entity_type' => 'node', 'required' => TRUE, 'bundle' => $referencing->id(), 'settings' => [ 'handler' => 'default', 'handler_settings' => [ // Reference a single vocabulary. 'target_bundles' => [ $referenced->id(), ], ], ], ])->save(); // Create a file field. $file_field_name = 'file_field'; $field_storage = FieldStorageConfig::create([ 'field_name' => $file_field_name, 'entity_type' => 'node', 'type' => 'file' ]); $field_storage->save(); FieldConfig::create([ 'entity_type' => 'node', 'field_storage' => $field_storage, 'bundle' => $referencing->id(), 'label' => $this->randomMachineName() . '_label', ])->save(); entity_get_display('node', $referencing->id(), 'default') ->setComponent('test_field') ->setComponent($file_field_name) ->save(); entity_get_form_display('node', $referencing->id(), 'default') ->setComponent('test_field', [ 'type' => 'entity_reference_autocomplete', ]) ->setComponent($file_field_name, [ 'type' => 'file_generic', ]) ->save(); } /** * Tests that the autocomplete input element does not cause ajax fatal. */ public function testFileUpload() { $user1 = $this->drupalCreateUser(['access content', "create $this->referencingType content"]); $this->drupalLogin($user1); $test_file = current($this->drupalGetTestFiles('text')); $edit['files[file_field_0]'] = drupal_realpath($test_file->uri); $this->drupalPostForm('node/add/' . $this->referencingType, $edit, 'Upload'); $this->assertResponse(200); $edit = [ 'title[0][value]' => $this->randomMachineName(), 'test_field[0][target_id]' => $this->nodeId, ]; $this->drupalPostForm(NULL, $edit, 'Save'); $this->assertResponse(200); } }