You are here

public function FieldGroupUiTest::testCreateAndEdit in Field Group 8.3

Same name and namespace in other branches
  1. 8 tests/src/FunctionalJavascript/FieldGroupUiTest.php \Drupal\Tests\field_group\FunctionalJavascript\FieldGroupUiTest::testCreateAndEdit()

Test creation and editing trough the UI.

File

tests/src/FunctionalJavascript/FieldGroupUiTest.php, line 68

Class

FieldGroupUiTest
Test field_group user interface.

Namespace

Drupal\Tests\field_group\FunctionalJavascript

Code

public function testCreateAndEdit() {
  foreach ([
    'test_1',
    'test_2',
  ] as $name) {
    $this
      ->drupalGet('admin/structure/types/manage/' . $this->nodeType . '/form-display/add-group');
    $page = $this
      ->getSession()
      ->getPage();

    // Type the label to activate the machine name field and the edit button.
    $page
      ->fillField('group_formatter', 'details');
    $page
      ->fillField('label', 'Test 1');

    // Wait for the machine name widget to be activated.
    $this
      ->assertSession()
      ->waitForElementVisible('css', 'button[type=button].link:contains(Edit)');

    // Activate the machine name text field.
    $page
      ->pressButton('Edit');
    $page
      ->fillField('Machine-readable name', $name);
    $page
      ->pressButton('Save and continue');
    $page
      ->pressButton('Create group');
  }

  // Update title in group 1.
  $page = $this
    ->getSession()
    ->getPage();
  $page
    ->pressButton('group_test_1_group_settings_edit');
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $page
    ->fillField('fields[group_test_1][settings_edit_form][settings][label]', 'Test 1 - Update');
  $page
    ->pressButton('Update');
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();

  // Update title in group 2.
  $page
    ->pressButton('group_test_2_group_settings_edit');
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $page
    ->fillField('fields[group_test_2][settings_edit_form][settings][label]', 'Test 2 - Update');
  $page
    ->pressButton('Update');
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();

  // Open group 1 again.
  $page
    ->pressButton('group_test_1_group_settings_edit');
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $this
    ->assertSession()
    ->fieldValueEquals('fields[group_test_1][settings_edit_form][settings][label]', 'Test 1 - Update');
  $page
    ->pressButton('Cancel');
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $page
    ->pressButton('Save');

  /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $display */
  $display = EntityFormDisplay::load("node.{$this->nodeType}.default");
  $this
    ->assertSame('Test 1 - Update', $display
    ->getThirdPartySetting('field_group', 'group_test_1')['label']);
  $this
    ->assertSame('Test 2 - Update', $display
    ->getThirdPartySetting('field_group', 'group_test_2')['label']);
}