You are here

public function UiCrudTest::testLabelUpdateWhenChangingPlugin in Feeds Tamper 8.2

Tests that the label gets updated when selecting an other plugin.

File

tests/src/FunctionalJavascript/UiCrudTest.php, line 104

Class

UiCrudTest
Tests adding/editing/removing tamper plugins using the UI.

Namespace

Drupal\Tests\feeds_tamper\FunctionalJavascript

Code

public function testLabelUpdateWhenChangingPlugin() {

  // Go to the tamper listing.
  $this
    ->drupalGet($this->url);

  // Click link for adding a tamper plugin to the source 'description'.
  $this
    ->getSession()
    ->getPage()
    ->find('css', '#edit-description-add-link')
    ->click();

  // Select plugin and wait for config form to show up.
  $page = $this
    ->getSession()
    ->getPage();
  $page
    ->selectFieldOption('tamper_id', 'required');
  $this
    ->assertSession()
    ->waitForElementVisible('css', '#plugin-config');

  // Assert that the label got set to 'Required'.
  $field = $page
    ->findField('plugin_configuration[label]');
  $this
    ->assertEquals('Required', $field
    ->getValue());

  // Now select an other plugin.
  $page = $this
    ->getSession()
    ->getPage();
  $page
    ->selectFieldOption('tamper_id', 'unique');

  // We use waitForText() here because '#plugin-config' is already visible.
  $this
    ->assertSession()
    ->waitForText('Makes the elements in a multivalued field unique.');

  // Assert that the label changed to 'Unique'.
  $field = $page
    ->findField('plugin_configuration[label]');
  $this
    ->assertEquals('Unique', $field
    ->getValue());

  // And save.
  $this
    ->submitForm([], 'Submit');

  // And assert that the tamper plugin was added.
  $this->feedType = $this
    ->reloadEntity($this->feedType);
  $plugin_collection = $this->feedTypeTamperManager
    ->getTamperMeta($this->feedType, TRUE)
    ->getTampers();
  $this
    ->assertCount(1, $plugin_collection);
  $tamper = $plugin_collection
    ->getIterator()
    ->current();
  $this
    ->assertEquals('unique', $tamper
    ->getPluginId());
  $this
    ->assertEquals('Unique', $tamper
    ->getSetting('label'));
  $this
    ->assertEquals('description', $tamper
    ->getSetting('source'));

  // Assert that no PHP errors were generated.
  $this
    ->assertNoPhpErrorsInLog();
}