You are here

UploadWidgetTest.php in Entity Browser 8

Same filename and directory in other branches
  1. 8.2 tests/src/FunctionalJavascript/UploadWidgetTest.php

File

tests/src/FunctionalJavascript/UploadWidgetTest.php
View source
<?php

namespace Drupal\Tests\entity_browser\FunctionalJavascript;

use Drupal\user\Entity\Role;

/**
 * Tests the Upload Widget.
 *
 * @group entity_browser
 */
class UploadWidgetTest extends EntityBrowserWebDriverTestBase {

  /**
   * {@inheritdoc}
   */
  public function setUp() {
    parent::setUp();

    // Grant permission to this user to use also the EB page we are testing.

    /** @var \Drupal\user\RoleInterface $role */
    $role = Role::load('authenticated');
    $this
      ->grantPermissions($role, [
      'access test_entity_browser_standalone_upload entity browser pages',
    ]);
  }

  /**
   * Tests Entity Browser upload widget.
   */
  public function testUploadWidget() {

    /** @var \Drupal\entity_browser\EntityBrowserInterface $browser */
    $browser = $this->container
      ->get('entity_type.manager')
      ->getStorage('entity_browser')
      ->load('test_entity_browser_standalone_upload');
    $page = $this
      ->getSession()
      ->getPage();

    // Make sure the test file is not present beforehand.
    $this
      ->assertFileNotExists('public://druplicon.png');

    // Go to the widget standalone page and test the upload.
    $this
      ->drupalGet($browser
      ->getDisplay()
      ->path());
    $page
      ->attachFileToField('edit-upload-upload', \Drupal::root() . '/core/misc/druplicon.png');
    $this
      ->waitForAjaxToFinish();
    $this
      ->assertSession()
      ->fieldExists('druplicon.png');
    $page
      ->pressButton('Select files');

    // Check if the file was correctly uploaded to the EB destination.
    $this
      ->assertFileExists('public://druplicon.png');

    // Now change upload location and submit label and check again.
    $widget = $browser
      ->getWidget('2dc1ab07-2f8f-42c9-aab7-7eef7f8b7d87');
    $config = $widget
      ->getConfiguration();
    $config['settings']['upload_location'] = 'public://some_location';
    $config['settings']['submit_text'] = 'Fancy submit';
    $widget
      ->setConfiguration($config);
    $browser
      ->save();
    $this
      ->drupalGet($browser
      ->getDisplay()
      ->path());
    $page
      ->attachFileToField('edit-upload-upload', \Drupal::root() . '/core/misc/druplicon.png');
    $this
      ->waitForAjaxToFinish();
    $this
      ->assertSession()
      ->fieldExists('druplicon.png');
    $page
      ->pressButton('Fancy submit');

    // Check if the file was correctly uploaded to the EB destination.
    $this
      ->assertFileExists('public://some_location/druplicon.png');
  }

}

Classes

Namesort descending Description
UploadWidgetTest Tests the Upload Widget.