123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?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' => [
- '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' => [
- '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');
- }
- }
|