Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / modules / contrib / metatag / tests / src / Functional / DefaultTags.php
diff --git a/web/modules/contrib/metatag/tests/src/Functional/DefaultTags.php b/web/modules/contrib/metatag/tests/src/Functional/DefaultTags.php
new file mode 100644 (file)
index 0000000..8bd2b95
--- /dev/null
@@ -0,0 +1,156 @@
+<?php
+
+namespace Drupal\Tests\metatag\Functional;
+
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Verify that the configured defaults load as intended.
+ *
+ * @group metatag
+ */
+class DefaultTags extends BrowserTestBase {
+
+  // Contains helper methods.
+  use MetatagHelperTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = [
+    // Modules for core functionality.
+    'node',
+    'taxonomy',
+    'user',
+
+    // Need this so that the /node page exists.
+    'views',
+
+    // Contrib dependencies.
+    'token',
+
+    // This module.
+    'metatag',
+
+    // Use the custom route to verify the site works.
+    'metatag_test_custom_route',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    // Set the front page to the main /node page, so that the front page is not
+    // just the login page.
+    \Drupal::configFactory()
+      ->getEditable('system.site')
+      ->set('page.front', '/node')
+      ->save(TRUE);
+  }
+
+  /**
+   * Test the default values for the front page.
+   */
+  public function testFrontpage() {
+    $this->drupalGet('<front>');
+    $this->assertResponse(200);
+    $xpath = $this->xpath("//link[@rel='canonical']");
+    $this_page_url = $this->buildUrl('<front>');
+    $this->assertEqual((string) $xpath[0]->getAttribute('href'), $this_page_url);
+  }
+
+  /**
+   * Test the default values for a custom route.
+   */
+  public function testCustomRoute() {
+    $this->drupalGet('metatag_test_custom_route');
+    $this->assertResponse(200);
+    $this->assertText('Hello world!');
+
+    // Check the meta tags.
+    $xpath = $this->xpath("//link[@rel='canonical']");
+    $this_page_url = $this->buildUrl('/metatag_test_custom_route');
+    $this->assertEqual((string) $xpath[0]->getAttribute('href'), $this_page_url);
+  }
+
+  /**
+   * Test the default values for a Node entity.
+   */
+  public function testNode() {
+    $node = $this->createContentTypeNode();
+    $this_page_url = $node->toUrl('canonical', ['absolute' => TRUE])->toString();
+
+    // Load the node's entity page.
+    $this->drupalGet($this_page_url);
+    $this->assertResponse(200);
+
+    // Check the meta tags.
+    $xpath = $this->xpath("//link[@rel='canonical']");
+    $this->assertEqual((string) $xpath[0]->getAttribute('href'), $this_page_url);
+  }
+
+  /**
+   * Test the default values for a Term entity.
+   */
+  public function testTerm() {
+    $vocab = $this->createVocabulary();
+    $term = $this->createTerm(['vid' => $vocab->id()]);
+    $this_page_url = $term->toUrl('canonical', ['absolute' => TRUE])->toString();
+    $this->drupalGet($this_page_url);
+    $this->assertResponse(200);
+
+    // Check the meta tags.
+    $xpath = $this->xpath("//link[@rel='canonical']");
+    $this->assertEqual((string) $xpath[0]->getAttribute('href'), $this_page_url);
+  }
+
+  /**
+   * Test the default values for a User entity.
+   */
+  public function testUser() {
+    $this->loginUser1();
+    $account = \Drupal::currentUser()->getAccount();
+    $this_page_url = $account->toUrl('canonical', ['absolute' => TRUE])->toString();
+
+    // Load the user's entity page.
+    $this->drupalGet($this_page_url);
+    $this->assertResponse(200);
+
+    // Check the meta tags.
+    $xpath = $this->xpath("//link[@rel='canonical']");
+    $this->assertEqual((string) $xpath[0]->getAttribute('href'), $this_page_url);
+    $this->drupalLogout();
+  }
+
+  /**
+   * Test the default values for the user login page, etc.
+   */
+  public function testUserLoginPages() {
+    $front_url = $this->buildUrl('<front>', ['absolute' => TRUE]);;
+
+    // A list of paths to examine.
+    $routes = [
+      '/user/login',
+      '/user/register',
+      '/user/password',
+    ];
+
+    foreach ($routes as $route) {
+      // Identify the path to load.
+      $this_page_url = $this->buildUrl($route, ['absolute' => TRUE]);
+      $this->assertTrue(!empty($this_page_url));
+
+      // Load the path.
+      $this->drupalGet($this_page_url);
+      $this->assertResponse(200);
+
+      // Check the meta tags.
+      $xpath = $this->xpath("//link[@rel='canonical']");
+      $this->assertNotEqual((string) $xpath[0]->getAttribute('href'), $front_url);
+      $this->assertEqual((string) $xpath[0]->getAttribute('href'), $this_page_url);
+    }
+  }
+
+}