5 * Contains \Drupal\views\Tests\Plugin\PluginBaseTest.
8 namespace Drupal\Tests\views\Kernel\Plugin;
10 use Drupal\Core\Render\RenderContext;
11 use Drupal\Core\Render\Markup;
12 use Drupal\KernelTests\KernelTestBase;
13 use Drupal\views\Plugin\views\PluginBase;
16 * Tests the PluginBase class.
20 class PluginBaseTest extends KernelTestBase {
25 protected $testPluginBase;
27 protected function setUp() {
29 $this->testPluginBase = new TestPluginBase();
33 * Test that the token replacement in views works correctly.
35 public function testViewsTokenReplace() {
36 $text = '{{ langcode__value }} means {{ langcode }}';
37 $tokens = ['{{ langcode }}' => Markup::create('English'), '{{ langcode__value }}' => 'en'];
39 $result = \Drupal::service('renderer')->executeInRenderContext(new RenderContext(), function () use ($text, $tokens) {
40 return $this->testPluginBase->viewsTokenReplace($text, $tokens);
43 $this->assertIdentical($result, 'en means English');
47 * Test that the token replacement in views works correctly with dots.
49 public function testViewsTokenReplaceWithDots() {
50 $text = '{{ argument.first }} comes before {{ argument.second }}';
51 $tokens = ['{{ argument.first }}' => 'first', '{{ argument.second }}' => 'second'];
53 $result = \Drupal::service('renderer')->executeInRenderContext(new RenderContext(), function () use ($text, $tokens) {
54 return $this->testPluginBase->viewsTokenReplace($text, $tokens);
57 $this->assertIdentical($result, 'first comes before second');
59 // Test tokens with numeric indexes.
60 $text = '{{ argument.0.first }} comes before {{ argument.1.second }}';
61 $tokens = ['{{ argument.0.first }}' => 'first', '{{ argument.1.second }}' => 'second'];
63 $result = \Drupal::service('renderer')->executeInRenderContext(new RenderContext(), function () use ($text, $tokens) {
64 return $this->testPluginBase->viewsTokenReplace($text, $tokens);
67 $this->assertIdentical($result, 'first comes before second');
71 * Tests viewsTokenReplace without any twig tokens.
73 public function testViewsTokenReplaceWithTwigTokens() {
74 $text = 'Just some text';
76 $result = $this->testPluginBase->viewsTokenReplace($text, $tokens);
77 $this->assertIdentical($result, 'Just some text');
83 * Helper class for using the PluginBase abstract class.
85 class TestPluginBase extends PluginBase {
87 public function __construct() {
88 parent::__construct([], '', []);
91 public function viewsTokenReplace($text, $tokens) {
92 return parent::viewsTokenReplace($text, $tokens);