From 32cda04990c26ac0cca1efe7c4bc46013ce9985e Mon Sep 17 00:00:00 2001 From: dereine <dereine@99340.no-reply.drupal.org> Date: Sun, 16 Sep 2012 21:20:31 +0200 Subject: [PATCH] Issue #1754232 by dawehner: Add a generic testcase for the argument_default base. --- .../Tests/Plugin/ArgumentDefaultTest.php | 42 +++++++++++++++++++ .../argument_default/ArgumentDefaultTest.php | 41 ++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/argument_default/ArgumentDefaultTest.php diff --git a/lib/Drupal/views/Tests/Plugin/ArgumentDefaultTest.php b/lib/Drupal/views/Tests/Plugin/ArgumentDefaultTest.php index 954cb68a3d7c..4ef6ca77df92 100644 --- a/lib/Drupal/views/Tests/Plugin/ArgumentDefaultTest.php +++ b/lib/Drupal/views/Tests/Plugin/ArgumentDefaultTest.php @@ -7,6 +7,9 @@ namespace Drupal\views\Tests\Plugin; +use Drupal\views_test_data\Plugin\views\argument_default\ArgumentDefaultTest as ArgumentDefaultTestPlugin; + + /** * Basic test for pluggable argument default. */ @@ -42,6 +45,45 @@ protected function setUp() { $this->enableViewsTestModule(); } + /** + * Tests the argument default test plugin. + * + * @see Drupal\views_test_data\Plugin\views\argument_default\ArgumentDefaultTest + */ + public function testArgumentDefaultPlugin() { + $view = views_get_view('test_view'); + + // Add a new argument and set the test plugin for the argument_default. + $options = array( + 'default_argument_type' => 'argument_default_test', + 'default_argument_options' => array( + 'value' => 'John' + ), + 'default_action' => 'default' + ); + $id = $view->addItem('default', 'argument', 'views_test_data', 'name', $options); + $view->initHandlers(); + $plugin = $view->argument[$id]->get_plugin('argument_default'); + $this->assertTrue($plugin instanceof ArgumentDefaultTestPlugin, 'The correct argument default plugin is used.'); + + // Check that the value of the default argument is as expected. + $this->assertEqual($view->argument[$id]->get_default_argument(), 'John', 'The correct argument default value is returned.'); + // Don't pass in a value for the default argument and make sure the query + // just returns John. + $this->executeView($view); + $this->assertEqual($view->argument[$id]->get_value(), 'John', 'The correct argument value is used.'); + $expected_result = array(array('name' => 'John')); + $this->assertIdenticalResultset($view, $expected_result, array('views_test_data_name' => 'name')); + + // Pass in value as argument to be sure that not the default value is used. + $view->destroy(); + $this->executeView($view, array('George')); + $this->assertEqual($view->argument[$id]->get_value(), 'George', 'The correct argument value is used.'); + $expected_result = array(array('name' => 'George')); + $this->assertIdenticalResultset($view, $expected_result, array('views_test_data_name' => 'name')); + } + + /** * Tests the use of a default argument plugin that provides no options. */ diff --git a/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/argument_default/ArgumentDefaultTest.php b/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/argument_default/ArgumentDefaultTest.php new file mode 100644 index 000000000000..c29fc8dbebfe --- /dev/null +++ b/tests/views_test_data/lib/Drupal/views_test_data/Plugin/views/argument_default/ArgumentDefaultTest.php @@ -0,0 +1,41 @@ +<?php + +/** + * @file + * Definition of Drupal\views_test_data\Plugin\views\argument_default\ArgumentDefaultTest. + */ + +namespace Drupal\views_test_data\Plugin\views\argument_default; + +use Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase; +use Drupal\Core\Annotation\Plugin; +use Drupal\Core\Annotation\Translation; + +/** + * Defines a argument default test plugin. + * + * @Plugin( + * id = "argument_default_test", + * title = @Translation("Argument default test") + * ) + */ +class ArgumentDefaultTest extends ArgumentDefaultPluginBase { + + /** + * Overrides Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase::defineOptions(). + */ + protected function defineOptions() { + $options = parent::defineOptions(); + $options['value'] = array('default' => ''); + + return $options; + } + + /** + * Overrides Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase::get_argument(). + */ + public function get_argument() { + return $this->options['value']; + } + +} -- GitLab