103 lines
3.1 KiB
PHP
103 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace Drupal\FunctionalJavascriptTests\EntityReference;
|
|
|
|
use Drupal\field\Tests\EntityReference\EntityReferenceTestTrait;
|
|
use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
|
|
use Drupal\simpletest\ContentTypeCreationTrait;
|
|
use Drupal\simpletest\NodeCreationTrait;
|
|
|
|
/**
|
|
* Tests the output of entity reference autocomplete widgets.
|
|
*
|
|
* @group entity_reference
|
|
*/
|
|
class EntityReferenceAutocompleteWidgetTest extends JavascriptTestBase {
|
|
|
|
use ContentTypeCreationTrait;
|
|
use EntityReferenceTestTrait;
|
|
use NodeCreationTrait;
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public static $modules = ['node'];
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function setUp() {
|
|
parent::setUp();
|
|
|
|
// Create a Content type and two test nodes.
|
|
$this->createContentType(['type' => 'page']);
|
|
$this->createNode(['title' => 'Test page']);
|
|
$this->createNode(['title' => 'Page test']);
|
|
|
|
$user = $this->drupalCreateUser([
|
|
'access content',
|
|
'create page content',
|
|
]);
|
|
$this->drupalLogin($user);
|
|
}
|
|
|
|
/**
|
|
* Tests that the default autocomplete widget return the correct results.
|
|
*/
|
|
public function testEntityReferenceAutocompleteWidget() {
|
|
// Create an entity reference field and use the default 'CONTAINS' match
|
|
// operator.
|
|
$field_name = 'field_test';
|
|
$this->createEntityReferenceField('node', 'page', $field_name, $field_name, 'node', 'default', ['target_bundles' => ['page']]);
|
|
entity_get_form_display('node', 'page', 'default')
|
|
->setComponent($field_name, [
|
|
'type' => 'entity_reference_autocomplete',
|
|
'settings' => array(
|
|
'match_operator' => 'CONTAINS',
|
|
),
|
|
])
|
|
->save();
|
|
|
|
// Visit the node add page.
|
|
$this->drupalGet('node/add/page');
|
|
$page = $this->getSession()->getPage();
|
|
$assert_session = $this->assertSession();
|
|
|
|
$autocomplete_field = $page->findField($field_name . '[0][target_id]');
|
|
$autocomplete_field->setValue('Test');
|
|
$this->getSession()->getDriver()->keyDown($autocomplete_field->getXpath(), ' ');
|
|
$assert_session->waitOnAutocomplete();
|
|
|
|
$results = $page->findAll('css', '.ui-autocomplete li');
|
|
|
|
$this->assertCount(2, $results);
|
|
$assert_session->pageTextContains('Test page');
|
|
$assert_session->pageTextContains('Page test');
|
|
|
|
// Now switch the autocomplete widget to the 'STARTS_WITH' match operator.
|
|
entity_get_form_display('node', 'page', 'default')
|
|
->setComponent($field_name, [
|
|
'type' => 'entity_reference_autocomplete',
|
|
'settings' => array(
|
|
'match_operator' => 'STARTS_WITH',
|
|
),
|
|
])
|
|
->save();
|
|
|
|
$this->drupalGet('node/add/page');
|
|
$page = $this->getSession()->getPage();
|
|
|
|
$autocomplete_field = $page->findField($field_name . '[0][target_id]');
|
|
$autocomplete_field->setValue('Test');
|
|
$this->getSession()->getDriver()->keyDown($autocomplete_field->getXpath(), ' ');
|
|
$assert_session->waitOnAutocomplete();
|
|
|
|
$results = $page->findAll('css', '.ui-autocomplete li');
|
|
|
|
$this->assertCount(1, $results);
|
|
$assert_session->pageTextContains('Test page');
|
|
$assert_session->pageTextNotContains('Page test');
|
|
}
|
|
|
|
}
|