View source
<?php
namespace Drupal\Tests\token\Functional;
use Drupal\block\Entity\Block;
use Drupal\node\Entity\Node;
use Drupal\node\Entity\NodeType;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\system\Functional\Cache\AssertPageCacheContextsAndTagsTrait;
class UrlTest extends BrowserTestBase {
use AssertPageCacheContextsAndTagsTrait;
protected $node1;
protected $node2;
public static $modules = [
'node',
'token',
'block',
];
protected $defaultTheme = 'stark';
protected function setUp() {
parent::setUp();
$node_type = NodeType::create([
'type' => 'article',
'name' => 'Article',
]);
$node_type
->save();
$this->node1 = Node::create([
'type' => 'article',
'title' => 'Test Node 1',
]);
$this->node1
->save();
$this->node2 = Node::create([
'type' => 'article',
'title' => 'Test Node 2',
]);
$this->node2
->save();
}
public function testBlockUrlTokenReplacement() {
$node1_url = $this->node1
->toUrl();
$node2_url = $this->node2
->toUrl();
$tests = [];
$tests[] = [
'token' => 'prefix_[current-page:url:path]_suffix',
'expected1' => 'prefix_/' . $node1_url
->getInternalPath() . '_suffix',
'expected2' => 'prefix_/' . $node2_url
->getInternalPath() . '_suffix',
'expected3' => 'prefix_/_suffix',
];
$tests[] = [
'token' => 'prefix_[current-page:url]_suffix',
'expected1' => 'prefix_' . $node1_url
->setAbsolute()
->toString() . '_suffix',
'expected2' => 'prefix_' . $node2_url
->setAbsolute()
->toString() . '_suffix',
'expected3' => 'prefix_' . $this
->getAbsoluteUrl('does-not-exist') . '_suffix',
];
$edit = [
'id' => 'token_url_test_block',
'label' => 'label',
'label_display' => TRUE,
];
$this
->placeBlock('system_powered_by_block', $edit);
$block = Block::load('token_url_test_block');
$assert_session = $this
->assertSession();
foreach ($tests as $test) {
$block
->getPlugin()
->setConfigurationValue('label', $test['token']);
$block
->save();
$this
->drupalGet($node1_url);
$assert_session
->elementContains('css', '#block-token-url-test-block', $test['expected1']);
$this
->drupalGet($node2_url);
$assert_session
->elementContains('css', '#block-token-url-test-block', $test['expected2']);
$this
->drupalGet('does-not-exist');
$assert_session
->statusCodeEquals(404);
$assert_session
->elementContains('css', '#block-token-url-test-block', $test['expected3']);
}
$block
->getPlugin()
->setConfigurationValue('label', 'prefix_[current-page:query:unicorns]_suffix');
$block
->save();
$this
->drupalGet($node1_url
->setOption('query', [
'unicorns' => 'fluffy',
]));
$this
->assertCacheContext('url.query_args');
$assert_session
->elementContains('css', '#block-token-url-test-block', 'prefix_fluffy_suffix');
$this
->drupalGet($node1_url
->setOption('query', [
'unicorns' => 'dead',
]));
$assert_session
->elementContains('css', '#block-token-url-test-block', 'prefix_dead_suffix');
}
}