Unverified Commit bf8bbd98 authored by alexpott's avatar alexpott

Issue #2947588 by mrinalini9, borisson_, shaktik, andypost, daffie, joachim,...

Issue #2947588 by mrinalini9, borisson_, shaktik, andypost, daffie, joachim, Lendude: Refactor \Drupal\Tests\views\Kernel\ModuleTest::testViewsGetHandler

(cherry picked from commit 0c700b50)
parent b425254c
...@@ -2,15 +2,19 @@ ...@@ -2,15 +2,19 @@
namespace Drupal\Tests\views\Kernel; namespace Drupal\Tests\views\Kernel;
use Drupal\Component\Render\FormattableMarkup;
use Drupal\Core\Form\FormState;
use Drupal\views\Plugin\views\area\Broken as BrokenArea;
use Drupal\views\Plugin\views\field\Broken as BrokenField;
use Drupal\views\Plugin\views\filter\Broken as BrokenFilter;
use Drupal\views\Plugin\views\filter\Standard;
use Drupal\views\Views;
/** /**
* Tests basic functions from the Views module. * Tests basic functions from the Views module.
* *
* @group views * @group views
*/ */
use Drupal\views\Plugin\views\filter\Standard;
use Drupal\views\Views;
use Drupal\Component\Render\FormattableMarkup;
class ModuleTest extends ViewsKernelTestBase { class ModuleTest extends ViewsKernelTestBase {
/** /**
...@@ -42,14 +46,41 @@ class ModuleTest extends ViewsKernelTestBase { ...@@ -42,14 +46,41 @@ class ModuleTest extends ViewsKernelTestBase {
* @see \Drupal\views\Plugin\ViewsHandlerManager::getHandler() * @see \Drupal\views\Plugin\ViewsHandlerManager::getHandler()
*/ */
public function testViewsGetHandler() { public function testViewsGetHandler() {
$types = ['field', 'area', 'filter']; $types = [
foreach ($types as $type) { 'field' => BrokenField::class,
$item = [ 'area' => BrokenArea::class,
'table' => $this->randomMachineName(), 'filter' => BrokenFilter::class,
'field' => $this->randomMachineName(), ];
]; // Test non-existent tables/fields.
$handler = $this->container->get('plugin.manager.views.' . $type)->getHandler($item); $items = [
$this->assertEqual('Drupal\views\Plugin\views\\' . $type . '\Broken', get_class($handler), new FormattableMarkup('Make sure that a broken handler of type: @type is created.', ['@type' => $type])); [
'table' => 'table_invalid',
'field' => 'id',
],
[
'table' => 'views_test_data',
'field' => 'field_invalid',
],
];
$form_state = new FormState();
$description_top = '<p>' . t('The handler for this item is broken or missing. The following details are available:') . '</p>';
$description_bottom = '<p>' . t('Enabling the appropriate module may solve this issue. Otherwise, check to see if there is a module update available.') . '</p>';
foreach ($types as $type => $class) {
foreach ($items as $item) {
$handler = $this->container->get('plugin.manager.views.' . $type)
->getHandler($item);
$this->assertTrue($handler instanceof $class);
// Make sure details available at edit form.
$form = [];
$handler->buildOptionsForm($form, $form_state);
$this->assertEquals($description_top, $form['description']['description_top']['#markup']);
$this->assertEquals($description_bottom, $form['description']['description_bottom']['#markup']);
$details = [];
foreach ($item as $key => $value) {
$details[] = new FormattableMarkup('@key: @value', ['@key' => $key, '@value' => $value]);
}
$this->assertEquals($details, $form['description']['detail_list']['#items']);
}
} }
$views_data = $this->viewsData(); $views_data = $this->viewsData();
...@@ -77,61 +108,6 @@ public function testViewsGetHandler() { ...@@ -77,61 +108,6 @@ public function testViewsGetHandler() {
]; ];
$handler = $this->container->get('plugin.manager.views.filter')->getHandler($item, 'standard'); $handler = $this->container->get('plugin.manager.views.filter')->getHandler($item, 'standard');
$this->assertInstanceOf(Standard::class, $handler); $this->assertInstanceOf(Standard::class, $handler);
// @todo Reinstate these tests when the debug() in views_get_handler() is
// restored.
return;
// Test non-existent tables/fields.
set_error_handler([$this, 'customErrorHandler']);
$item = [
'table' => 'views_test_data',
'field' => 'field_invalid',
];
$this->container->get('plugin.manager.views.field')->getHandler($item);
$this->assertStringContainsString(new FormattableMarkup("Missing handler: @table @field @type", ['@table' => 'views_test_data', '@field' => 'field_invalid', '@type' => 'field']), $this->lastErrorMessage, 'An invalid field name throws a debug message.');
unset($this->lastErrorMessage);
$item = [
'table' => 'table_invalid',
'field' => 'id',
];
$this->container->get('plugin.manager.views.filter')->getHandler($item);
$this->assertStringContainsString(new FormattableMarkup("Missing handler: @table @field @type", ['@table' => 'table_invalid', '@field' => 'id', '@type' => 'filter']), $this->lastErrorMessage, 'An invalid table name throws a debug message.');
unset($this->lastErrorMessage);
$item = [
'table' => 'table_invalid',
'field' => 'id',
];
$this->container->get('plugin.manager.views.filter')->getHandler($item);
$this->assertStringContainsString(new FormattableMarkup("Missing handler: @table @field @type", ['@table' => 'table_invalid', '@field' => 'id', '@type' => 'filter']), $this->lastErrorMessage, 'An invalid table name throws a debug message.');
unset($this->lastErrorMessage);
restore_error_handler();
}
/**
* Defines an error handler which is used in the test.
*
* Because this is registered in set_error_handler(), it has to be public.
*
* @param int $error_level
* The level of the error raised.
* @param string $message
* The error message.
* @param string $filename
* The filename that the error was raised in.
* @param int $line
* The line number the error was raised at.
* @param array $context
* An array that points to the active symbol table at the point the error
* occurred.
*
* @see set_error_handler()
*/
public function customErrorHandler($error_level, $message, $filename, $line, $context) {
$this->lastErrorMessage = $message;
} }
/** /**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment