View source
<?php
namespace Drupal\Tests\message\Unit\Entity;
use Drupal\Core\Language\Language;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\Core\Render\RendererInterface;
use Drupal\language\ConfigurableLanguageManagerInterface;
use Drupal\message\Entity\MessageTemplate;
use Drupal\Tests\UnitTestCase;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class MessageTemplateTest extends UnitTestCase {
protected $messageTemplate;
public function setUp() {
parent::setUp();
$this->messageTemplate = new MessageTemplate([
'template' => 'foo_template',
], 'message_template');
}
public function testId() {
$this
->assertSame('foo_template', $this->messageTemplate
->id());
}
public function testSetSettings() {
$settings = [
'one' => 'foo',
'two' => 'bar',
];
$this->messageTemplate
->setSettings($settings);
$this
->assertArrayEquals($settings, $this->messageTemplate
->getSettings());
$this
->assertEquals($this->messageTemplate
->getSetting('one'), $this->messageTemplate
->getSetting('one'));
$this
->assertEquals('bar', $this->messageTemplate
->getSetting('two'));
}
public function testSetDescription() {
$description = 'A description';
$this->messageTemplate
->setDescription($description);
$this
->assertEquals($description, $this->messageTemplate
->getDescription());
}
public function testSetLabel() {
$label = 'A label';
$this->messageTemplate
->setLabel($label);
$this
->assertEquals($label, $this->messageTemplate
->getLabel());
}
public function testSetTemplate() {
$template = 'a_template';
$this->messageTemplate
->setTemplate($template);
$this
->assertEquals($template, $this->messageTemplate
->getTemplate());
}
public function testSetUuid() {
$uuid = 'a-uuid-123';
$this->messageTemplate
->setUuid($uuid);
$this
->assertEquals($uuid, $this->messageTemplate
->getUuid());
}
public function testIsLocked() {
$this
->assertTrue($this->messageTemplate
->isLocked());
$this->messageTemplate
->enforceIsNew(TRUE);
$this
->assertFalse($this->messageTemplate
->isLocked());
}
public function testGetTextDefaultLanguage() {
$container = new ContainerBuilder();
$language_manager = $this
->prophesize(LanguageManagerInterface::class)
->reveal();
$container
->set('language_manager', $language_manager);
\Drupal::setContainer($container);
$this
->assertEmpty($this->messageTemplate
->getText());
$renderer = $this
->prophesize(RendererInterface::class);
$text = [
[
'value' => 'foo text',
'format' => 'foo_format',
],
[
'value' => 'bar text',
'format' => 'bar_format',
],
];
$expected_build = [
'#type' => 'processed_text',
'#text' => $text[0]['value'],
'#format' => $text[0]['format'],
'#langcode' => Language::LANGCODE_NOT_SPECIFIED,
];
$renderer
->renderPlain($expected_build)
->willReturn('<div>foo text</div>');
$expected_build = [
'#type' => 'processed_text',
'#text' => $text[1]['value'],
'#format' => $text[1]['format'],
'#langcode' => Language::LANGCODE_NOT_SPECIFIED,
];
$renderer
->renderPlain($expected_build)
->willReturn('bar text');
\Drupal::getContainer()
->set('renderer', $renderer
->reveal());
$this->messageTemplate
->set('text', $text);
$expected = [
'<div>foo text</div>',
'bar text',
];
$this
->assertEquals($expected, $this->messageTemplate
->getText());
$this
->assertEquals([
$expected[1],
], $this->messageTemplate
->getText(Language::LANGCODE_NOT_SPECIFIED, 1));
$this
->assertEmpty($this->messageTemplate
->getText(Language::LANGCODE_NOT_SPECIFIED, 42));
}
public function testGetTextConfigurableLanguage() {
$container = new ContainerBuilder();
$language_manager = $this
->prophesize(LanguageManagerInterface::class)
->reveal();
$container
->set('language_manager', $language_manager);
\Drupal::setContainer($container);
$default_language = $this
->prophesize(Language::class);
$default_language
->getId()
->willReturn('hu');
$language_manager = $this
->prophesize(ConfigurableLanguageManagerInterface::class);
$language_manager
->getDefaultLanguage()
->willReturn($default_language);
$language_manager
->getLanguageConfigOverride('hu', 'message.template.foo_template')
->willReturn($this->messageTemplate);
\Drupal::getContainer()
->set('language_manager', $language_manager
->reveal());
$text = [
[
'value' => 'foo text',
'format' => 'foo_format',
],
[
'value' => 'bar text',
'format' => 'bar_format',
],
];
$this->messageTemplate
->set('text', $text);
$renderer = $this
->prophesize(RendererInterface::class);
$expected_build = [
'#type' => 'processed_text',
'#text' => $text[0]['value'],
'#format' => $text[0]['format'],
'#langcode' => 'hu',
];
$renderer
->renderPlain($expected_build)
->willReturn('<div>foo text</div>');
$expected_build = [
'#type' => 'processed_text',
'#text' => $text[1]['value'],
'#format' => $text[1]['format'],
'#langcode' => 'hu',
];
$renderer
->renderPlain($expected_build)
->willReturn('bar text');
\Drupal::getContainer()
->set('renderer', $renderer
->reveal());
$expected = [
'<div>foo text</div>',
'bar text',
];
$this
->assertEquals($expected, $this->messageTemplate
->getText());
$message_template = $this
->prophesize(MessageTemplate::class);
$language_manager
->getLanguageConfigOverride('xx', 'message.template.foo_template')
->willReturn($message_template
->reveal());
\Drupal::getContainer()
->set('language_manager', $language_manager
->reveal());
$this
->assertEmpty($this->messageTemplate
->getText('xx'));
}
}