neuraflow-1.0.0/modules/cookies_neuraflow/tests/src/FunctionalJavascript/CookiesNeuraflowFunctionalJavascriptTest.php

modules/cookies_neuraflow/tests/src/FunctionalJavascript/CookiesNeuraflowFunctionalJavascriptTest.php
<?php

namespace Drupal\Tests\cookies_neuraflow\FunctionalJavascript;

use Drupal\cookies\Constants\CookiesConstants;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
use Drupal\Tests\cookies\Traits\CookiesCacheClearTrait;

/**
 * Tests cookies_neuraflow Javascript related functionalities.
 *
 * @group cookies_neuraflow
 */
class CookiesNeuraflowFunctionalJavascriptTest extends WebDriverTestBase {
  use CookiesCacheClearTrait;

  /**
   * An admin user with all permissions.
   *
   * @var \Drupal\user\Entity\User
   */
  protected $adminUser;

  /**
   * The user.
   *
   * @var \Drupal\user\Entity\User
   */
  protected $user;

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

  /**
   * Modules to enable.
   *
   * @var array
   */
  protected static $modules = [
    'test_page_test',
    'filter_test',
    'block',
    'neuraflow',
    'cookies',
    'cookies_neuraflow',
  ];

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

    $this->config('system.site')->set('page.front', '/test-page')->save();
    $this->user = $this->drupalCreateUser([]);
    $this->adminUser = $this->drupalCreateUser([]);
    $this->adminUser->addRole($this->createAdminRole('admin', 'admin'));
    $this->adminUser->save();
    $this->drupalLogin($this->adminUser);
    $this->drupalPlaceBlock('cookies_ui_block');
    // Set neuraflow settings:
    $this->config('neuraflow.settings')->set('neurabot.neurabotConfig.neurabotConfigId', '1')->save();

    $this->clearBackendCaches();
  }

  /**
   * Tests if the neuraflow javascript files are correctly knocked in / out.
   */
  public function testNeuraflowJsCorrectlyKnocked() {
    $session = $this->assertSession();
    $driver = $this->getSession()->getDriver();

    $this->drupalGet('<front>');

    $session->elementsCount('css', 'script[src*="js/neurabot.js"]', 1);
    $session->elementAttributeContains('css', 'script[src*="js/neurabot.js"]', 'type', CookiesConstants::COOKIES_SCRIPT_KO_TYPE);
    $session->elementAttributeContains('css', 'script[src*="js/neurabot.js"]', 'data-cookieconsent', 'neurabot');

    $session->elementsCount('css', 'script[src="https://prod-chat-app.neurabot.neuraflow.de/embed-loader.js"]', 1);
    $session->elementAttributeContains('css', 'script[src="https://prod-chat-app.neurabot.neuraflow.de/embed-loader.js"]', 'type', CookiesConstants::COOKIES_SCRIPT_KO_TYPE);
    $session->elementAttributeContains('css', 'script[src="https://prod-chat-app.neurabot.neuraflow.de/embed-loader.js"]', 'data-cookieconsent', 'neurabot');

    // Check if window.neurabot is undefined:
    $windowNeurabotUndefined = $driver->evaluateScript('window.neurabot');
    $this->assertNull($windowNeurabotUndefined);

    // Fire consent script, accept all cookies:
    $script = "var options = { all: true };
        document.dispatchEvent(new CustomEvent('cookiesjsrSetService', { detail: options }));";
    $driver->executeScript($script);

    $this->clearBackendCaches();
    $this->drupalGet('<front>');

    $session->elementsCount('css', 'script[src*="js/neurabot.js"]', 1);
    $session->elementAttributeContains('css', 'script[src*="js/neurabot.js"]', 'type', 'module');
    $session->elementAttributeContains('css', 'script[src*="js/neurabot.js"]', 'data-cookieconsent', 'neurabot');

    $session->elementsCount('css', 'script[src="https://prod-chat-app.neurabot.neuraflow.de/embed-loader.js"]', 1);
    $session->elementAttributeContains('css', 'script[src="https://prod-chat-app.neurabot.neuraflow.de/embed-loader.js"]', 'type', 'module');
    $session->elementAttributeContains('css', 'script[src="https://prod-chat-app.neurabot.neuraflow.de/embed-loader.js"]', 'data-cookieconsent', 'neurabot');
  }

}

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

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