refreshless-8.x-1.x-dev/modules/refreshless_turbo/tests/src/FunctionalJavascript/BehaviourTest.php

modules/refreshless_turbo/tests/src/FunctionalJavascript/BehaviourTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\refreshless_turbo\FunctionalJavascript;

use Drupal\Core\Url;
use Drupal\Tests\refreshless_turbo\FunctionalJavascript\TurboWebDriverTestBase;

/**
 * Behaviour tests.
 *
 * @group refreshless
 *
 * @group refreshless_turbo
 */
class BehaviourTest extends TurboWebDriverTestBase {

  /**
   * Behaviour counter attribute name.
   */
  protected const COUNTER_ATTR =
    'data-refreshless-turbo-behaviour-test-counter';

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

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'block', 'refreshless_turbo_behaviour_test', 'refreshless_turbo_test_tools',
    'system',
  ];

  /**
   * Assert the <html> element has the behaviour counter with a given value.
   *
   * @param int $count
   */
  protected function assertBehaviourCounterEquals(int $count): void {

    $html = $this->assertSession()->elementAttributeExists(
      'css', 'html', self::COUNTER_ATTR,
    );

    $this->assertEquals($count, (int) $html->getAttribute(self::COUNTER_ATTR));

  }

  /**
   * Test basic behaviour attach and detach.
   */
  public function testBasicAttachDetach(): void {

    $loginUrl = Url::fromRoute('user.login');

    $registerUrl = Url::fromRoute('user.register');

    $resetPasswordUrl = Url::fromRoute('user.pass');

    $this->drupalPlaceBlock('local_tasks_block', [
      'region' => 'content', 'id' => 'local-tasks-block',
    ]);

    $this->drupalGet($loginUrl);

    $this->assertSession()->assertRefreshlessIsPresent();

    $this->assertSession()->startRefreshlessPersist();

    $this->assertBehaviourCounterEquals(1);

    $this->click('[data-drupal-link-system-path="' .
      $registerUrl->getInternalPath() .
    '"]');

    $this->assertWaitOnRefreshlessRequestAndPageReady();

    $this->assertBehaviourCounterEquals(2);

    $this->click('[data-drupal-link-system-path="' .
      $resetPasswordUrl->getInternalPath() .
    '"]');

    $this->assertWaitOnRefreshlessRequestAndPageReady();

    $this->assertBehaviourCounterEquals(3);

  }

}

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

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