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