entity_browser-8.x-2.x-dev/tests/src/Functional/FormElementTest.php
tests/src/Functional/FormElementTest.php
<?php
namespace Drupal\Tests\entity_browser\Functional;
use Drupal\entity_browser\Element\EntityBrowserElement;
use Drupal\Tests\BrowserTestBase;
/**
* Tests the entity browser form element.
*
* @group entity_browser
*/
class FormElementTest extends BrowserTestBase {
/**
* Modules to enable.
*
* @var array
*/
protected static $modules = ['entity_browser_test', 'node', 'views'];
/**
* Test nodes.
*
* @var \Drupal\node\NodeInterface[]
*/
protected $nodes;
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->container
->get('entity_type.manager')
->getStorage('node_type')
->create([
'type' => 'page',
'name' => 'page',
])->save();
$this->nodes[] = $this->drupalCreateNode();
$this->nodes[] = $this->drupalCreateNode();
}
/**
* Tests the Entity browser form element.
*/
public function testFormElement() {
// See \Drupal\entity_browser_test\Form\FormElementTest.
$this->drupalGet('/test-element');
$this->assertSession()->linkExists('Select entities', 0, 'Trigger link found.');
$ids = [
$this->nodes[0]->getEntityTypeId() . ':' . $this->nodes[0]->id(),
$this->nodes[1]->getEntityTypeId() . ':' . $this->nodes[1]->id(),
];
$ids = implode(' ', $ids);
$this->assertSession()->hiddenFieldExists("fancy_entity_browser[entity_ids]")->setValue($ids);
$this->assertSession()->buttonExists('Submit')->press();
$expected = 'Selected entities: ' . $this->nodes[0]->label() . ', ' . $this->nodes[1]->label();
$this->assertSession()->responseContains($expected);
$default_entity = $this->nodes[0]->getEntityTypeId() . ':' . $this->nodes[0]->id();
$this->drupalGet('/test-element', ['query' => ['default_entity' => $default_entity, 'selection_mode' => EntityBrowserElement::SELECTION_MODE_EDIT]]);
$this->assertSession()->linkExists('Select entities', 0, 'Trigger link found.');
$this->assertSession()->hiddenFieldValueEquals("fancy_entity_browser[entity_ids]", $default_entity);
$hidden_field = $this->assertSession()->hiddenFieldExists("fancy_entity_browser[entity_ids]");
$new_value = 'node:' . $this->nodes[1]->id() . ' node:' . $this->nodes[0]->id();
$hidden_field->setValue($new_value);
$this->submitForm([], 'Submit');
$expected = 'Selected entities: ' . $this->nodes[1]->label() . ', ' . $this->nodes[0]->label();
$this->assertSession()->responseContains($expected);
}
}
