You are here

public function QuickEditFileTest::testRemove in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditFileTest.php \Drupal\Tests\quickedit\FunctionalJavascript\QuickEditFileTest::testRemove()

Tests if a file can be in-place removed with Quick Edit.

File

core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditFileTest.php, line 58

Class

QuickEditFileTest
@group quickedit

Namespace

Drupal\Tests\quickedit\FunctionalJavascript

Code

public function testRemove() {
  $assert_session = $this
    ->assertSession();

  // Create test file.
  $this
    ->generateFile('test', 64, 10, 'text');
  $file = File::create([
    'uri' => 'public://test.txt',
    'filename' => 'test.txt',
  ]);
  $file
    ->setPermanent();
  $file
    ->save();

  // Create test node.
  $node = $this
    ->drupalCreateNode([
    'type' => 'article',
    'title' => t('My Test Node'),
    'field_file' => [
      'target_id' => $file
        ->id(),
    ],
  ]);
  $this
    ->drupalGet($node
    ->toUrl()
    ->toString());

  // Start Quick Edit.
  $this
    ->awaitQuickEditForEntity('node', 1);
  $this
    ->startQuickEditViaToolbar('node', 1, 0);

  // Click the file field.
  $assert_session
    ->waitForElementVisible('css', '[data-quickedit-field-id="node/1/field_file/en/full"]');
  $this
    ->click('[data-quickedit-field-id="node/1/field_file/en/full"]');
  $assert_session
    ->waitForElement('css', '.quickedit-toolbar-field div[id*="file"]');

  // Remove the file.
  $remove = $assert_session
    ->waitForButton('Remove');
  $remove
    ->click();

  // Wait for remove.
  $assert_session
    ->waitForElement('css', 'input[name="files[field_file_0]"]');
  $this
    ->saveQuickEdit();

  // Wait for save.
  $this
    ->assertJsCondition("Drupal.quickedit.collections.entities.get('node/1[0]').get('state') === 'closed'");

  // Assert file is removed from node.
  $assert_session
    ->pageTextNotContains('test.txt');
  $node = Node::load($node
    ->id());
  $this
    ->assertEmpty($node
    ->get('field_file')
    ->getValue());
}