improvements-2.x-dev/modules/improvements_admin/tests/src/Functional/ImprovementsAdminTest.php
modules/improvements_admin/tests/src/Functional/ImprovementsAdminTest.php
<?php
namespace Drupal\Tests\improvements_admin\Functional;
use Drupal\Tests\block\Traits\BlockCreationTrait;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\improvements\Traits\ImprovementsTestTrait;
class ImprovementsAdminTest extends BrowserTestBase {
use BlockCreationTrait;
use ImprovementsTestTrait;
/**
* {@inheritDoc}
*/
protected $defaultTheme = 'stark';
/**
* {@inheritDoc}
*/
protected static $modules = ['improvements_admin'];
/**
* {@inheritDoc}
*/
protected function setUp(): void {
parent::setUp();
}
/**
* Test modules list filter autofocus.
*
* @covers ::improvements_admin_form_system_modules_alter()
*/
public function testModulesListAutofocus(): void {
$this->drupalLoginAsRoot();
$this->drupalGet('/admin/modules');
$this->dontSeeErrorMessage();
$this->assertSession()->elementExists('css', '#edit-text[autofocus]');
}
/**
* Test link for edit block content.
*
* @covers ::improvements_admin_form_block_admin_display_form_alter()
*/
public function testContentBlockEditLink(): void {
$this->installModule('block', 'block_content');
$this->createBlockContentType();
$block_content_entity = $this->createBlockContent();
$block_config_entity = $this->placeBlockContent($block_content_entity, ['id' => 'test_edit_content_link']);
$this->drupalLoginAsRoot();
$this->drupalGet('/admin/structure/block');
$this->dontSeeErrorMessage();
$this->assertSession()->elementExists('css', 'tr[data-drupal-selector="edit-blocks-test-edit-content-link"] .dropbutton a[href="/admin/content/block/' . $block_content_entity->id() . '"]');
}
/**
* Test content block form autofocus.
*
* @covers ::improvements_admin_form_block_content_form_alter()
*/
public function testBlockContentAutofocus(): void {
$this->installModule('block', 'block_content');
$this->createBlockContentType();
$this->drupalLoginAsRoot();
$this->drupalGet('/block/add/basic');
$this->dontSeeErrorMessage();
$this->assertSession()->elementAttributeExists('css', '#edit-info-0-value', 'autofocus');
}
/**
* Test textarea widget improvements.
*/
public function testFieldWidgetTextareaImprovements(): void {
$this->installModule('node', 'text', 'filter', 'field', 'field_ui');
$this->createFilterFormat(['format' => 'full_html', 'name' => 'Full HTML']);
$this->createFilterFormat(['format' => 'raw_html', 'name' => 'Raw HTML']);
$this->createContentType(['type' => 'page', 'name' => 'Page']);
$web_assert = $this->assertSession();
$this->createField(
entity_type: 'node',
entity_bundle: 'page',
field_name: 'field_text',
field_type: 'text_long',
field_label: 'Test text field',
widget_type: 'text_textarea',
);
$this->drupalLoginAsRoot();
$this->drupalGet('/node/add/page');
$this->dontSeeErrorMessage();
$web_assert->elementExists('css', 'select[name="field_text[0][format]"]');
$this->drupalGet('/admin/structure/types/manage/page/form-display');
$this->dontSeeErrorMessage();
$this->openEntityDisplayComponentSettings('field_text');
$web_assert->fieldExists('fields[field_text][settings_edit_form][third_party_settings][improvements_admin][max_length]');
$web_assert->fieldExists('fields[field_text][settings_edit_form][third_party_settings][improvements_admin][dynamic_height]');
$web_assert->fieldExists('fields[field_text][settings_edit_form][third_party_settings][improvements_admin][disable_editor]');
$web_assert->fieldExists('fields[field_text][settings_edit_form][third_party_settings][improvements_admin][hide_format_select]');
$this->submitForm([
'fields[field_text][settings_edit_form][third_party_settings][improvements_admin][max_length]' => 10,
'fields[field_text][settings_edit_form][third_party_settings][improvements_admin][dynamic_height]' => 1,
'fields[field_text][settings_edit_form][third_party_settings][improvements_admin][disable_editor]' => 1,
'fields[field_text][settings_edit_form][third_party_settings][improvements_admin][hide_format_select]' => 1,
], 'Save');
$this->dontSeeErrorMessage();
$this->openEntityDisplayComponentSettings('field_text');
$web_assert->fieldValueEquals('fields[field_text][settings_edit_form][third_party_settings][improvements_admin][max_length]', 10);
$web_assert->checkboxChecked('fields[field_text][settings_edit_form][third_party_settings][improvements_admin][dynamic_height]');
$web_assert->checkboxChecked('fields[field_text][settings_edit_form][third_party_settings][improvements_admin][disable_editor]');
$web_assert->checkboxChecked('fields[field_text][settings_edit_form][third_party_settings][improvements_admin][hide_format_select]');
$this->drupalGet('/node/add/page');
$this->dontSeeErrorMessage();
$web_assert = $this->assertSession();
$web_assert->elementAttributeContains('css', '#edit-field-text-0-value', 'maxlength', '10');
$web_assert->elementExists('css', '#edit-field-text-0-format.visually-hidden');
// @TODO Add test disabled CKEditor
}
/**
* Test textfield widget improvements.
*/
public function testFieldWidgetTextfieldImprovements(): void {
$this->installModule('node', 'field', 'field_ui');
$this->createContentType(['type' => 'page', 'name' => 'Page']);
$this->createField(
entity_type: 'node',
entity_bundle: 'page',
field_name: 'field_string',
field_type: 'string',
field_label: 'String',
widget_type: 'string_textfield',
);
$this->drupalLoginAsRoot();
$web_assert = $this->assertSession();
$this->drupalGet('/admin/structure/types/manage/page/form-display');
$this->dontSeeErrorMessage();
$this->openEntityDisplayComponentSettings('field_string');
$web_assert->fieldExists('fields[field_string][settings_edit_form][third_party_settings][improvements_admin][max_length]');
$this->submitForm([
'fields[field_string][settings_edit_form][third_party_settings][improvements_admin][max_length]' => 10,
], 'Save');
$this->dontSeeErrorMessage();
$this->drupalGet('/node/add/page');
$this->dontSeeErrorMessage();
$web_assert->elementAttributeContains('css', '#edit-field-string-0-value', 'maxlength', '10');
}
/**
* Test "file" widget improvements.
*/
public function testFieldWidgetFileImprovements(): void {
$this->installModule('node', 'field', 'field_ui', 'file', 'improvements_form');
$this->createContentType(['type' => 'page', 'name' => 'Page']);
$this->createField(
entity_type: 'node',
entity_bundle: 'page',
field_name: 'field_file',
field_type: 'file',
field_label: 'File',
widget_type: 'file_generic',
);
$this->drupalLoginAsRoot();
$web_assert = $this->assertSession();
$this->drupalGet('/node/add/page');
$this->dontSeeErrorMessage();
$web_assert->elementExists('css', '#edit-field-file-0-upload');
$this->drupalGet('/admin/structure/types/manage/page/form-display');
$this->dontSeeErrorMessage();
$this->openEntityDisplayComponentSettings('field_file');
$web_assert->fieldExists('fields[field_file][settings_edit_form][third_party_settings][improvements_admin][autoupload]');
$web_assert->fieldExists('fields[field_file][settings_edit_form][third_party_settings][improvements_admin][upload_button_state]');
$this->submitForm([
'fields[field_file][settings_edit_form][third_party_settings][improvements_admin][autoupload]' => FALSE,
], 'Save');
$this->dontSeeErrorMessage();
$this->openEntityDisplayComponentSettings('field_file');
$web_assert->checkboxNotChecked('fields[field_file][settings_edit_form][third_party_settings][improvements_admin][autoupload]');
$this->drupalGet('/node/add/page');
$this->dontSeeErrorMessage();
$web_assert->elementExists('css', '#edit-field-file-0-upload.js-form-file--no-autoupload');
$web_assert->elementExists('css', '#edit-field-file-0-upload-button.js-hide');
$field_file_widget_settings['third_party_settings']['improvements_admin']['upload_button_state'] = 1;
$this->setFieldWidgetSettings('node', 'page', 'field_file', $field_file_widget_settings);
$this->drupalGet('/node/add/page');
$this->dontSeeErrorMessage();
$web_assert->elementExists('css', '#edit-field-file-0-upload-button');
$web_assert->elementNotExists('css', '#edit-field-file-0-upload-button.js-hide');
$field_file_widget_settings['third_party_settings']['improvements_admin']['upload_button_state'] = 0;
$this->setFieldWidgetSettings('node', 'page', 'field_file', $field_file_widget_settings);
$this->drupalGet('/node/add/page');
$this->dontSeeErrorMessage();
$web_assert->elementNotExists('css', '#edit-field-file-0-upload-button');
}
}
