3 namespace Drupal\Tests\views\Kernel\Handler;
5 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
6 use Drupal\views\Views;
9 * Tests the core Drupal\views\Plugin\views\filter\BooleanOperatorString
13 * @see \Drupal\views\Plugin\views\filter\BooleanOperatorString
15 class FilterBooleanOperatorStringTest extends ViewsKernelTestBase {
18 * The modules to enable for this test.
22 public static $modules = ['system'];
25 * Views used by this test.
29 public static $testViews = ['test_view'];
36 protected $columnMap = [
37 'views_test_data_id' => 'id',
43 protected function schemaDefinition() {
44 $schema = parent::schemaDefinition();
46 $schema['views_test_data']['fields']['status'] = [
47 'description' => 'The status of this record',
60 protected function viewsData() {
61 $views_data = parent::viewsData();
63 $views_data['views_test_data']['status']['filter']['id'] = 'boolean_string';
71 protected function dataSet() {
72 $data = parent::dataSet();
74 foreach ($data as &$row) {
76 $row['status'] = 'Enabled';
87 * Tests the BooleanOperatorString filter.
89 public function testFilterBooleanOperatorString() {
90 $view = Views::getView('test_view');
93 // Add a the status boolean filter.
94 $view->displayHandlers->get('default')->overrideOption('filters', [
98 'table' => 'views_test_data',
102 $this->executeView($view);
109 $this->assertEqual(2, count($view->result));
110 $this->assertIdenticalResultset($view, $expected_result, $this->columnMap);
115 // Add the status boolean filter.
116 $view->displayHandlers->get('default')->overrideOption('filters', [
120 'table' => 'views_test_data',
124 $this->executeView($view);
132 $this->assertEqual(3, count($view->result));
133 $this->assertIdenticalResultset($view, $expected_result, $this->columnMap);
137 * Tests the Boolean filter with grouped exposed form enabled.
139 public function testFilterGroupedExposed() {
140 $filters = $this->getGroupedExposedFilters();
141 $view = Views::getView('test_view');
143 $view->setExposedInput(['status' => 1]);
145 $view->displayHandlers->get('default')->overrideOption('filters', $filters);
147 $this->executeView($view);
155 $this->assertEqual(3, count($view->result));
156 $this->assertIdenticalResultset($view, $expected_result, $this->columnMap);
159 $view->setExposedInput(['status' => 2]);
161 $view->displayHandlers->get('default')->overrideOption('filters', $filters);
163 $this->executeView($view);
170 $this->assertEqual(2, count($view->result));
171 $this->assertIdenticalResultset($view, $expected_result, $this->columnMap);
175 * Provides grouped exposed filter configuration.
178 * Returns the filter configuration for exposed filters.
180 protected function getGroupedExposedFilters() {
184 'table' => 'views_test_data',
186 'relationship' => 'none',
189 'operator' => 'status_op',
191 'identifier' => 'status',
193 'is_grouped' => TRUE,
196 'identifier' => 'status',
197 'default_group' => 'All',
205 'title' => 'Blocked',