You are here

public function BooleanFormatterSettingsTest::testBooleanFormatterSettings in Drupal 9

Same name in this branch
  1. 9 core/modules/field/tests/src/Functional/Boolean/BooleanFormatterSettingsTest.php \Drupal\Tests\field\Functional\Boolean\BooleanFormatterSettingsTest::testBooleanFormatterSettings()
  2. 9 core/modules/field/tests/src/FunctionalJavascript/Boolean/BooleanFormatterSettingsTest.php \Drupal\Tests\field\FunctionalJavascript\Boolean\BooleanFormatterSettingsTest::testBooleanFormatterSettings()
Same name and namespace in other branches
  1. 8 core/modules/field/tests/src/Functional/Boolean/BooleanFormatterSettingsTest.php \Drupal\Tests\field\Functional\Boolean\BooleanFormatterSettingsTest::testBooleanFormatterSettings()

Tests the formatter settings page for the Boolean formatter.

File

core/modules/field/tests/src/Functional/Boolean/BooleanFormatterSettingsTest.php, line 91

Class

BooleanFormatterSettingsTest
Tests the Boolean field formatter settings.

Namespace

Drupal\Tests\field\Functional\Boolean

Code

public function testBooleanFormatterSettings() {

  // List the options we expect to see on the settings form. Omit the one
  // with the Unicode check/x characters, which does not appear to work
  // well in BrowserTestBase.
  $options = [
    'Yes / No',
    'True / False',
    'On / Off',
    'Enabled / Disabled',
    '1 / 0',
    'Custom',
  ];

  // For several different values of the field settings, test that the
  // options, including default, are shown correctly.
  $settings = [
    [
      'Yes',
      'No',
    ],
    [
      'On',
      'Off',
    ],
    [
      'TRUE',
      'FALSE',
    ],
  ];
  $assert_session = $this
    ->assertSession();
  foreach ($settings as $values) {

    // Set up the field settings.
    $this
      ->drupalGet('admin/structure/types/manage/' . $this->bundle . '/fields/node.' . $this->bundle . '.' . $this->fieldName);
    $this
      ->submitForm([
      'settings[on_label]' => $values[0],
      'settings[off_label]' => $values[1],
    ], 'Save settings');

    // Open the Manage Display page and trigger the field settings form.
    $this
      ->drupalGet('admin/structure/types/manage/' . $this->bundle . '/display');
    $this
      ->submitForm([], $this->fieldName . '_settings_edit');

    // Test that the settings options are present in the correct format.
    foreach ($options as $string) {
      $assert_session
        ->pageTextContains($string);
    }
    $assert_session
      ->pageTextContains("Field settings ({$values[0]} / {$values[1]})");

    // Test that the settings summary are present in the correct format.
    $this
      ->drupalGet('admin/structure/types/manage/' . $this->bundle . '/display');
    $this
      ->assertSession()
      ->elementExists('xpath', "//div[contains(@class, 'field-plugin-summary')]");
    $this
      ->assertSession()
      ->elementTextEquals('xpath', "//div[contains(@class, 'field-plugin-summary')]", "Display: {$values[0]} / {$values[1]}");
  }
}