etracker-8.x-3.x-dev/tests/src/Functional/AdminSettingsFormTests.php

tests/src/Functional/AdminSettingsFormTests.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\etracker\Functional;

use Drupal\Tests\BrowserTestBase;
use Drupal\etracker\Helper\Constants;

/**
 * Tests the configuration form.
 *
 * @group etracker
 */
class AdminSettingsFormTests extends BrowserTestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = ['etracker'];

  /**
   * Default theme.
   *
   * @var string
   */
  protected $defaultTheme = 'stark';

  /**
   * A test administrator.
   *
   * @var \Drupal\user\UserInterface
   */
  protected $adminUser;

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

    $permissions = [
      'access administration pages',
      'administer etracker',
    ];

    $this->adminUser = $this->drupalCreateUser($permissions);
    $this->drupalLogin($this->adminUser);
  }

  /**
   * Tests the fields that allow to configure tracking of specific pages.
   *
   * @param string $pages
   *   A list of pages that should be tracked. One page per line.
   * @param bool $validation_error_expected
   *   TRUE if a validation error should be thrown. FALSE otherwise.
   *
   * @dataProvider pageTrackingProvider
   */
  public function testPageTracking($pages, $validation_error_expected) {
    $edit = [
      'etracker_track_path_mode' => Constants::ETRACKER_TRACK_PATHS_MODE_ALL,
      'etracker_track_paths' => $pages,
    ];
    $this->drupalGet('admin/config/system/etracker');
    $this->submitForm($edit, 'Save configuration');
    $has_validation_error = (bool) $this->getSession()->getPage()->find('css', '#edit-etracker-track-paths.error');
    $this->assertEquals($validation_error_expected, $has_validation_error);
  }

  /**
   * Provides test data for ::testPageTracking().
   *
   * @return array
   *   An array of test cases, each test case is an array with two values:
   *   0. A string containing a list of pages to track.
   *   1. A boolean indicating whether or not a validation error is expected to
   *      be thrown.
   */
  public static function pageTrackingProvider() {
    // @codingStandardsIgnoreStart
    return [
      [
        // No validation error should be thrown for an empty page list.
        '',
        FALSE,
      ],
      [
        // No validation error should be thrown for a list of valid pages.
        <<<TXT
/node/1
/blog/*/view
/shop
<front>
TXT
        ,
        FALSE,
      ],
      [
        // A validation error should be thrown if one of the pages doesn't start
        // with a slash.
        <<<TXT
/node/1
/blog/*/view
shop
<front>
TXT
        ,
        TRUE,
      ],
    ];
    // @codingStandardsIgnoreEnd
  }

}

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

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