Chris@0: createContentType(['type' => 'page']); Chris@0: $this->createNode(['title' => 'Test page']); Chris@0: $this->createNode(['title' => 'Page test']); Chris@0: Chris@0: $user = $this->drupalCreateUser([ Chris@0: 'access content', Chris@0: 'create page content', Chris@0: ]); Chris@0: $this->drupalLogin($user); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests that the default autocomplete widget return the correct results. Chris@0: */ Chris@0: public function testEntityReferenceAutocompleteWidget() { Chris@0: // Create an entity reference field and use the default 'CONTAINS' match Chris@0: // operator. Chris@0: $field_name = 'field_test'; Chris@0: $this->createEntityReferenceField('node', 'page', $field_name, $field_name, 'node', 'default', ['target_bundles' => ['page']]); Chris@0: entity_get_form_display('node', 'page', 'default') Chris@0: ->setComponent($field_name, [ Chris@0: 'type' => 'entity_reference_autocomplete', Chris@0: 'settings' => [ Chris@0: 'match_operator' => 'CONTAINS', Chris@0: ], Chris@0: ]) Chris@0: ->save(); Chris@0: Chris@0: // Visit the node add page. Chris@0: $this->drupalGet('node/add/page'); Chris@0: $page = $this->getSession()->getPage(); Chris@0: $assert_session = $this->assertSession(); Chris@0: Chris@17: $autocomplete_field = $assert_session->waitForElement('css', '[name="' . $field_name . '[0][target_id]"].ui-autocomplete-input'); Chris@0: $autocomplete_field->setValue('Test'); Chris@0: $this->getSession()->getDriver()->keyDown($autocomplete_field->getXpath(), ' '); Chris@0: $assert_session->waitOnAutocomplete(); Chris@0: Chris@0: $results = $page->findAll('css', '.ui-autocomplete li'); Chris@0: Chris@0: $this->assertCount(2, $results); Chris@0: $assert_session->pageTextContains('Test page'); Chris@0: $assert_session->pageTextContains('Page test'); Chris@0: Chris@0: // Now switch the autocomplete widget to the 'STARTS_WITH' match operator. Chris@0: entity_get_form_display('node', 'page', 'default') Chris@0: ->setComponent($field_name, [ Chris@0: 'type' => 'entity_reference_autocomplete', Chris@0: 'settings' => [ Chris@0: 'match_operator' => 'STARTS_WITH', Chris@0: ], Chris@0: ]) Chris@0: ->save(); Chris@0: Chris@0: $this->drupalGet('node/add/page'); Chris@0: $page = $this->getSession()->getPage(); Chris@0: Chris@17: $autocomplete_field = $assert_session->waitForElement('css', '[name="' . $field_name . '[0][target_id]"].ui-autocomplete-input'); Chris@0: $autocomplete_field->setValue('Test'); Chris@0: $this->getSession()->getDriver()->keyDown($autocomplete_field->getXpath(), ' '); Chris@0: $assert_session->waitOnAutocomplete(); Chris@0: Chris@0: $results = $page->findAll('css', '.ui-autocomplete li'); Chris@0: Chris@0: $this->assertCount(1, $results); Chris@0: $assert_session->pageTextContains('Test page'); Chris@0: $assert_session->pageTextNotContains('Page test'); Chris@0: } Chris@0: Chris@0: }