#71: Remove files no longer part of Drupal core in Drupal 8.0.0-beta15.
This commit is contained in:
parent
f3791f1da3
commit
1ebe18adc2
101 changed files with 0 additions and 9459 deletions
|
@ -1,756 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\views\Tests\Handler\FieldUnitTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\views\Tests\Handler;
|
||||
|
||||
use Drupal\Core\Render\RenderContext;
|
||||
use Drupal\views\Tests\ViewUnitTestBase;
|
||||
use Drupal\views\Plugin\views\field\FieldPluginBase;
|
||||
use Drupal\views\Views;
|
||||
|
||||
/**
|
||||
* Tests the generic field handler.
|
||||
*
|
||||
* @group views
|
||||
* @see \Drupal\views\Plugin\views\field\FieldPluginBase
|
||||
*/
|
||||
class FieldUnitTest extends ViewUnitTestBase {
|
||||
|
||||
public static $modules = array('user');
|
||||
|
||||
/**
|
||||
* Views used by this test.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $testViews = array('test_view', 'test_field_tokens', 'test_field_output');
|
||||
|
||||
/**
|
||||
* Map column names.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $columnMap = array(
|
||||
'views_test_data_name' => 'name',
|
||||
);
|
||||
|
||||
/**
|
||||
* Overrides Drupal\views\Tests\ViewTestBase::viewsData().
|
||||
*/
|
||||
protected function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
$data['views_test_data']['job']['field']['id'] = 'test_field';
|
||||
$data['views_test_data']['job']['field']['click sortable'] = FALSE;
|
||||
$data['views_test_data']['id']['field']['click sortable'] = TRUE;
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the render function is called.
|
||||
*/
|
||||
public function testRender() {
|
||||
/** @var \Drupal\Core\Render\RendererInterface $renderer */
|
||||
$renderer = \Drupal::service('renderer');
|
||||
|
||||
$view = Views::getView('test_field_tokens');
|
||||
$this->executeView($view);
|
||||
|
||||
$random_text = $this->randomMachineName();
|
||||
$view->field['job']->setTestValue($random_text);
|
||||
$output = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['job']->theme($view->result[0]);
|
||||
});
|
||||
$this->assertEqual($output, $random_text, 'Make sure the render method rendered the manual set value.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests all things related to the query.
|
||||
*/
|
||||
public function testQuery() {
|
||||
// Tests adding additional fields to the query.
|
||||
$view = Views::getView('test_view');
|
||||
$view->initHandlers();
|
||||
|
||||
$id_field = $view->field['id'];
|
||||
$id_field->additional_fields['job'] = 'job';
|
||||
// Choose also a field alias key which doesn't match to the table field.
|
||||
$id_field->additional_fields['created_test'] = array('table' => 'views_test_data', 'field' => 'created');
|
||||
$view->build();
|
||||
|
||||
// Make sure the field aliases have the expected value.
|
||||
$this->assertEqual($id_field->aliases['job'], 'views_test_data_job');
|
||||
$this->assertEqual($id_field->aliases['created_test'], 'views_test_data_created');
|
||||
|
||||
$this->executeView($view);
|
||||
// Tests the getValue method with and without a field aliases.
|
||||
foreach ($this->dataSet() as $key => $row) {
|
||||
$id = $key + 1;
|
||||
$result = $view->result[$key];
|
||||
$this->assertEqual($id_field->getValue($result), $id);
|
||||
$this->assertEqual($id_field->getValue($result, 'job'), $row['job']);
|
||||
$this->assertEqual($id_field->getValue($result, 'created_test'), $row['created']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that a string is part of another string.
|
||||
*
|
||||
* @param string $haystack
|
||||
* The value to search in.
|
||||
* @param string $needle
|
||||
* The value to search for.
|
||||
* @param string $message
|
||||
* (optional) A message to display with the assertion. Do not translate
|
||||
* messages: use format_string() to embed variables in the message text, not
|
||||
* t(). If left blank, a default message will be displayed.
|
||||
* @param string $group
|
||||
* (optional) The group this message is in, which is displayed in a column
|
||||
* in test output. Use 'Debug' to indicate this is debugging output. Do not
|
||||
* translate this string. Defaults to 'Other'; most tests do not override
|
||||
* this default.
|
||||
*
|
||||
* @return bool
|
||||
* TRUE if the assertion succeeded, FALSE otherwise.
|
||||
*/
|
||||
protected function assertSubString($haystack, $needle, $message = '', $group = 'Other') {
|
||||
return $this->assertTrue(strpos($haystack, $needle) !== FALSE, $message, $group);
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that a string is not part of another string.
|
||||
*
|
||||
* @param string $haystack
|
||||
* The value to search in.
|
||||
* @param string $needle
|
||||
* The value to search for.
|
||||
* @param string $message
|
||||
* (optional) A message to display with the assertion. Do not translate
|
||||
* messages: use format_string() to embed variables in the message text, not
|
||||
* t(). If left blank, a default message will be displayed.
|
||||
* @param string $group
|
||||
* (optional) The group this message is in, which is displayed in a column
|
||||
* in test output. Use 'Debug' to indicate this is debugging output. Do not
|
||||
* translate this string. Defaults to 'Other'; most tests do not override
|
||||
* this default.
|
||||
*
|
||||
* @return bool
|
||||
* TRUE if the assertion succeeded, FALSE otherwise.
|
||||
*/
|
||||
protected function assertNotSubString($haystack, $needle, $message = '', $group = 'Other') {
|
||||
return $this->assertTrue(strpos($haystack, $needle) === FALSE, $message, $group);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests general rewriting of the output.
|
||||
*/
|
||||
public function testRewrite() {
|
||||
/** @var \Drupal\Core\Render\RendererInterface $renderer */
|
||||
$renderer = \Drupal::service('renderer');
|
||||
|
||||
$view = Views::getView('test_view');
|
||||
$view->initHandlers();
|
||||
$this->executeView($view);
|
||||
$row = $view->result[0];
|
||||
$id_field = $view->field['id'];
|
||||
|
||||
// Don't check the rewrite checkbox, so the text shouldn't appear.
|
||||
$id_field->options['alter']['text'] = $random_text = $this->randomMachineName();
|
||||
$output = $renderer->executeInRenderContext(new RenderContext(), function () use ($id_field, $row) {
|
||||
return $id_field->theme($row);
|
||||
});
|
||||
$this->assertNotSubString($output, $random_text);
|
||||
|
||||
$id_field->options['alter']['alter_text'] = TRUE;
|
||||
$output = $renderer->executeInRenderContext(new RenderContext(), function () use ($id_field, $row) {
|
||||
return $id_field->theme($row);
|
||||
});
|
||||
$this->assertSubString($output, $random_text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the field tokens, row level and field level.
|
||||
*/
|
||||
public function testFieldTokens() {
|
||||
/** @var \Drupal\Core\Render\RendererInterface $renderer */
|
||||
$renderer = \Drupal::service('renderer');
|
||||
|
||||
$view = Views::getView('test_field_tokens');
|
||||
$this->executeView($view);
|
||||
$name_field_0 = $view->field['name'];
|
||||
$name_field_1 = $view->field['name_1'];
|
||||
$name_field_2 = $view->field['name_2'];
|
||||
$row = $view->result[0];
|
||||
|
||||
$name_field_0->options['alter']['alter_text'] = TRUE;
|
||||
$name_field_0->options['alter']['text'] = '{{ name }}';
|
||||
|
||||
$name_field_1->options['alter']['alter_text'] = TRUE;
|
||||
$name_field_1->options['alter']['text'] = '{{ name_1 }} {{ name }}';
|
||||
|
||||
$name_field_2->options['alter']['alter_text'] = TRUE;
|
||||
$name_field_2->options['alter']['text'] = '{% if name_2|length > 3 %}{{ name_2 }} {{ name_1 }}{% endif %}';
|
||||
|
||||
foreach ($view->result as $row) {
|
||||
$expected_output_0 = $row->views_test_data_name;
|
||||
$expected_output_1 = "$row->views_test_data_name $row->views_test_data_name";
|
||||
$expected_output_2 = "$row->views_test_data_name $row->views_test_data_name $row->views_test_data_name";
|
||||
|
||||
$output = $renderer->executeInRenderContext(new RenderContext(), function () use ($name_field_0, $row) {
|
||||
return $name_field_0->advancedRender($row);
|
||||
});
|
||||
$this->assertEqual($output, $expected_output_0, format_string('Test token replacement: "!token" gave "!output"', [
|
||||
'!token' => $name_field_0->options['alter']['text'],
|
||||
'!output' => $output,
|
||||
]));
|
||||
|
||||
$output = $renderer->executeInRenderContext(new RenderContext(), function () use ($name_field_1, $row) {
|
||||
return $name_field_1->advancedRender($row);
|
||||
});
|
||||
$this->assertEqual($output, $expected_output_1, format_string('Test token replacement: "!token" gave "!output"', [
|
||||
'!token' => $name_field_1->options['alter']['text'],
|
||||
'!output' => $output,
|
||||
]));
|
||||
|
||||
$output = $renderer->executeInRenderContext(new RenderContext(), function () use ($name_field_2, $row) {
|
||||
return $name_field_2->advancedRender($row);
|
||||
});
|
||||
$this->assertEqual($output, $expected_output_2, format_string('Test token replacement: "!token" gave "!output"', [
|
||||
'!token' => $name_field_2->options['alter']['text'],
|
||||
'!output' => $output,
|
||||
]));
|
||||
}
|
||||
|
||||
$job_field = $view->field['job'];
|
||||
$job_field->options['alter']['alter_text'] = TRUE;
|
||||
$job_field->options['alter']['text'] = '{{ job }}';
|
||||
|
||||
$random_text = $this->randomMachineName();
|
||||
$job_field->setTestValue($random_text);
|
||||
$output = $renderer->executeInRenderContext(new RenderContext(), function () use ($job_field, $row) {
|
||||
return $job_field->advancedRender($row);
|
||||
});
|
||||
$this->assertSubString($output, $random_text, format_string('Make sure the self token (!token => !value) appears in the output (!output)', [
|
||||
'!value' => $random_text,
|
||||
'!output' => $output,
|
||||
'!token' => $job_field->options['alter']['text'],
|
||||
]));
|
||||
|
||||
// Verify the token format used in D7 and earlier does not get substituted.
|
||||
$old_token = '[job]';
|
||||
$job_field->options['alter']['text'] = $old_token;
|
||||
$random_text = $this->randomMachineName();
|
||||
$job_field->setTestValue($random_text);
|
||||
$output = $renderer->executeInRenderContext(new RenderContext(), function () use ($job_field, $row) {
|
||||
return $job_field->advancedRender($row);
|
||||
});
|
||||
$this->assertEqual($output, $old_token, format_string('Make sure the old token style (!token => !value) is not changed in the output (!output)', [
|
||||
'!value' => $random_text,
|
||||
'!output' => $output,
|
||||
'!token' => $job_field->options['alter']['text'],
|
||||
]));
|
||||
|
||||
// Verify HTML tags are allowed in rewrite templates while token
|
||||
// replacements are escaped.
|
||||
$job_field->options['alter']['text'] = '<h1>{{ job }}</h1>';
|
||||
$random_text = $this->randomMachineName();
|
||||
$job_field->setTestValue('<span>' . $random_text . '</span>');
|
||||
$output = $renderer->executeInRenderContext(new RenderContext(), function () use ($job_field, $row) {
|
||||
return $job_field->advancedRender($row);
|
||||
});
|
||||
$this->assertEqual($output, '<h1><span>' . $random_text . '</span></h1>', 'Valid tags are allowed in rewrite templates and token replacements.');
|
||||
|
||||
// Verify <script> tags are correctly removed from rewritten text.
|
||||
$rewrite_template = '<script>alert("malicious");</script>';
|
||||
$job_field->options['alter']['text'] = $rewrite_template;
|
||||
$random_text = $this->randomMachineName();
|
||||
$job_field->setTestValue($random_text);
|
||||
$output = $renderer->executeInRenderContext(new RenderContext(), function () use ($job_field, $row) {
|
||||
return $job_field->advancedRender($row);
|
||||
});
|
||||
$this->assertNotSubString($output, '<script>', 'Ensure a script tag in the rewrite template is removed.');
|
||||
|
||||
$rewrite_template = '<script>{{ job }}</script>';
|
||||
$job_field->options['alter']['text'] = $rewrite_template;
|
||||
$random_text = $this->randomMachineName();
|
||||
$job_field->setTestValue($random_text);
|
||||
$output = $renderer->executeInRenderContext(new RenderContext(), function () use ($job_field, $row) {
|
||||
return $job_field->advancedRender($row);
|
||||
});
|
||||
$this->assertEqual($output, $random_text, format_string('Make sure a script tag in the template (!template) is removed, leaving only the replaced token in the output (!output)', [
|
||||
'!output' => $output,
|
||||
'!template' => $rewrite_template,
|
||||
]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the exclude setting.
|
||||
*/
|
||||
public function testExclude() {
|
||||
/** @var \Drupal\Core\Render\RendererInterface $renderer */
|
||||
$renderer = $this->container->get('renderer');
|
||||
$view = Views::getView('test_field_output');
|
||||
$view->initHandlers();
|
||||
// Hide the field and see whether it's rendered.
|
||||
$view->field['name']->options['exclude'] = TRUE;
|
||||
|
||||
$output = $view->preview();
|
||||
$output = $renderer->renderRoot($output);
|
||||
foreach ($this->dataSet() as $entry) {
|
||||
$this->assertNotSubString($output, $entry['name']);
|
||||
}
|
||||
|
||||
// Show and check the field.
|
||||
$view->field['name']->options['exclude'] = FALSE;
|
||||
|
||||
$output = $view->preview();
|
||||
$output = $renderer->renderRoot($output);
|
||||
foreach ($this->dataSet() as $entry) {
|
||||
$this->assertSubString($output, $entry['name']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests everything related to empty output of a field.
|
||||
*/
|
||||
function testEmpty() {
|
||||
$this->_testHideIfEmpty();
|
||||
$this->_testEmptyText();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the hide if empty functionality.
|
||||
*
|
||||
* This tests alters the result to get easier and less coupled results.
|
||||
*/
|
||||
function _testHideIfEmpty() {
|
||||
/** @var \Drupal\Core\Render\RendererInterface $renderer */
|
||||
$renderer = \Drupal::service('renderer');
|
||||
|
||||
$view = Views::getView('test_view');
|
||||
$view->initDisplay();
|
||||
$this->executeView($view);
|
||||
|
||||
$column_map_reversed = array_flip($this->columnMap);
|
||||
$view->row_index = 0;
|
||||
$random_name = $this->randomMachineName();
|
||||
$random_value = $this->randomMachineName();
|
||||
|
||||
// Test when results are not rewritten and empty values are not hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = FALSE;
|
||||
$view->field['name']->options['hide_empty'] = FALSE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $random_name, 'By default, a string should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "", 'By default, "" should not be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, '0', 'By default, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "0", 'By default, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are not rewritten and non-zero empty values are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $random_name, 'If hide_empty is checked, a string should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "", 'If hide_empty is checked, "" should be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, '0', 'If hide_empty is checked, but not empty_zero, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "0", 'If hide_empty is checked, but not empty_zero, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are not rewritten and all empty values are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = TRUE;
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "", 'If hide_empty and empty_zero are checked, 0 should be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "", 'If hide_empty and empty_zero are checked, "0" should be treated as empty.');
|
||||
|
||||
// Test when results are rewritten to a valid string and non-zero empty
|
||||
// results are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = FALSE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$view->field['name']->options['alter']['text'] = $random_name;
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_value;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, it should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, "" should not be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are rewritten to an empty string and non-zero empty results are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$view->field['name']->options['alter']['text'] = "";
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $random_name, 'If the rewritten string is empty, it should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "", 'If the rewritten string is empty, "" should be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, '0', 'If the rewritten string is empty, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "0", 'If the rewritten string is empty, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are rewritten to zero as a string and non-zero empty
|
||||
// results are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = FALSE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$view->field['name']->options['alter']['text'] = "0";
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, the string rewritten as 0 should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, "" rewritten as 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are rewritten to a valid string and non-zero empty
|
||||
// results are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$view->field['name']->options['alter']['text'] = $random_value;
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, it should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "", 'If either the original or rewritten string is invalid, "" should be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are rewritten to zero as a string and all empty
|
||||
// original values and results are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = TRUE;
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$view->field['name']->options['alter']['text'] = "0";
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "", 'If the rewritten string is zero, it should be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "", 'If the rewritten string is zero, "" should be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "", 'If the rewritten string is zero, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "", 'If the rewritten string is zero, "0" should not be treated as empty.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the usage of the empty text.
|
||||
*/
|
||||
function _testEmptyText() {
|
||||
/** @var \Drupal\Core\Render\RendererInterface $renderer */
|
||||
$renderer = \Drupal::service('renderer');
|
||||
|
||||
$view = Views::getView('test_view');
|
||||
$view->initDisplay();
|
||||
$this->executeView($view);
|
||||
|
||||
$column_map_reversed = array_flip($this->columnMap);
|
||||
$view->row_index = 0;
|
||||
|
||||
$empty_text = $view->field['name']->options['empty'] = $this->randomMachineName();
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $empty_text, 'If a field is empty, the empty text should be used for the output.');
|
||||
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, "0", 'If a field is 0 and empty_zero is not checked, the empty text should not be used for the output.');
|
||||
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$view->field['name']->options['empty_zero'] = TRUE;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $empty_text, 'If a field is 0 and empty_zero is checked, the empty text should be used for the output.');
|
||||
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$alter_text = $view->field['name']->options['alter']['text'] = $this->randomMachineName();
|
||||
$view->field['name']->options['hide_alter_empty'] = FALSE;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $alter_text, 'If a field is empty, some rewrite text exists, but hide_alter_empty is not checked, render the rewrite text.');
|
||||
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
|
||||
return $view->field['name']->advancedRender($view->result[0]);
|
||||
});
|
||||
$this->assertIdentical($render, $empty_text, 'If a field is empty, some rewrite text exists, and hide_alter_empty is checked, use the empty text.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests views_handler_field::isValueEmpty().
|
||||
*/
|
||||
function testIsValueEmpty() {
|
||||
$view = Views::getView('test_view');
|
||||
$view->initHandlers();
|
||||
$field = $view->field['name'];
|
||||
|
||||
$this->assertFalse($field->isValueEmpty("not empty", TRUE), 'A normal string is not empty.');
|
||||
$this->assertTrue($field->isValueEmpty("not empty", TRUE, FALSE), 'A normal string which skips empty() can be seen as empty.');
|
||||
|
||||
$this->assertTrue($field->isValueEmpty("", TRUE), '"" is considered as empty.');
|
||||
|
||||
$this->assertTrue($field->isValueEmpty('0', TRUE), '"0" is considered as empty if empty_zero is TRUE.');
|
||||
$this->assertTrue($field->isValueEmpty(0, TRUE), '0 is considered as empty if empty_zero is TRUE.');
|
||||
$this->assertFalse($field->isValueEmpty('0', FALSE), '"0" is considered not as empty if empty_zero is FALSE.');
|
||||
$this->assertFalse($field->isValueEmpty(0, FALSE), '0 is considered not as empty if empty_zero is FALSE.');
|
||||
|
||||
$this->assertTrue($field->isValueEmpty(NULL, TRUE, TRUE), 'Null should be always seen as empty, regardless of no_skip_empty.');
|
||||
$this->assertTrue($field->isValueEmpty(NULL, TRUE, FALSE), 'Null should be always seen as empty, regardless of no_skip_empty.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests whether the filters are click sortable as expected.
|
||||
*/
|
||||
public function testClickSortable() {
|
||||
// Test that clickSortable is TRUE by default.
|
||||
$item = array(
|
||||
'table' => 'views_test_data',
|
||||
'field' => 'name',
|
||||
);
|
||||
$plugin = $this->container->get('plugin.manager.views.field')->getHandler($item);
|
||||
$this->assertTrue($plugin->clickSortable(), 'TRUE as a default value is correct.');
|
||||
|
||||
// Test that clickSortable is TRUE by when set TRUE in the data.
|
||||
$item['field'] = 'id';
|
||||
$plugin = $this->container->get('plugin.manager.views.field')->getHandler($item);
|
||||
$this->assertTrue($plugin->clickSortable(), 'TRUE as a views data value is correct.');
|
||||
|
||||
// Test that clickSortable is FALSE by when set FALSE in the data.
|
||||
$item['field'] = 'job';
|
||||
$plugin = $this->container->get('plugin.manager.views.field')->getHandler($item);
|
||||
$this->assertFalse($plugin->clickSortable(), 'FALSE as a views data value is correct.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the trimText method.
|
||||
*/
|
||||
public function testTrimText() {
|
||||
// Test unicode. See https://www.drupal.org/node/513396#comment-2839416.
|
||||
$text = array(
|
||||
'Tuy nhiên, những hi vọng',
|
||||
'Giả sử chúng tôi có 3 Apple',
|
||||
'siêu nhỏ này là bộ xử lý',
|
||||
'Di động của nhà sản xuất Phần Lan',
|
||||
'khoảng cách từ đại lí đến',
|
||||
'của hãng bao gồm ba dòng',
|
||||
'сд асд асд ас',
|
||||
'асд асд асд ас'
|
||||
);
|
||||
// Just test maxlength without word boundary.
|
||||
$alter = array(
|
||||
'max_length' => 10,
|
||||
);
|
||||
$expect = array(
|
||||
'Tuy nhiên,',
|
||||
'Giả sử chú',
|
||||
'siêu nhỏ n',
|
||||
'Di động củ',
|
||||
'khoảng các',
|
||||
'của hãng b',
|
||||
'сд асд асд',
|
||||
'асд асд ас',
|
||||
);
|
||||
|
||||
foreach ($text as $key => $line) {
|
||||
$result_text = FieldPluginBase::trimText($alter, $line);
|
||||
$this->assertEqual($result_text, $expect[$key]);
|
||||
}
|
||||
|
||||
// Test also word_boundary
|
||||
$alter['word_boundary'] = TRUE;
|
||||
$expect = array(
|
||||
'Tuy nhiên',
|
||||
'Giả sử',
|
||||
'siêu nhỏ',
|
||||
'Di động',
|
||||
'khoảng',
|
||||
'của hãng',
|
||||
'сд асд',
|
||||
'асд асд',
|
||||
);
|
||||
|
||||
foreach ($text as $key => $line) {
|
||||
$result_text = FieldPluginBase::trimText($alter, $line);
|
||||
$this->assertEqual($result_text, $expect[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,122 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\views\Tests\Plugin\DisplayUnitTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\views\Tests\Plugin;
|
||||
|
||||
use Drupal\views\Views;
|
||||
use Drupal\views\Tests\ViewUnitTestBase;
|
||||
use Drupal\views\Plugin\views\style\StylePluginBase;
|
||||
use Drupal\views\Plugin\views\access\AccessPluginBase;
|
||||
use Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase;
|
||||
use Drupal\views\Plugin\views\pager\PagerPluginBase;
|
||||
use Drupal\views\Plugin\views\query\QueryPluginBase;
|
||||
use Drupal\views\Plugin\views\cache\CachePluginBase;
|
||||
use Drupal\views\Plugin\views\row\RowPluginBase;
|
||||
|
||||
/**
|
||||
* Drupal unit tests for the DisplayPluginBase class.
|
||||
*
|
||||
* @group views
|
||||
*/
|
||||
class DisplayUnitTest extends ViewUnitTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('block', 'node', 'field', 'user');
|
||||
|
||||
/**
|
||||
* Views plugin types to test.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $pluginTypes = array(
|
||||
'access',
|
||||
'cache',
|
||||
'query',
|
||||
'exposed_form',
|
||||
'pager',
|
||||
'style',
|
||||
'row',
|
||||
);
|
||||
|
||||
/**
|
||||
* Views handler types to test.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $handlerTypes = array(
|
||||
'fields',
|
||||
'sorts',
|
||||
);
|
||||
|
||||
/**
|
||||
* Views used by this test.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $testViews = array('test_display_defaults');
|
||||
|
||||
/**
|
||||
* Tests the default display options.
|
||||
*/
|
||||
public function testDefaultOptions() {
|
||||
// Save the view.
|
||||
$view = Views::getView('test_display_defaults');
|
||||
$view->mergeDefaults();
|
||||
$view->save();
|
||||
|
||||
// Reload to get saved storage values.
|
||||
$view = Views::getView('test_display_defaults');
|
||||
$view->initDisplay();
|
||||
$display_data = $view->storage->get('display');
|
||||
|
||||
foreach ($view->displayHandlers as $id => $display) {
|
||||
// Test the view plugin options against the storage.
|
||||
foreach ($this->pluginTypes as $type) {
|
||||
$options = $display->getOption($type);
|
||||
$this->assertIdentical($display_data[$id]['display_options'][$type]['options'], $options['options']);
|
||||
}
|
||||
// Test the view handler options against the storage.
|
||||
foreach ($this->handlerTypes as $type) {
|
||||
$options = $display->getOption($type);
|
||||
$this->assertIdentical($display_data[$id]['display_options'][$type], $options);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the \Drupal\views\Plugin\views\display\DisplayPluginBase::getPlugin() method.
|
||||
*/
|
||||
public function testGetPlugin() {
|
||||
$view = Views::getView('test_display_defaults');
|
||||
$view->initDisplay();
|
||||
$display_handler = $view->display_handler;
|
||||
|
||||
$this->assertTrue($display_handler->getPlugin('access') instanceof AccessPluginBase, 'An access plugin instance was returned.');
|
||||
$this->assertTrue($display_handler->getPlugin('cache') instanceof CachePluginBase, 'A cache plugin instance was returned.');
|
||||
$this->assertTrue($display_handler->getPlugin('exposed_form') instanceof ExposedFormPluginBase, 'An exposed_form plugin instance was returned.');
|
||||
$this->assertTrue($display_handler->getPlugin('pager') instanceof PagerPluginBase, 'A pager plugin instance was returned.');
|
||||
$this->assertTrue($display_handler->getPlugin('query') instanceof QueryPluginBase, 'A query plugin instance was returned.');
|
||||
$this->assertTrue($display_handler->getPlugin('row') instanceof RowPluginBase, 'A row plugin instance was returned.');
|
||||
$this->assertTrue($display_handler->getPlugin('style') instanceof StylePluginBase, 'A style plugin instance was returned.');
|
||||
// Test that nothing is returned when an invalid type is requested.
|
||||
$this->assertNull($display_handler->getPlugin('invalid'), 'NULL was returned for an invalid instance');
|
||||
// Test that nothing was returned for an instance with no 'type' in options.
|
||||
unset($display_handler->options['access']);
|
||||
$this->assertNull($display_handler->getPlugin('access'), 'NULL was returned for a plugin type with no "type" option');
|
||||
|
||||
// Get a plugin twice, and make sure the same instance is returned.
|
||||
$view->destroy();
|
||||
$view->initDisplay();
|
||||
$first = spl_object_hash($display_handler->getPlugin('style'));
|
||||
$second = spl_object_hash($display_handler->getPlugin('style'));
|
||||
$this->assertIdentical($first, $second, 'The same plugin instance was returned.');
|
||||
}
|
||||
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\views\Tests\Plugin\PluginUnitTestBase.
|
||||
*/
|
||||
|
||||
namespace Drupal\views\Tests\Plugin;
|
||||
|
||||
use Drupal\views\Tests\ViewUnitTestBase;
|
||||
|
||||
/**
|
||||
* Base test class for views plugin unit tests.
|
||||
*/
|
||||
abstract class PluginUnitTestBase extends ViewUnitTestBase {
|
||||
|
||||
}
|
|
@ -1,153 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\views\Tests\ViewUnitTestBase.
|
||||
*/
|
||||
|
||||
namespace Drupal\views\Tests;
|
||||
|
||||
use Drupal\Core\Database\Query\SelectInterface;
|
||||
use Drupal\views\ViewExecutable;
|
||||
use Drupal\views\ViewsBundle;
|
||||
use Drupal\simpletest\KernelTestBase;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
/**
|
||||
* Defines a base class for Views unit testing.
|
||||
*
|
||||
* Use this test class for unit tests of Views functionality. If a test
|
||||
* requires the full web test environment provided by WebTestBase, extend
|
||||
* ViewTestBase instead.
|
||||
*
|
||||
* @see \Drupal\views\Tests\ViewTestBase
|
||||
*/
|
||||
abstract class ViewUnitTestBase extends KernelTestBase {
|
||||
|
||||
use ViewResultAssertionTrait;
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('system', 'views', 'views_test_config', 'views_test_data', 'user');
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @param bool $import_test_views
|
||||
* Should the views specififed on the test class be imported. If you need
|
||||
* to setup some additional stuff, like fields, you need to call false and
|
||||
* then call createTestViews for your own.
|
||||
*/
|
||||
protected function setUp($import_test_views = TRUE) {
|
||||
parent::setUp();
|
||||
|
||||
$this->installSchema('system', array('router', 'sequences'));
|
||||
$this->setUpFixtures();
|
||||
|
||||
if ($import_test_views) {
|
||||
ViewTestData::createTestViews(get_class($this), array('views_test_config'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up the configuration and schema of views and views_test_data modules.
|
||||
*
|
||||
* Because the schema of views_test_data.module is dependent on the test
|
||||
* using it, it cannot be enabled normally.
|
||||
*/
|
||||
protected function setUpFixtures() {
|
||||
// First install the system module. Many Views have Page displays have menu
|
||||
// links, and for those to work, the system menus must already be present.
|
||||
$this->installConfig(array('system'));
|
||||
|
||||
// Define the schema and views data variable before enabling the test module.
|
||||
\Drupal::state()->set('views_test_data_schema', $this->schemaDefinition());
|
||||
\Drupal::state()->set('views_test_data_views_data', $this->viewsData());
|
||||
|
||||
$this->installConfig(array('views', 'views_test_config', 'views_test_data'));
|
||||
foreach ($this->schemaDefinition() as $table => $schema) {
|
||||
$this->installSchema('views_test_data', $table);
|
||||
}
|
||||
|
||||
\Drupal::service('router.builder')->rebuild();
|
||||
|
||||
// Load the test dataset.
|
||||
$data_set = $this->dataSet();
|
||||
$query = db_insert('views_test_data')
|
||||
->fields(array_keys($data_set[0]));
|
||||
foreach ($data_set as $record) {
|
||||
$query->values($record);
|
||||
}
|
||||
$query->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Orders a nested array containing a result set based on a given column.
|
||||
*
|
||||
* @param array $result_set
|
||||
* An array of rows from a result set, with each row as an associative
|
||||
* array keyed by column name.
|
||||
* @param string $column
|
||||
* The column name by which to sort the result set.
|
||||
* @param bool $reverse
|
||||
* (optional) Boolean indicating whether to sort the result set in reverse
|
||||
* order. Defaults to FALSE.
|
||||
*
|
||||
* @return array
|
||||
* The sorted result set.
|
||||
*/
|
||||
protected function orderResultSet($result_set, $column, $reverse = FALSE) {
|
||||
$order = $reverse ? -1 : 1;
|
||||
usort($result_set, function ($a, $b) use ($column, $order) {
|
||||
if ($a[$column] == $b[$column]) {
|
||||
return 0;
|
||||
}
|
||||
return $order * (($a[$column] < $b[$column]) ? -1 : 1);
|
||||
});
|
||||
return $result_set;
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes a view with debugging.
|
||||
*
|
||||
* @param \Drupal\views\ViewExecutable $view
|
||||
* The view object.
|
||||
* @param array $args
|
||||
* (optional) An array of the view arguments to use for the view.
|
||||
*/
|
||||
protected function executeView($view, array $args = array()) {
|
||||
$view->setDisplay();
|
||||
$view->preExecute($args);
|
||||
$view->execute();
|
||||
$verbose_message = '<pre>Executed view: ' . ((string) $view->build_info['query']). '</pre>';
|
||||
if ($view->build_info['query'] instanceof SelectInterface) {
|
||||
$verbose_message .= '<pre>Arguments: ' . print_r($view->build_info['query']->getArguments(), TRUE) . '</pre>';
|
||||
}
|
||||
$this->verbose($verbose_message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the schema definition.
|
||||
*/
|
||||
protected function schemaDefinition() {
|
||||
return ViewTestData::schemaDefinition();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the views data definition.
|
||||
*/
|
||||
protected function viewsData() {
|
||||
return ViewTestData::viewsData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a very simple test dataset.
|
||||
*/
|
||||
protected function dataSet() {
|
||||
return ViewTestData::dataSet();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,79 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\views\Tests\Wizard\WizardPluginBaseUnitTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\views\Tests\Wizard;
|
||||
|
||||
use Drupal\Core\Form\FormState;
|
||||
use Drupal\language\Entity\ConfigurableLanguage;
|
||||
use Drupal\views\Tests\ViewUnitTestBase;
|
||||
use Drupal\views_ui\ViewUI;
|
||||
|
||||
/**
|
||||
* Tests the wizard base plugin class.
|
||||
*
|
||||
* @group views
|
||||
* @see \Drupal\views\Plugin\views\wizard\WizardPluginBase
|
||||
*/
|
||||
class WizardPluginBaseUnitTest extends ViewUnitTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('language', 'system', 'user', 'views_ui');
|
||||
|
||||
/**
|
||||
* Contains thw wizard plugin manager.
|
||||
*
|
||||
* @var \Drupal\views\Plugin\views\wizard\WizardPluginBase
|
||||
*/
|
||||
protected $wizard;
|
||||
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
$this->installConfig(array('language'));
|
||||
|
||||
$this->wizard = $this->container->get('plugin.manager.views.wizard')->createInstance('standard:views_test_data', array());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the creating of a view.
|
||||
*
|
||||
* @see \Drupal\views\Plugin\views\wizard\WizardPluginBase
|
||||
*/
|
||||
public function testCreateView() {
|
||||
$form = array();
|
||||
$form_state = new FormState();
|
||||
$form = $this->wizard->buildForm($form, $form_state);
|
||||
$random_id = strtolower($this->randomMachineName());
|
||||
$random_label = $this->randomMachineName();
|
||||
$random_description = $this->randomMachineName();
|
||||
|
||||
// Add a new language and mark it as default.
|
||||
ConfigurableLanguage::createFromLangcode('it')->save();
|
||||
$this->config('system.site')->set('default_langcode', 'it')->save();
|
||||
|
||||
$form_state->setValues([
|
||||
'id' => $random_id,
|
||||
'label' => $random_label,
|
||||
'description' => $random_description,
|
||||
'base_table' => 'views_test_data',
|
||||
]);
|
||||
|
||||
$this->wizard->validateView($form, $form_state);
|
||||
$view = $this->wizard->createView($form, $form_state);
|
||||
$this->assertTrue($view instanceof ViewUI, 'The created view is a ViewUI object.');
|
||||
$this->assertEqual($view->get('id'), $random_id);
|
||||
$this->assertEqual($view->get('label'), $random_label);
|
||||
$this->assertEqual($view->get('description'), $random_description);
|
||||
$this->assertEqual($view->get('base_table'), 'views_test_data');
|
||||
$this->assertEqual($view->get('langcode'), 'it');
|
||||
}
|
||||
}
|
||||
|
Reference in a new issue