Issue #1829822 by tim.plunkett, dawehner, damiankloip: Write a test which tests the UI for all of the handlers.
parent
566ccd6344
commit
a93b6375b8
|
|
@ -0,0 +1,62 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains Drupal\views\Tests\UI\HandlerTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\views\Tests\UI;
|
||||
|
||||
use Drupal\views\ViewExecutable;
|
||||
|
||||
/**
|
||||
* Tests some generic handler UI functionality.
|
||||
*
|
||||
* @see \Drupal\views\Plugin\views\HandlerBase
|
||||
*/
|
||||
class HandlerTest extends UITestBase {
|
||||
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Handler test',
|
||||
'description' => 'Tests handler UI for views.',
|
||||
'group' => 'Views UI'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests UI CRUD.
|
||||
*/
|
||||
public function testUICRUD() {
|
||||
$handler_types = ViewExecutable::viewsHandlerTypes();
|
||||
foreach ($handler_types as $type => $type_info) {
|
||||
// Test adding handlers.
|
||||
$add_handler_url = "admin/structure/views/nojs/add-item/test_view/default/$type";
|
||||
|
||||
// Area handler types need to use a different handler.
|
||||
if (in_array($type, array('header', 'footer', 'empty'))) {
|
||||
$this->drupalPost($add_handler_url, array('name[views.area]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
|
||||
$edit_handler_url = "admin/structure/views/nojs/config-item/test_view/default/$type/area";
|
||||
}
|
||||
elseif ($type == 'relationship') {
|
||||
// @todo Add a views_test_data relationship handler to test.
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
$this->drupalPost($add_handler_url, array('name[views_test_data.job]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
|
||||
$edit_handler_url = "admin/structure/views/nojs/config-item/test_view/default/$type/job";
|
||||
}
|
||||
|
||||
$this->assertUrl($edit_handler_url, array(), 'The user got redirected to the handler edit form.');
|
||||
$this->drupalPost(NULL, array(), t('Apply'));
|
||||
|
||||
$this->assertUrl('admin/structure/views/view/test_view/edit', array(), 'The user got redirected to the views edit form.');
|
||||
|
||||
$this->assertLinkByHref($edit_handler_url, 0, 'The handler edit link appears in the UI.');
|
||||
|
||||
$this->drupalPost($edit_handler_url, array(), t('Remove'));
|
||||
$this->assertNoLinkByHref($edit_handler_url, 0, 'The handler edit link does not appears in the UI after removing.');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -317,9 +317,9 @@ class ViewEditFormController extends ViewFormControllerBase {
|
|||
// If the plugin doesn't exist, display an error message instead of an edit
|
||||
// page.
|
||||
if (empty($display)) {
|
||||
$title = isset($display['display_title']) ? $display['display_title'] : t('Invalid');
|
||||
$title = isset($display->display['display_title']) ? $display->display['display_title'] : t('Invalid');
|
||||
// @TODO: Improved UX for the case where a plugin is missing.
|
||||
$build['#markup'] = t("Error: Display @display refers to a plugin named '@plugin', but that plugin is not available.", array('@display' => $display['id'], '@plugin' => $display['display_plugin']));
|
||||
$build['#markup'] = t("Error: Display @display refers to a plugin named '@plugin', but that plugin is not available.", array('@display' => $display->display['id'], '@plugin' => $display->display['display_plugin']));
|
||||
}
|
||||
// Build the content of the edit page.
|
||||
else {
|
||||
|
|
@ -592,12 +592,13 @@ class ViewEditFormController extends ViewFormControllerBase {
|
|||
* Regenerate the current tab for AJAX updates.
|
||||
*/
|
||||
public function rebuildCurrentTab(ViewUI $view, &$output, $display_id) {
|
||||
$view->displayID = $display_id;
|
||||
if (!$view->get('executable')->setDisplay('default')) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Regenerate the main display area.
|
||||
$build = static::getDisplayTab($this);
|
||||
$build = $this->getDisplayTab($view);
|
||||
static::addMicroweights($build);
|
||||
$output[] = ajax_command_html('#views-tab-' . $display_id, drupal_render($build));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue