You are here

function TokenCurrentPageTest::testCurrentPageTokens in Token 8

File

tests/src/Functional/TokenCurrentPageTest.php, line 21

Class

TokenCurrentPageTest
Test the [current-page:*] tokens.

Namespace

Drupal\Tests\token\Functional

Code

function testCurrentPageTokens() {

  // Cache clear is necessary because the frontpage was already cached by an
  // initial request.
  $this
    ->rebuildAll();
  $tokens = [
    '[current-page:title]' => 'Log in',
    '[current-page:url]' => Url::fromRoute('user.login', [], [
      'absolute' => TRUE,
    ])
      ->toString(),
    '[current-page:url:absolute]' => Url::fromRoute('user.login', [], [
      'absolute' => TRUE,
    ])
      ->toString(),
    '[current-page:url:relative]' => Url::fromRoute('user.login')
      ->toString(),
    '[current-page:url:path]' => '/user/login',
    '[current-page:url:args:value:0]' => 'user',
    '[current-page:url:args:value:1]' => 'login',
    '[current-page:url:args:value:2]' => NULL,
    '[current-page:url:unaliased]' => Url::fromRoute('user.login', [], [
      'absolute' => TRUE,
      'alias' => TRUE,
    ])
      ->toString(),
    '[current-page:page-number]' => 1,
    '[current-page:query:foo]' => NULL,
    '[current-page:query:bar]' => NULL,
    // Deprecated tokens
    '[current-page:arg:0]' => 'user',
    '[current-page:arg:1]' => 'login',
    '[current-page:arg:2]' => NULL,
  ];
  $this
    ->assertPageTokens('user/login', $tokens);
  $this
    ->drupalCreateContentType([
    'type' => 'page',
  ]);
  $node = $this
    ->drupalCreateNode([
    'title' => 'Node title',
    'path' => [
      'alias' => '/node-alias',
    ],
  ]);
  $tokens = [
    '[current-page:title]' => 'Node title',
    '[current-page:url]' => $node
      ->toUrl('canonical', [
      'absolute' => TRUE,
    ])
      ->toString(),
    '[current-page:url:absolute]' => $node
      ->toUrl('canonical', [
      'absolute' => TRUE,
    ])
      ->toString(),
    '[current-page:url:relative]' => $node
      ->toUrl()
      ->toString(),
    '[current-page:url:alias]' => '/node-alias',
    '[current-page:url:args:value:0]' => 'node-alias',
    '[current-page:url:args:value:1]' => NULL,
    '[current-page:url:unaliased]' => $node
      ->toUrl('canonical', [
      'absolute' => TRUE,
      'alias' => TRUE,
    ])
      ->toString(),
    '[current-page:url:unaliased:args:value:0]' => 'node',
    '[current-page:url:unaliased:args:value:1]' => $node
      ->id(),
    '[current-page:url:unaliased:args:value:2]' => NULL,
    '[current-page:page-number]' => 1,
    '[current-page:query:foo]' => 'bar',
    '[current-page:query:bar]' => NULL,
    // Deprecated tokens
    '[current-page:arg:0]' => 'node',
    '[current-page:arg:1]' => 1,
    '[current-page:arg:2]' => NULL,
  ];
  $this
    ->assertPageTokens("/node/{$node->id()}", $tokens, [], [
    'url_options' => [
      'query' => [
        'foo' => 'bar',
      ],
    ],
  ]);
}