3 namespace Drupal\Tests\system\Functional\Theme;
5 use Drupal\Tests\BrowserTestBase;
8 * Tests Twig extensions.
12 class TwigExtensionTest extends BrowserTestBase {
19 public static $modules = ['theme_test', 'twig_extension_test'];
21 protected function setUp() {
23 \Drupal::service('theme_handler')->install(['test_theme']);
27 * Tests that the provided Twig extension loads the service appropriately.
29 public function testTwigExtensionLoaded() {
30 $twigService = \Drupal::service('twig');
31 $ext = $twigService->getExtension('twig_extension_test.test_extension');
32 $this->assertEqual(get_class($ext), 'Drupal\twig_extension_test\TwigExtension\TestExtension', 'TestExtension loaded successfully.');
36 * Tests that the Twig extension's filter produces expected output.
38 public function testTwigExtensionFilter() {
39 $this->config('system.theme')
40 ->set('default', 'test_theme')
43 $this->drupalGet('twig-extension-test/filter');
44 $this->assertText('Every plant is not a mineral.', 'Success: String filtered.');
45 // Test safe_join filter.
46 $this->assertRaw('<em>will be escaped</em><br/><em>will be markup</em><br/><strong>will be rendered</strong>');
50 * Tests that the Twig extension's function produces expected output.
52 public function testTwigExtensionFunction() {
53 $this->config('system.theme')
54 ->set('default', 'test_theme')
57 $this->drupalGet('twig-extension-test/function');
58 $this->assertText('THE QUICK BROWN BOX JUMPS OVER THE LAZY DOG 123.', 'Success: Text converted to uppercase.');
59 $this->assertText('the quick brown box jumps over the lazy dog 123.', 'Success: Text converted to lowercase.');
60 $this->assertNoText('The Quick Brown Fox Jumps Over The Lazy Dog 123.', 'Success: No text left behind.');
64 * Tests output of integer and double 0 values of TwigExtension::escapeFilter().
66 * @see https://www.drupal.org/node/2417733
68 public function testsRenderEscapedZeroValue() {
69 /** @var \Drupal\Core\Template\TwigExtension $extension */
70 $extension = \Drupal::service('twig.extension');
71 /** @var \Drupal\Core\Template\TwigEnvironment $twig */
72 $twig = \Drupal::service('twig');
73 $this->assertIdentical($extension->escapeFilter($twig, 0), 0, 'TwigExtension::escapeFilter() returns zero correctly when provided as an integer.');
74 $this->assertIdentical($extension->escapeFilter($twig, 0.0), 0, 'TwigExtension::escapeFilter() returns zero correctly when provided as a double.');
78 * Tests output of integer and double 0 values of TwigExtension->renderVar().
80 * @see https://www.drupal.org/node/2417733
82 public function testsRenderZeroValue() {
83 /** @var \Drupal\Core\Template\TwigExtension $extension */
84 $extension = \Drupal::service('twig.extension');
85 $this->assertIdentical($extension->renderVar(0), 0, 'TwigExtension::renderVar() renders zero correctly when provided as an integer.');
86 $this->assertIdentical($extension->renderVar(0.0), 0, 'TwigExtension::renderVar() renders zero correctly when provided as a double.');