+ /**
+ * Test that protected Metatag defaults cannot be deleted.
+ */
+ public function testDefaultProtected() {
+ // Initiate session with a user who can manage metatags.
+ $permissions = ['administer site configuration', 'administer meta tags'];
+ $account = $this->drupalCreateUser($permissions);
+ $this->drupalLogin($account);
+
+ // Add default metatag for Articles.
+ $edit = [
+ 'id' => 'node__article',
+ ];
+ $this->drupalPostForm('/admin/config/search/metatag/add', $edit, 'Save');
+
+ // Check that protected defaults contains "Revert" link instead of "Delete".
+ foreach (MetatagManager::protectedDefaults() as $protected) {
+ $this->assertLinkByHref('/admin/config/search/metatag/' . $protected);
+ $this->assertLinkByHref('/admin/config/search/metatag/' . $protected . '/revert');
+ $this->assertNoLinkByHref('/admin/config/search/metatag/' . $protected . '/delete');
+ }
+
+ // Confirm that non protected defaults can be deleted.
+ $this->assertLinkByHref('/admin/config/search/metatag/node__article');
+ $this->assertNoLinkByHref('/admin/config/search/metatag/node__article/revert');
+ $this->assertLinkByHref('/admin/config/search/metatag/node__article/delete');
+
+ // Visit each protected default page to confirm "Delete" button is hidden.
+ foreach (MetatagManager::protectedDefaults() as $protected) {
+ $this->drupalGet('/admin/config/search/metatag/' . $protected);
+ $this->assertNoLink('Delete');
+ }
+
+ // Confirm that non protected defaults can be deleted.
+ $this->drupalGet('/admin/config/search/metatag/node__article');
+ $this->assertLink('Delete');
+ }
+