Mercurial > hg > isophonics-drupal-site
diff core/tests/Drupal/FunctionalJavascriptTests/EntityReference/EntityReferenceAutocompleteWidgetTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/tests/Drupal/FunctionalJavascriptTests/EntityReference/EntityReferenceAutocompleteWidgetTest.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,102 @@ +<?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'); + } + +}