message-8.x-1.1/tests/src/Kernel/MessageTokenTest.php

tests/src/Kernel/MessageTokenTest.php
<?php

namespace Drupal\Tests\message\Kernel;

use Drupal\Component\Utility\Html;
use Drupal\KernelTests\KernelTestBase;
use Drupal\message\Entity\Message;
use Drupal\user\Entity\User;

/**
 * Test the Message and tokens integration.
 *
 * @group Message
 */
class MessageTokenTest extends KernelTestBase {

  use MessageTemplateCreateTrait;

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'field',
    'filter',
    'message',
    'system',
    'token',
    'user',
  ];

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

  /**
   * The entity type manager service.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

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

    $this->installEntitySchema('message');
    $this->installEntitySchema('user');
    $this->installConfig(['filter', 'system']);

    $this->user = User::create([
      'uid' => mt_rand(5, 10),
      'name' => $this->randomString(),
    ]);
    $this->user->save();
    $this->entityTypeManager = $this->container->get('entity_type.manager');
  }

  /**
   * Test token replacement in a message template.
   */
  public function testTokens() {
    $message_template = $this->createMessageTemplate('dummy_message', 'Dummy message', '', ['[message:uid:entity:name]']);
    $message = Message::create(['template' => $message_template->id()])
      ->setOwnerId($this->user->id());

    $message->save();

    $this->assertEquals('<p>' . Html::escape($this->user->label()) . '</p>', (string) $message, 'The message rendered the author name.');
  }

  /**
   * Test deprecated token replacement in a message template.
   */
  public function testDeprecatedTokens() {
    $message_template = $this->createMessageTemplate('dummy_message', 'Dummy message', '', ['[message:author:name]']);
    $message = Message::create(['template' => $message_template->id()])
      ->setOwnerId($this->user->id());

    $message->save();

    $this->assertEquals('<p>' . Html::escape($this->user->label()) . '</p>', (string) $message, 'The message rendered the author name.');
  }

  /**
   * Test clearing unused tokens.
   */
  public function testTokenClearing() {
    // Clearing enabled.
    $token_options = ['token options' => ['clear' => TRUE, 'token replace' => TRUE]];
    $message_template = $this->createMessageTemplate('dummy_message', 'Dummy message', '', ['[message:uid:entity:name] [bogus:token]'], $token_options);
    $message = Message::create(['template' => $message_template->id()])
      ->setOwnerId($this->user->id());

    $message->save();

    $this->assertEquals('<p>' . Html::escape($this->user->label()) . ' </p>', (string) $message, 'The message rendered the author name and stripped unused tokens.');

    // Clearing disabled.
    $token_options = ['token options' => ['clear' => FALSE, 'token replace' => TRUE]];
    $message_template->setSettings($token_options);
    $message_template->save();

    $this->assertEquals('<p>' . Html::escape($this->user->label() . ' [bogus:token]') . '</p>', (string) $message, 'The message rendered the author name and did not strip the token.');
  }

  /**
   * Test the hard coded tokens.
   */
  public function testHardCodedTokens() {
    $random_text = $this->randomString();
    $token_messages = [
      'some text @{message:author} ' . $random_text,
      'some text %{message:author} ' . $random_text,
      'some text @{wrong:token} ' . $random_text,
    ];

    // The plain_text filter replaces line breaks, so those should be here too.
    $replaced_messages = [
      '<p>some text ' . Html::escape($this->user->label() . ' ' . $random_text) . "</p>\n",
      '<p>some text <em class="placeholder">' . Html::escape($this->user->label()) . '</em> ' . Html::escape($random_text) . "</p>\n",
      '<p>some text @{wrong:token} ' . Html::escape($random_text) . "</p>\n",
    ];

    // Create the message template.
    $message_template = $this->createMessageTemplate('dummy_message', 'Dummy message', '', $token_messages);

    // Assert the arguments.
    $original_message = Message::create([
      'template' => $message_template->id(),
      'uid' => $this->user->id(),
    ]);
    $this->assertTrue($original_message->getArguments() == FALSE, 'No message arguments exist prior to saving the message.');
    $original_message->save();
    // Make very, very sure the message arguments are not coming from the
    // object save created.
    $this->entityTypeManager->getStorage('message')->resetCache();
    $message = Message::load($original_message->id());
    $this->assertNotSame($message, $original_message);

    $arguments = $message->getArguments();
    $this->assertEquals(count($arguments), 2, 'Correct number of arguments added after saving the message.');

    // Assert message is rendered as expected.
    $this->assertEquals($replaced_messages, $message->getText(), 'The text rendered as expected.');
  }

}

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

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