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'); } }