diff --git a/core/modules/field/src/Tests/Boolean/BooleanFormatterSettingsTest.php b/core/modules/field/src/Tests/Boolean/BooleanFormatterSettingsTest.php index c2a156b895..f165274b70 100644 --- a/core/modules/field/src/Tests/Boolean/BooleanFormatterSettingsTest.php +++ b/core/modules/field/src/Tests/Boolean/BooleanFormatterSettingsTest.php @@ -1,18 +1,17 @@ drupalCreateContentType(['name' => $type_name, 'type' => $type_name]); $this->bundle = $type->id(); - $admin_user = $this->drupalCreateUser(['access content', 'administer content types', 'administer node fields', 'administer node display', 'bypass node access', 'administer nodes']); + $admin_user = $this->drupalCreateUser([ + 'access content', + 'administer content types', + 'administer node fields', + 'administer node display', + 'bypass node access', + 'administer nodes', + ]); $this->drupalLogin($admin_user); $this->fieldName = mb_strtolower($this->randomMachineName(8)); @@ -89,10 +95,6 @@ public function testBooleanFormatterSettings() { 'Custom', ]; - // Define what the "default" option should look like, depending on the - // field settings. - $default = 'Field settings (@on / @off)'; - // For several different values of the field settings, test that the // options, including default, are shown correctly. $settings = [ @@ -101,28 +103,31 @@ public function testBooleanFormatterSettings() { ['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'); + ], t('Save settings')); // Open the Manage Display page and trigger the field settings form. $this->drupalGet('admin/structure/types/manage/' . $this->bundle . '/display'); - $this->drupalPostAjaxForm(NULL, [], $this->fieldName . '_settings_edit'); + $this->drupalPostForm(NULL, [], $this->fieldName . '_settings_edit'); // Test that the settings options are present in the correct format. foreach ($options as $string) { - $this->assertText($string); + $assert_session->pageTextContains($string); } - $this->assertText(new FormattableMarkup($default, ['@on' => $values[0], '@off' => $values[1]])); - } + $assert_session->pageTextContains(t('Field settings (@on_label / @off_label)', ['@on_label' => $values[0], '@off_label' => $values[1]])); - foreach ($settings as $values) { + // 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' => 'Display: TRUE / FALSE']); + $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->assertEqual(count($result), 1, "Boolean formatter settings summary exist."); } } diff --git a/core/modules/field/tests/src/FunctionalJavascript/Boolean/BooleanFormatterSettingsTest.php b/core/modules/field/tests/src/FunctionalJavascript/Boolean/BooleanFormatterSettingsTest.php new file mode 100644 index 0000000000..7837536e27 --- /dev/null +++ b/core/modules/field/tests/src/FunctionalJavascript/Boolean/BooleanFormatterSettingsTest.php @@ -0,0 +1,128 @@ +randomMachineName(8)) . '_test'; + $type = $this->drupalCreateContentType(['name' => $type_name, 'type' => $type_name]); + $this->bundle = $type->id(); + + $admin_user = $this->drupalCreateUser([ + 'access content', + 'administer content types', + 'administer node fields', + 'administer node display', + 'bypass node access', + 'administer nodes', + ]); + $this->drupalLogin($admin_user); + + $this->fieldName = mb_strtolower($this->randomMachineName(8)); + + $field_storage = FieldStorageConfig::create([ + 'field_name' => $this->fieldName, + 'entity_type' => 'node', + 'type' => 'boolean', + ]); + $field_storage->save(); + + $instance = FieldConfig::create([ + 'field_storage' => $field_storage, + 'bundle' => $this->bundle, + 'label' => $this->randomMachineName(), + ]); + $instance->save(); + + $display = entity_get_display('node', $this->bundle, 'default') + ->setComponent($this->fieldName, [ + 'type' => 'boolean', + 'settings' => [], + ]); + $display->save(); + } + + /** + * Tests the formatter settings page for the Boolean formatter. + */ + 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], + ], t('Save settings')); + + // Open the Manage Display page and trigger the field settings form. + $this->drupalGet('admin/structure/types/manage/' . $this->bundle . '/display'); + $this->getSession()->getPage()->pressButton($this->fieldName . '_settings_edit'); + $assert_session->waitForElement('css', '.ajax-new-content'); + + // 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]])); + } + } + +}