improvements-2.x-dev/modules/improvements_form/tests/src/Functional/ImprovementsFormTest.php

modules/improvements_form/tests/src/Functional/ImprovementsFormTest.php
<?php

namespace Drupal\Tests\improvements_form\Functional;

use Drupal\improvements_form\Ajax\AddClassCommand;
use Drupal\improvements_form\Ajax\ConsoleLogCommand;
use Drupal\improvements_form\Ajax\FormResetCommand;
use Drupal\improvements_form\Ajax\HistoryReplaceStateCommand;
use Drupal\improvements_form\Ajax\PageReloadCommand;
use Drupal\improvements_form\Ajax\RemoveClassCommand;
use Drupal\Tests\block\Traits\BlockCreationTrait;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\improvements\Traits\ImprovementsTestTrait;
use Drupal\Tests\node\Traits\NodeCreationTrait;

class ImprovementsFormTest extends BrowserTestBase {

  use BlockCreationTrait;
  use ImprovementsTestTrait;
  use NodeCreationTrait;

  /**
   * {@inheritDoc}
   */
  protected $defaultTheme = 'stark';

  /**
   * {@inheritDoc}
   */
  protected static $modules = ['improvements_form'];

  /**
   * {@inheritDoc}
   */
  protected function setUp(): void {
    parent::setUp();
  }

  /**
   * Test ajax commands.
   */
  public function testAjaxCommands(): void {
    (new AddClassCommand('.selector', 'class-name'))->render();
    (new ConsoleLogCommand('message'))->render();
    (new FormResetCommand('.form-selector', TRUE))->render();
    (new HistoryReplaceStateCommand('/new-url'))->render();
    (new PageReloadCommand())->render();
    (new RemoveClassCommand('.selector', 'class-name'))->render();
  }

  /**
   * Test "date" widget functionality.
   */
  public function testFieldWidgetDateRemoveFielset(): void {
    $this->installModule('node', 'field', 'datetime');
    $this->createContentType(['type' => 'page', 'name' => 'Page']);
    $this->createField(
      entity_type: 'node',
      entity_bundle: 'page',
      field_name: 'field_date',
      field_type: 'datetime',
      field_label: 'Test date field',
      widget_type: 'datetime_default',
    );
    $this->drupalLoginAsRoot();
    $this->drupalGet('/node/add/page');
    $this->dontSeeErrorMessage();

    $web_assert = $this->assertSession();
    $web_assert->elementExists('css', '.field--name-field-date');
    $web_assert->elementExists('css', '#edit-field-date-0-value-date');
    $web_assert->elementNotExists('css', '.field--name-field-date fieldset');
  }

  /**
   * Test "option" element attributes.
   */
  public function testFormSelectOptionsAttributes(): void {
    $this->installModule('improvements_form_test', 'jquery_ui_slider');
    $this->drupalGet('/improvements-test/test-form');
    $this->dontSeeErrorMessage();
    $web_assert = $this->assertSession();
    $web_assert->elementExists('css', 'select[name="select1"] option[value="foo"]');
    $web_assert->elementExists('css', 'select[name="select2"] option[value="foo"][data-custom-attribute="foo-custom-attribute"].foo-test-class');
    $web_assert->elementExists('css', 'select[name="select2"] option[value="bar"]:disabled');
    $web_assert->elementExists('css', 'select[name="select2"] option[value="baz"]');

    $this->submitForm([
      'select1' => 'bar',
      'select2' => 'baz',
    ], 'Submit');
    $this->dontSeeErrorMessage();
    $web_assert->pageTextContains('[select1] => bar');
    $web_assert->pageTextContains('[select2] => baz');
  }

  /**
   * Test "managed_file" element improvements.
   */
  public function testFormManagedFileImprovements(): void {
    $this->installModule('improvements_form_test', 'jquery_ui_slider', 'file');
    $this->drupalGet('/improvements-test/test-form');
    $this->dontSeeErrorMessage();
    $web_assert = $this->assertSession();
    $web_assert->elementExists('css', '#edit-file-without-autoupload-upload');
    $web_assert->elementExists('css', '#edit-file-without-autoupload-upload.js-form-file--no-autoupload');
    $web_assert->elementExists('css', '#edit-file-without-autoupload-upload-button.js-hide');
    $web_assert->elementExists('css', '#edit-file-with-button-upload-button');
    $web_assert->elementNotExists('css', '#edit-file-with-button-upload-button.js-hide');
    $web_assert->elementNotExists('css', '#edit-file-without-button-upload-button');
  }

  /**
   * Test '#title_display'=>'placeholder'.
   */
  public function testFormInputTitleDisplayPlaceholder(): void {
    $this->installModule('improvements_form_test', 'jquery_ui_slider');
    $this->drupalGet('/improvements-test/test-form');
    $this->dontSeeErrorMessage();
    $web_assert = $this->assertSession();
    $web_assert->elementAttributeContains('css', '#edit-label-in-placeholder', 'placeholder', 'Label in placeholder');

    $this->submitForm([
      'label_in_placeholder' => 'foo',
    ], 'Submit');
    $this->dontSeeErrorMessage();
    $web_assert->pageTextContains('[label_in_placeholder] => foo');
  }

  /**
   * Test '#type'=>'range_slider'.
   *
   * @covers \Drupal\improvements_form\Element\RangeSlider
   */
  public function testFormElementRangeSlider(): void {
    $this->installModule('improvements_form_test', 'jquery_ui_slider');
    $this->drupalGet('/improvements-test/test-form');
    $this->dontSeeErrorMessage();
    $this->submitForm([
      'range_slider[min]' => 5,
      'range_slider[max]' => 60,
    ], 'Submit');
    $this->dontSeeErrorMessage();
    $web_assert = $this->assertSession();
    $web_assert->pageTextContains('[min] => 5');
    $web_assert->pageTextContains('[max] => 60');
  }

  /**
   * Test tracking form submit functionality.
   *
   * @covers ::improvements_form_page_attachments()
   */
  public function testFormTrackingSubmit(): void {
    $this->installModule('improvements_form_test', 'jquery_ui_slider');
    $this->drupalGet('/improvements-test/test-form');
    $this->dontSeeErrorMessage();
    $this->submitForm([], 'Submit');
    $this->dontSeeErrorMessage();
    $drupal_settings = $this->getDrupalSettings();
    $this->assertSame('improvements_test_form', $drupal_settings['submittedForms'][0]);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc