From e6ac9ec5694c0ef0e8cba16302a1250f2e4c0113 Mon Sep 17 00:00:00 2001
From: webchick <webchick@24967.no-reply.drupal.org>
Date: Fri, 18 Apr 2014 13:39:10 -0700
Subject: [PATCH] Issue #2244757 by tim.plunkett: Path Admin UI is broken and
 has no test coverage.

---
 .../Drupal/path/Controller/PathController.php | 10 +-
 .../lib/Drupal/path/Tests/PathAdminTest.php   | 92 +++++++++++++++++++
 core/modules/path/path.admin.inc              |  2 +-
 core/modules/path/path.routing.yml            | 11 ++-
 4 files changed, 111 insertions(+), 4 deletions(-)
 create mode 100644 core/modules/path/lib/Drupal/path/Tests/PathAdminTest.php

diff --git a/core/modules/path/lib/Drupal/path/Controller/PathController.php b/core/modules/path/lib/Drupal/path/Controller/PathController.php
index ebb2c1d6dccd..90f0526a45a8 100644
--- a/core/modules/path/lib/Drupal/path/Controller/PathController.php
+++ b/core/modules/path/lib/Drupal/path/Controller/PathController.php
@@ -15,7 +15,15 @@ class PathController {
   /**
    * @todo Remove path_admin_overview().
    */
-  public function adminOverview($keys = NULL) {
+  public function adminOverview() {
+    module_load_include('admin.inc', 'path');
+    return path_admin_overview();
+  }
+
+  /**
+   * @todo Remove path_admin_overview().
+   */
+  public function adminOverviewFiltered($keys) {
     module_load_include('admin.inc', 'path');
     return path_admin_overview($keys);
   }
diff --git a/core/modules/path/lib/Drupal/path/Tests/PathAdminTest.php b/core/modules/path/lib/Drupal/path/Tests/PathAdminTest.php
new file mode 100644
index 000000000000..30ea7f46e1b8
--- /dev/null
+++ b/core/modules/path/lib/Drupal/path/Tests/PathAdminTest.php
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\path\Tests\PathAdminTest.
+ */
+
+namespace Drupal\path\Tests;
+
+/**
+ * Tests the Path admin UI.
+ */
+class PathAdminTest extends PathTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('path');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Path admin UI',
+      'description' => 'Tests the Path admin UI.',
+      'group' => 'Path',
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    // Create test user and login.
+    $web_user = $this->drupalCreateUser(array('create page content', 'edit own page content', 'administer url aliases', 'create url aliases'));
+    $this->drupalLogin($web_user);
+  }
+
+  /**
+   * Tests the filtering aspect of the Path UI.
+   */
+  public function testPathFiltering() {
+    // Create test nodes.
+    $node1 = $this->drupalCreateNode();
+    $node2 = $this->drupalCreateNode();
+
+    // Create aliases.
+    $alias1 = $this->randomName(8);
+    $edit = array(
+      'source' => 'node/' . $node1->id(),
+      'alias' => $alias1,
+    );
+    $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
+
+    $alias2 = $this->randomName(8);
+    $edit = array(
+      'source' => 'node/' . $node2->id(),
+      'alias' => $alias2,
+    );
+    $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
+
+    // Filter by the first alias.
+    $edit = array(
+      'filter' => $alias1,
+    );
+    $this->drupalPostForm(NULL, $edit, t('Filter'));
+    $this->assertLinkByHref($alias1);
+    $this->assertNoLinkByHref($alias2);
+
+    // Filter by the second alias.
+    $edit = array(
+      'filter' => $alias2,
+    );
+    $this->drupalPostForm(NULL, $edit, t('Filter'));
+    $this->assertNoLinkByHref($alias1);
+    $this->assertLinkByHref($alias2);
+
+    // Filter by a random string with a different length.
+    $edit = array(
+      'filter' => $this->randomName(10),
+    );
+    $this->drupalPostForm(NULL, $edit, t('Filter'));
+    $this->assertNoLinkByHref($alias1);
+    $this->assertNoLinkByHref($alias2);
+
+    // Reset the filter.
+    $edit = array();
+    $this->drupalPostForm(NULL, $edit, t('Reset'));
+    $this->assertLinkByHref($alias1);
+    $this->assertLinkByHref($alias2);
+  }
+
+}
diff --git a/core/modules/path/path.admin.inc b/core/modules/path/path.admin.inc
index 3dbae1114c19..c0eb73e5f75f 100644
--- a/core/modules/path/path.admin.inc
+++ b/core/modules/path/path.admin.inc
@@ -307,5 +307,5 @@ function path_admin_filter_form_submit_filter($form, &$form_state) {
  * @see path_admin_filter_form_submit_filter()
  */
 function path_admin_filter_form_submit_reset($form, &$form_state) {
-  $form_state['redirect'] = 'admin/config/search/path/list';
+  $form_state['redirect'] = 'admin/config/search/path';
 }
diff --git a/core/modules/path/path.routing.yml b/core/modules/path/path.routing.yml
index 15607ca75217..9c702e1be496 100644
--- a/core/modules/path/path.routing.yml
+++ b/core/modules/path/path.routing.yml
@@ -7,11 +7,18 @@ path.delete:
     _permission: 'administer url aliases'
 
 path.admin_overview:
-  path: '/admin/config/search/path/{keys}'
+  path: '/admin/config/search/path'
   defaults:
     _title: 'URL aliases'
     _content: '\Drupal\path\Controller\PathController::adminOverview'
-    keys: NULL
+  requirements:
+    _permission: 'administer url aliases'
+
+path.admin_overview_filter:
+  path: '/admin/config/search/path/list/{keys}'
+  defaults:
+    _title: 'URL aliases'
+    _content: '\Drupal\path\Controller\PathController::adminOverviewFiltered'
   requirements:
     _permission: 'administer url aliases'
 
-- 
GitLab