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