Version 1
[yaffs-website] / web / core / modules / views / tests / src / Kernel / Handler / ArgumentNullTest.php
diff --git a/web/core/modules/views/tests/src/Kernel/Handler/ArgumentNullTest.php b/web/core/modules/views/tests/src/Kernel/Handler/ArgumentNullTest.php
new file mode 100644 (file)
index 0000000..933a000
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+
+namespace Drupal\Tests\views\Kernel\Handler;
+
+use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
+use Drupal\views\Views;
+
+/**
+ * Tests the core Drupal\views\Plugin\views\argument\NullArgument handler.
+ *
+ * @group views
+ */
+class ArgumentNullTest extends ViewsKernelTestBase {
+
+  /**
+   * Views used by this test.
+   *
+   * @var array
+   */
+  public static $testViews = ['test_view'];
+
+  public function viewsData() {
+    $data = parent::viewsData();
+    $data['views_test_data']['id']['argument']['id'] = 'null';
+
+    return $data;
+  }
+
+  public function testAreaText() {
+    // Test validation
+    $view = Views::getView('test_view');
+    $view->setDisplay();
+
+    // Add a null argument.
+    $view->displayHandlers->get('default')->overrideOption('arguments', [
+      'null' => [
+        'id' => 'null',
+        'table' => 'views',
+        'field' => 'null',
+      ],
+    ]);
+
+    $this->executeView($view);
+
+    // Make sure that the argument is not validated yet.
+    unset($view->argument['null']->argument_validated);
+    $this->assertTrue($view->argument['null']->validateArgument(26));
+    // test must_not_be option.
+    unset($view->argument['null']->argument_validated);
+    $view->argument['null']->options['must_not_be'] = TRUE;
+    $this->assertFalse($view->argument['null']->validateArgument(26), 'must_not_be returns FALSE, if there is an argument');
+    unset($view->argument['null']->argument_validated);
+    $this->assertTrue($view->argument['null']->validateArgument(NULL), 'must_not_be returns TRUE, if there is no argument');
+
+    // Test execution.
+    $view->destroy();
+    $view->setDisplay();
+
+    // Add a argument, which has null as handler.
+    $view->displayHandlers->get('default')->overrideOption('arguments', [
+      'id' => [
+        'id' => 'id',
+        'table' => 'views_test_data',
+        'field' => 'id',
+      ],
+    ]);
+
+    $this->executeView($view, [26]);
+
+    // The argument should be ignored, so every result should return.
+    $this->assertEqual(5, count($view->result));
+  }
+
+}