Mercurial > hg > isophonics-drupal-site
comparison core/modules/field/src/Tests/EntityReference/EntityReferenceFileUploadTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 7a779792577d |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\field\Tests\EntityReference; | |
4 | |
5 use Drupal\Core\Field\FieldStorageDefinitionInterface; | |
6 use Drupal\field\Entity\FieldConfig; | |
7 use Drupal\simpletest\WebTestBase; | |
8 use Drupal\field\Entity\FieldStorageConfig; | |
9 | |
10 /** | |
11 * Tests an autocomplete widget with file upload. | |
12 * | |
13 * @group entity_reference | |
14 */ | |
15 class EntityReferenceFileUploadTest extends WebTestBase { | |
16 | |
17 public static $modules = ['entity_reference', 'node', 'file']; | |
18 | |
19 /** | |
20 * The name of a content type that will reference $referencedType. | |
21 * | |
22 * @var string | |
23 */ | |
24 protected $referencingType; | |
25 | |
26 /** | |
27 * The name of a content type that will be referenced by $referencingType. | |
28 * | |
29 * @var string | |
30 */ | |
31 protected $referencedType; | |
32 | |
33 /** | |
34 * Node id. | |
35 * | |
36 * @var int | |
37 */ | |
38 protected $nodeId; | |
39 | |
40 protected function setUp() { | |
41 parent::setUp(); | |
42 | |
43 // Create "referencing" and "referenced" node types. | |
44 $referencing = $this->drupalCreateContentType(); | |
45 $this->referencingType = $referencing->id(); | |
46 | |
47 $referenced = $this->drupalCreateContentType(); | |
48 $this->referencedType = $referenced->id(); | |
49 $this->nodeId = $this->drupalCreateNode(['type' => $referenced->id()])->id(); | |
50 | |
51 FieldStorageConfig::create([ | |
52 'field_name' => 'test_field', | |
53 'entity_type' => 'node', | |
54 'translatable' => FALSE, | |
55 'entity_types' => [], | |
56 'settings' => [ | |
57 'target_type' => 'node', | |
58 ], | |
59 'type' => 'entity_reference', | |
60 'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED, | |
61 ])->save(); | |
62 | |
63 FieldConfig::create([ | |
64 'label' => 'Entity reference field', | |
65 'field_name' => 'test_field', | |
66 'entity_type' => 'node', | |
67 'required' => TRUE, | |
68 'bundle' => $referencing->id(), | |
69 'settings' => [ | |
70 'handler' => 'default', | |
71 'handler_settings' => [ | |
72 // Reference a single vocabulary. | |
73 'target_bundles' => [ | |
74 $referenced->id(), | |
75 ], | |
76 ], | |
77 ], | |
78 ])->save(); | |
79 | |
80 | |
81 // Create a file field. | |
82 $file_field_name = 'file_field'; | |
83 $field_storage = FieldStorageConfig::create([ | |
84 'field_name' => $file_field_name, | |
85 'entity_type' => 'node', | |
86 'type' => 'file' | |
87 ]); | |
88 $field_storage->save(); | |
89 FieldConfig::create([ | |
90 'entity_type' => 'node', | |
91 'field_storage' => $field_storage, | |
92 'bundle' => $referencing->id(), | |
93 'label' => $this->randomMachineName() . '_label', | |
94 ])->save(); | |
95 | |
96 entity_get_display('node', $referencing->id(), 'default') | |
97 ->setComponent('test_field') | |
98 ->setComponent($file_field_name) | |
99 ->save(); | |
100 entity_get_form_display('node', $referencing->id(), 'default') | |
101 ->setComponent('test_field', [ | |
102 'type' => 'entity_reference_autocomplete', | |
103 ]) | |
104 ->setComponent($file_field_name, [ | |
105 'type' => 'file_generic', | |
106 ]) | |
107 ->save(); | |
108 } | |
109 | |
110 /** | |
111 * Tests that the autocomplete input element does not cause ajax fatal. | |
112 */ | |
113 public function testFileUpload() { | |
114 $user1 = $this->drupalCreateUser(['access content', "create $this->referencingType content"]); | |
115 $this->drupalLogin($user1); | |
116 | |
117 $test_file = current($this->drupalGetTestFiles('text')); | |
118 $edit['files[file_field_0]'] = drupal_realpath($test_file->uri); | |
119 $this->drupalPostForm('node/add/' . $this->referencingType, $edit, 'Upload'); | |
120 $this->assertResponse(200); | |
121 $edit = [ | |
122 'title[0][value]' => $this->randomMachineName(), | |
123 'test_field[0][target_id]' => $this->nodeId, | |
124 ]; | |
125 $this->drupalPostForm(NULL, $edit, 'Save'); | |
126 $this->assertResponse(200); | |
127 } | |
128 | |
129 } |