Version 1
[yaffs-website] / web / modules / contrib / pathauto / src / Tests / PathautoTaxonomyWebTest.php
diff --git a/web/modules/contrib/pathauto/src/Tests/PathautoTaxonomyWebTest.php b/web/modules/contrib/pathauto/src/Tests/PathautoTaxonomyWebTest.php
new file mode 100644 (file)
index 0000000..e1a7e88
--- /dev/null
@@ -0,0 +1,102 @@
+<?php
+
+namespace Drupal\pathauto\Tests;
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests pathauto taxonomy UI integration.
+ *
+ * @group pathauto
+ */
+class PathautoTaxonomyWebTest extends WebTestBase {
+
+  use PathautoTestHelperTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('taxonomy', 'pathauto', 'views');
+
+  /**
+   * Admin user.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $adminUser;
+
+  /**
+   * {inheritdoc}
+   */
+  function setUp() {
+    parent::setUp();
+
+    // Allow other modules to add additional permissions for the admin user.
+    $permissions = array(
+      'administer pathauto',
+      'administer url aliases',
+      'create url aliases',
+      'administer taxonomy',
+    );
+    $this->adminUser = $this->drupalCreateUser($permissions);
+    $this->drupalLogin($this->adminUser);
+
+    $this->createPattern('taxonomy_term', '/[term:vocabulary]/[term:name]');
+  }
+
+
+  /**
+   * Basic functional testing of Pathauto with taxonomy terms.
+   */
+  function testTermEditing() {
+    $this->drupalGet('admin/structure');
+    $this->drupalGet('admin/structure/taxonomy');
+
+    // Add vocabulary "tags".
+    $vocabulary = $this->addVocabulary(array('name' => 'tags', 'vid' => 'tags'));
+
+    // Create term for testing.
+    $name = 'Testing: term name [';
+    $automatic_alias = '/tags/testing-term-name';
+    $this->drupalPostForm('admin/structure/taxonomy/manage/tags/add', array('name[0][value]' => $name), 'Save');
+    $name = trim($name);
+    $this->assertText("Created new term $name.");
+    $term = $this->drupalGetTermByName($name);
+
+    // Look for alias generated in the form.
+    $this->drupalGet("taxonomy/term/{$term->id()}/edit");
+    $this->assertFieldChecked('edit-path-0-pathauto');
+    $this->assertFieldByName('path[0][alias]', $automatic_alias, 'Generated alias visible in the path alias field.');
+
+    // Check whether the alias actually works.
+    $this->drupalGet($automatic_alias);
+    $this->assertText($name, 'Term accessible through automatic alias.');
+
+    // Manually set the term's alias.
+    $manual_alias = '/tags/' . $term->id();
+    $edit = array(
+      'path[0][pathauto]' => FALSE,
+      'path[0][alias]' => $manual_alias,
+    );
+    $this->drupalPostForm("taxonomy/term/{$term->id()}/edit", $edit, t('Save'));
+    $this->assertText("Updated term $name.");
+
+    // Check that the automatic alias checkbox is now unchecked by default.
+    $this->drupalGet("taxonomy/term/{$term->id()}/edit");
+    $this->assertNoFieldChecked('edit-path-0-pathauto');
+    $this->assertFieldByName('path[0][alias]', $manual_alias);
+
+    // Submit the term form with the default values.
+    $this->drupalPostForm(NULL, array('path[0][pathauto]' => FALSE), t('Save'));
+    $this->assertText("Updated term $name.");
+
+    // Test that the old (automatic) alias has been deleted and only accessible
+    // through the new (manual) alias.
+    $this->drupalGet($automatic_alias);
+    $this->assertResponse(404, 'Term not accessible through automatic alias.');
+    $this->drupalGet($manual_alias);
+    $this->assertText($name, 'Term accessible through manual alias.');
+  }
+
+}