protected function NodeTranslationUITest::doTestAlternateHreflangLinks in Drupal 8
Same name and namespace in other branches
- 9 core/modules/node/tests/src/Functional/NodeTranslationUITest.php \Drupal\Tests\node\Functional\NodeTranslationUITest::doTestAlternateHreflangLinks()
 - 10 core/modules/node/tests/src/Functional/NodeTranslationUITest.php \Drupal\Tests\node\Functional\NodeTranslationUITest::doTestAlternateHreflangLinks()
 
Tests that the given path provides the correct alternate hreflang links.
Parameters
\Drupal\node\Entity\Node $node: The node to be tested.
1 call to NodeTranslationUITest::doTestAlternateHreflangLinks()
- NodeTranslationUITest::testTranslationRendering in core/
modules/ node/ tests/ src/ Functional/ NodeTranslationUITest.php  - Tests that translations are rendered properly.
 
File
- core/
modules/ node/ tests/ src/ Functional/ NodeTranslationUITest.php, line 399  
Class
- NodeTranslationUITest
 - Tests the Node Translation UI.
 
Namespace
Drupal\Tests\node\FunctionalCode
protected function doTestAlternateHreflangLinks(Node $node) {
  $url = $node
    ->toUrl();
  $languages = $this->container
    ->get('language_manager')
    ->getLanguages();
  $url
    ->setAbsolute();
  $urls = [];
  $translations = [];
  foreach ($this->langcodes as $langcode) {
    $language_url = clone $url;
    $urls[$langcode] = $language_url
      ->setOption('language', $languages[$langcode]);
    $translations[$langcode] = $node
      ->getTranslation($langcode);
  }
  foreach ($this->langcodes as $langcode) {
    // Skip unpublished translations.
    if ($translations[$langcode]
      ->isPublished()) {
      $this
        ->drupalGet($urls[$langcode]);
      foreach ($urls as $alternate_langcode => $language_url) {
        // Retrieve desired link elements from the HTML head.
        $links = $this
          ->xpath('head/link[@rel = "alternate" and @href = :href and @hreflang = :hreflang]', [
          ':href' => $language_url
            ->toString(),
          ':hreflang' => $alternate_langcode,
        ]);
        if ($translations[$alternate_langcode]
          ->isPublished()) {
          $this
            ->assert(isset($links[0]), new FormattableMarkup('The %langcode node translation has the correct alternate hreflang link for %alternate_langcode: %link.', [
            '%langcode' => $langcode,
            '%alternate_langcode' => $alternate_langcode,
            '%link' => $url
              ->toString(),
          ]));
        }
        else {
          $this
            ->assertFalse(isset($links[0]), new FormattableMarkup('The %langcode node translation has an hreflang link for unpublished %alternate_langcode translation: %link.', [
            '%langcode' => $langcode,
            '%alternate_langcode' => $alternate_langcode,
            '%link' => $url
              ->toString(),
          ]));
        }
      }
    }
  }
}