3 namespace Drupal\Tests\quickedit\FunctionalJavascript;
5 use Drupal\file\Entity\File;
6 use Drupal\node\Entity\Node;
7 use Drupal\Tests\file\Functional\FileFieldCreationTrait;
8 use Drupal\Tests\TestFileCreationTrait;
13 class QuickEditFileTest extends QuickEditJavascriptTestBase {
15 use FileFieldCreationTrait;
16 use TestFileCreationTrait;
21 public static $modules = [
29 protected function setUp() {
32 // Create the Article node type.
33 $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']);
35 // Add file field to Article node type.
36 $this->createFileField('field_file', 'node', 'article', ['file_extensions' => 'txt']);
38 // Log in as a content author who can use Quick Edit and edit Articles.
39 $user = $this->drupalCreateUser([
40 'access contextual links',
42 'access in-place editing',
44 'create article content',
45 'edit any article content',
47 $this->drupalLogin($user);
51 * Tests if a file can be in-place removed with Quick Edit.
53 public function testRemove() {
54 $assert_session = $this->assertSession();
57 $this->generateFile('test', 64, 10, 'text');
58 $file = File::create([
59 'uri' => 'public://test.txt',
60 'filename' => 'test.txt',
62 $file->setPermanent();
66 $node = $this->drupalCreateNode([
68 'title' => t('My Test Node'),
70 'target_id' => $file->id(),
74 $this->drupalGet($node->toUrl()->toString());
77 $this->awaitQuickEditForEntity('node', 1);
78 $this->startQuickEditViaToolbar('node', 1, 0);
80 // Click the file field.
81 $assert_session->waitForElementVisible('css', '[data-quickedit-field-id="node/1/field_file/en/full"]');
82 $this->click('[data-quickedit-field-id="node/1/field_file/en/full"]');
83 $assert_session->waitForElement('css', '.quickedit-toolbar-field div[id*="file"]');
86 $remove = $assert_session->waitForButton('Remove');
89 $assert_session->waitForElement('css', 'input[name="files[field_file_0]"]');
90 $this->saveQuickEdit();
92 $this->assertJsCondition("Drupal.quickedit.collections.entities.get('node/1[0]').get('state') === 'closed'");
94 // Assert file is removed from node.
95 $assert_session->pageTextNotContains('test.txt');
96 $node = Node::load($node->id());
97 $this->assertEmpty($node->get('field_file')->getValue());