google_tag-8.x-1.x-dev/tests/src/Kernel/Events/SignUpEventTest.php

tests/src/Kernel/Events/SignUpEventTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\google_tag\Kernel\Events;

use Drupal\Core\Url;
use Drupal\google_tag\Entity\TagContainer;
use Drupal\Tests\google_tag\Kernel\GoogleTagTestCase;
use Symfony\Component\HttpFoundation\Request;

/**
 * Signup event test.
 *
 * @group google_tag
 */
final class SignUpEventTest extends GoogleTagTestCase {

  /**
   * Tests signup event.
   *
   * @testWith ["[site:url]"]
   *           [null]
   */
  public function testEvent(?string $method): void {
    $config = $method !== NULL ? ['method' => $method] : [];
    TagContainer::create([
      'id' => 'foo',
      'weight' => 10,
      'events' => ['sign_up' => $config],
    ])->save();

    $uri = Url::fromRoute('user.register')->toString();

    $this->doRequest(Request::create($uri));

    $form_data = [
      'mail' => 'foo@example.com',
      'name' => 'name',
      'form_build_id' => (string) $this->cssSelect('input[name="form_build_id"]')[0]->attributes()->value[0],
      'form_id' => (string) $this->cssSelect('input[name="form_id"]')[0]->attributes()->value[0],
      'op' => (string) $this->cssSelect('input[name="op"]')[0]->attributes()->value[0],
    ];

    $request = Request::create($uri, 'POST', $form_data);
    // We need to start a session since \Drupal\Core\StackMiddleware\Session
    // does not due to command line.
    $session = $this->container->get('session');
    $session->start();
    $request->setSession($session);

    $response = $this->doRequest($request);
    self::assertEquals(303, $response->getStatusCode());
    $request = Request::create($response->headers->get('Location'));
    $this->doRequest($request);

    $this->assertGoogleTagEvents([
      [
        'name' => 'sign_up',
        'data' => [
          'method' => $method && str_starts_with($method, '[')
            ? $this->container->get('token')->replace($method, [], ['clear' => TRUE])
            : 'CMS',
        ],
      ],
    ]);
  }

}

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

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