installEntitySchema('node'); } /** * Tests the exposed form markup. */ public function testExposedFormRender() { $view = Views::getView('test_exposed_form_buttons'); $this->executeView($view); $exposed_form = $view->display_handler->getPlugin('exposed_form'); $output = $exposed_form->renderExposedForm(); $this->setRawContent(\Drupal::service('renderer')->renderRoot($output)); $this->assertFieldByXpath('//form/@id', Html::cleanCssIdentifier('views-exposed-form-' . $view->storage->id() . '-' . $view->current_display), 'Expected form ID found.'); $view->setDisplay('page_1'); $expected_action = $view->display_handler->getUrlInfo()->toString(); $this->assertFieldByXPath('//form/@action', $expected_action, 'The expected value for the action attribute was found.'); // Make sure the description is shown. $result = $this->xpath('//form//div[contains(@id, :id) and normalize-space(text())=:description]', [':id' => 'edit-type--description', ':description' => t('Exposed description')]); $this->assertEqual(count($result), 1, 'Filter description was found.'); } /** * Tests the exposed form raw input. */ public function testExposedFormRawInput() { $node_type = NodeType::create(['type' => 'article']); $node_type->save(); $view = Views::getView('test_exposed_form_buttons'); $view->setDisplay(); $view->displayHandlers->get('default')->overrideOption('filters', [ 'type' => [ 'exposed' => TRUE, 'field' => 'type', 'id' => 'type', 'table' => 'node_field_data', 'plugin_id' => 'in_operator', 'entity_type' => 'node', 'entity_field' => 'type', 'expose' => [ 'identifier' => 'type', 'label' => 'Content: Type', 'operator_id' => 'type_op', 'reduce' => FALSE, 'multiple' => FALSE, ], ], 'type_with_default_value' => [ 'exposed' => TRUE, 'field' => 'type', 'id' => 'type_with_default_value', 'table' => 'node_field_data', 'plugin_id' => 'in_operator', 'entity_type' => 'node', 'entity_field' => 'type', 'value' => ['article', 'article'], 'expose' => [ 'identifier' => 'type_with_default_value', 'label' => 'Content: Type with value', 'operator_id' => 'type_op', 'reduce' => FALSE, 'multiple' => FALSE, ], ], 'multiple_types' => [ 'exposed' => TRUE, 'field' => 'type', 'id' => 'multiple_types', 'table' => 'node_field_data', 'plugin_id' => 'in_operator', 'entity_type' => 'node', 'entity_field' => 'type', 'expose' => [ 'identifier' => 'multiple_types', 'label' => 'Content: Type (multiple)', 'operator_id' => 'type_op', 'reduce' => FALSE, 'multiple' => TRUE, ], ], 'multiple_types_with_default_value' => [ 'exposed' => TRUE, 'field' => 'type', 'id' => 'multiple_types_with_default_value', 'table' => 'node_field_data', 'plugin_id' => 'in_operator', 'entity_type' => 'node', 'entity_field' => 'type', 'value' => ['article', 'article'], 'expose' => [ 'identifier' => 'multiple_types_with_default_value', 'label' => 'Content: Type with default value (multiple)', 'operator_id' => 'type_op', 'reduce' => FALSE, 'multiple' => TRUE, ], ], ]); $view->save(); $this->executeView($view); $expected = [ 'type' => 'All', 'type_with_default_value' => 'article', 'multiple_types_with_default_value' => ['article'], ]; $this->assertSame($view->exposed_raw_input, $expected); } }