You are here

public function MediaTypeCreationTest::testMediaTypeCreationReuseSourceField in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/media/tests/src/FunctionalJavascript/MediaTypeCreationTest.php \Drupal\Tests\media\FunctionalJavascript\MediaTypeCreationTest::testMediaTypeCreationReuseSourceField()

Test creation of media type, reusing an existing source field.

File

core/modules/media/tests/src/FunctionalJavascript/MediaTypeCreationTest.php, line 139

Class

MediaTypeCreationTest
Tests the media type creation.

Namespace

Drupal\Tests\media\FunctionalJavascript

Code

public function testMediaTypeCreationReuseSourceField() {
  $session = $this
    ->getSession();
  $page = $session
    ->getPage();
  $assert_session = $this
    ->assertSession();

  // Create a new media type, which should create a new field we can reuse.
  $this
    ->drupalGet('/admin/structure/media/add');

  // Choose the source plugin before setting the label and machine name.
  $page
    ->selectFieldOption('Media source', 'test');
  $result = $assert_session
    ->waitForElementVisible('css', 'fieldset[data-drupal-selector="edit-source-configuration"]');
  $this
    ->assertNotEmpty($result);
  $page
    ->fillField('label', 'Pastafazoul');
  $session
    ->wait(5000, "jQuery('.machine-name-value').text() === 'pastafazoul'");
  $page
    ->pressButton('Save');
  $label = 'Type reusing Default Field';
  $mediaTypeMachineName = str_replace(' ', '_', strtolower($label));
  $this
    ->drupalGet('admin/structure/media/add');

  // Select the media source used by our media type. Do this before setting
  // the label and machine name.
  $assert_session
    ->fieldExists('Media source');
  $assert_session
    ->optionExists('Media source', 'test');
  $page
    ->selectFieldOption('Media source', 'test');
  $result = $assert_session
    ->waitForElementVisible('css', 'fieldset[data-drupal-selector="edit-source-configuration"]');
  $this
    ->assertNotEmpty($result);

  // Select the existing field for re-use.
  $page
    ->selectFieldOption('source_configuration[source_field]', 'field_media_test');

  // Fill in a label to the media type.
  $page
    ->fillField('label', $label);

  // Wait for machine name generation. Default: waitUntilVisible(), does not
  // work properly.
  $session
    ->wait(5000, "jQuery('.machine-name-value').text() === '{$mediaTypeMachineName}'");
  $page
    ->pressButton('Save');

  // Check that no new fields were created.
  $this
    ->drupalGet("admin/structure/media/manage/{$mediaTypeMachineName}/fields");

  // The reused field should be present...
  $assert_session
    ->pageTextContains('field_media_test');

  // ...not a new, unique one.
  $assert_session
    ->pageTextNotContains('field_media_test_1');
}