You are here

public function BooleanFormatterSettingsTest::testBooleanFormatterSettings in Drupal 8

Same name in this branch
  1. 8 core/modules/field/tests/src/Functional/Boolean/BooleanFormatterSettingsTest.php \Drupal\Tests\field\Functional\Boolean\BooleanFormatterSettingsTest::testBooleanFormatterSettings()
  2. 8 core/modules/field/tests/src/FunctionalJavascript/Boolean/BooleanFormatterSettingsTest.php \Drupal\Tests\field\FunctionalJavascript\Boolean\BooleanFormatterSettingsTest::testBooleanFormatterSettings()
Same name and namespace in other branches
  1. 9 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 WebTestBase.
  $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
      ->drupalPostForm(NULL, [
      '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
      ->drupalPostForm(NULL, [], $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(t('Field settings (@on_label / @off_label)', [
      '@on_label' => $values[0],
      '@off_label' => $values[1],
    ]));

    // Test that the settings summary are present in the correct format.
    $this
      ->drupalGet('admin/structure/types/manage/' . $this->bundle . '/display');
    $result = $this
      ->xpath('//div[contains(@class, :class) and contains(text(), :text)]', [
      ':class' => 'field-plugin-summary',
      ':text' => (string) t('Display: @true_label / @false_label', [
        '@true_label' => $values[0],
        '@false_label' => $values[1],
      ]),
    ]);
    $this
      ->assertCount(1, $result, "Boolean formatter settings summary exist.");
  }
}