Updated all the contrib modules to their latest versions.
[yaffs-website] / web / modules / contrib / metatag / metatag_page_manager / src / Tests / Functional / MetatagPageManagerTest.php
diff --git a/web/modules/contrib/metatag/metatag_page_manager/src/Tests/Functional/MetatagPageManagerTest.php b/web/modules/contrib/metatag/metatag_page_manager/src/Tests/Functional/MetatagPageManagerTest.php
new file mode 100644 (file)
index 0000000..14c2289
--- /dev/null
@@ -0,0 +1,177 @@
+<?php
+
+namespace Drupal\metatag_page_manager\Tests\Functional;
+
+use Drupal\page_manager\Entity\Page;
+use Drupal\page_manager\Entity\PageVariant;
+use Drupal\Tests\BrowserTestBase;
+use Drupal\Tests\metatag\Functional\MetatagHelperTrait;
+
+/**
+ * Confirm the Page Manager integration works.
+ *
+ * @group metatag
+ */
+class MetatagPageManagerTest extends BrowserTestBase {
+
+  use MetatagHelperTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = [
+    // This module.
+    'metatag_page_manager',
+  ];
+
+  /**
+   * The assert session object.
+   *
+   * @var \Drupal\Tests\WebAssert
+   */
+  public $assertSession;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setUp() {
+    // TODO: Change the autogenerated stub.
+    parent::setUp();
+
+    $this->assertSession = $this->assertSession();
+
+    Page::create([
+      'id' => 'metatag_page_manager_test',
+      'label' => 'Metatag Page',
+      'path' => '/metatag-test',
+    ])->save();
+    PageVariant::create([
+      'id' => 'metatag_page_manager_variant_test',
+      'variant' => 'block_display',
+      'label' => 'Metatag Variant',
+      'page' => 'metatag_page_manager_test',
+      'weight' => 10,
+    ])->save();
+
+    \Drupal::service("router.builder")->rebuild();
+
+    // Log in as user 1.
+    $this->loginUser1();
+  }
+
+  /**
+   * Tests a single variant page.
+   */
+  public function testSingleVariantPage() {
+    $this->drupalGet('/metatag-test');
+    $this->assertSession->statusCodeEquals(200);
+
+    // Confirm what the page title looks like by default.
+    $this->assertSession->titleEquals('Metatag Page | Drupal');
+
+    // Create the Metatag object through the UI to check the custom label.
+    $edit = [
+      'id' => 'page_variant__metatag_page_manager_variant_test',
+      'title' => 'My title',
+    ];
+
+    $this->drupalPostForm('/admin/config/search/metatag/add', $edit, 'Save');
+    $this->assertSession->pageTextContains('Page Variant: Metatag Page: Metatag Variant');
+
+    // Clear caches to load the right metatags.
+    drupal_flush_all_caches();
+
+    $this->drupalGet('/metatag-test');
+    $this->assertSession->statusCodeEquals(200);
+
+    // Confirm what the page title is overridden.
+    $this->assertSession->titleEquals('My title');
+  }
+
+  /**
+   * Tests a single variant page.
+   */
+  public function testMultipleVariantPage() {
+    // Add a new variant.
+    $new_variant = PageVariant::create([
+      'id' => 'metatag_page_manager_multiple_variant_test',
+      'variant' => 'block_display',
+      'label' => 'Metatag Multiple Variant',
+      'page' => 'metatag_page_manager_test',
+      'weight' => 0,
+    ]);
+    $anonymous_selection = [
+      'id' => 'user_role',
+      'roles' => [
+        'anonymous' => 'anonymous',
+      ],
+      'negate' => FALSE,
+      'context_mapping' => [
+        'user' => 'current_user',
+      ],
+    ];
+    $new_variant->set('selection_criteria', [$anonymous_selection]);
+    $new_variant->save();
+
+    // Clear caches to load the right metatags.
+    drupal_flush_all_caches();
+
+    $this->drupalGet('/metatag-test');
+    $this->assertSession->statusCodeEquals(200);
+
+    // Confirm what the page title looks like by default.
+    $this->assertSession->titleEquals('Metatag Page | Drupal');
+
+    // Create the Metatag object through the UI to check the custom label.
+    $edit = [
+      'id' => 'page_variant__metatag_page_manager_variant_test',
+      'title' => 'My title',
+    ];
+
+    $this->drupalPostForm('/admin/config/search/metatag/add', $edit, 'Save');
+    $this->assertSession->pageTextContains('Page Variant: Metatag Page: Metatag Variant');
+
+    // Clear caches to load the right metatags.
+    drupal_flush_all_caches();
+
+    $this->drupalGet('/metatag-test');
+    $this->assertSession->statusCodeEquals(200);
+
+    // Confirm what the page title is overridden.
+    $this->assertSession->titleEquals('My title');
+
+    // Visiting page as anon user, should get the default title.
+    $this->drupalLogout();
+    $this->drupalGet('/metatag-test');
+    $this->assertSession->statusCodeEquals(200);
+
+    // Confirm what the page title looks like by default.
+    $this->assertSession->titleEquals('Metatag Page | Drupal');
+
+    // Login and add custom metatag for anonymous user variant.
+    $this->loginUser1();
+    // Create the Metatag object through the UI to check the custom label.
+    $edit = [
+      'id' => 'page_variant__metatag_page_manager_multiple_variant_test',
+      'title' => 'My title anonymous',
+    ];
+
+    $this->drupalPostForm('/admin/config/search/metatag/add', $edit, 'Save');
+    $this->assertSession->pageTextContains('Page Variant: Metatag Page: Metatag Multiple Variant');
+
+    // Clear caches to load the right metatags.
+    drupal_flush_all_caches();
+
+    // Visit page as logged in user and confirm the right title.
+    $this->drupalGet('/metatag-test');
+    $this->assertSession->statusCodeEquals(200);
+    $this->assertSession->titleEquals('My title');
+
+    // Visit page as anonymous user and confirm the right title.
+    $this->drupalLogout();
+    $this->drupalGet('/metatag-test');
+    $this->assertSession->statusCodeEquals(200);
+    $this->assertSession->titleEquals('My title anonymous');
+  }
+
+}