Chris@17: drupalCreateContentType(['type' => 'article', 'name' => 'Article']); Chris@17: Chris@17: // Add file field to Article node type. Chris@17: $this->createFileField('field_file', 'node', 'article', ['file_extensions' => 'txt']); Chris@17: Chris@17: // Log in as a content author who can use Quick Edit and edit Articles. Chris@17: $user = $this->drupalCreateUser([ Chris@17: 'access contextual links', Chris@17: 'access toolbar', Chris@17: 'access in-place editing', Chris@17: 'access content', Chris@17: 'create article content', Chris@17: 'edit any article content', Chris@17: ]); Chris@17: $this->drupalLogin($user); Chris@17: } Chris@17: Chris@17: /** Chris@17: * Tests if a file can be in-place removed with Quick Edit. Chris@17: */ Chris@17: public function testRemove() { Chris@17: $assert_session = $this->assertSession(); Chris@17: Chris@17: // Create test file. Chris@17: $this->generateFile('test', 64, 10, 'text'); Chris@17: $file = File::create([ Chris@17: 'uri' => 'public://test.txt', Chris@17: 'filename' => 'test.txt', Chris@17: ]); Chris@17: $file->setPermanent(); Chris@17: $file->save(); Chris@17: Chris@17: // Create test node. Chris@17: $node = $this->drupalCreateNode([ Chris@17: 'type' => 'article', Chris@17: 'title' => t('My Test Node'), Chris@17: 'field_file' => [ Chris@17: 'target_id' => $file->id(), Chris@17: ], Chris@17: ]); Chris@17: Chris@17: $this->drupalGet($node->toUrl()->toString()); Chris@17: Chris@17: // Start Quick Edit. Chris@17: $this->awaitQuickEditForEntity('node', 1); Chris@17: $this->startQuickEditViaToolbar('node', 1, 0); Chris@17: Chris@17: // Click the file field. Chris@17: $assert_session->waitForElementVisible('css', '[data-quickedit-field-id="node/1/field_file/en/full"]'); Chris@17: $this->click('[data-quickedit-field-id="node/1/field_file/en/full"]'); Chris@17: $assert_session->waitForElement('css', '.quickedit-toolbar-field div[id*="file"]'); Chris@17: Chris@17: // Remove the file. Chris@17: $remove = $assert_session->waitForButton('Remove'); Chris@17: $remove->click(); Chris@17: // Wait for remove. Chris@17: $assert_session->waitForElement('css', 'input[name="files[field_file_0]"]'); Chris@17: $this->saveQuickEdit(); Chris@17: // Wait for save. Chris@17: $this->assertJsCondition("Drupal.quickedit.collections.entities.get('node/1[0]').get('state') === 'closed'"); Chris@17: Chris@17: // Assert file is removed from node. Chris@17: $assert_session->pageTextNotContains('test.txt'); Chris@17: $node = Node::load($node->id()); Chris@17: $this->assertEmpty($node->get('field_file')->getValue()); Chris@17: } Chris@17: Chris@17: }