Mercurial > hg > isophonics-drupal-site
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\FunctionalJavascriptTests\EntityReference; | |
4 | |
5 use Drupal\field\Tests\EntityReference\EntityReferenceTestTrait; | |
6 use Drupal\FunctionalJavascriptTests\JavascriptTestBase; | |
7 use Drupal\simpletest\ContentTypeCreationTrait; | |
8 use Drupal\simpletest\NodeCreationTrait; | |
9 | |
10 /** | |
11 * Tests the output of entity reference autocomplete widgets. | |
12 * | |
13 * @group entity_reference | |
14 */ | |
15 class EntityReferenceAutocompleteWidgetTest extends JavascriptTestBase { | |
16 | |
17 use ContentTypeCreationTrait; | |
18 use EntityReferenceTestTrait; | |
19 use NodeCreationTrait; | |
20 | |
21 /** | |
22 * {@inheritdoc} | |
23 */ | |
24 public static $modules = ['node']; | |
25 | |
26 /** | |
27 * {@inheritdoc} | |
28 */ | |
29 protected function setUp() { | |
30 parent::setUp(); | |
31 | |
32 // Create a Content type and two test nodes. | |
33 $this->createContentType(['type' => 'page']); | |
34 $this->createNode(['title' => 'Test page']); | |
35 $this->createNode(['title' => 'Page test']); | |
36 | |
37 $user = $this->drupalCreateUser([ | |
38 'access content', | |
39 'create page content', | |
40 ]); | |
41 $this->drupalLogin($user); | |
42 } | |
43 | |
44 /** | |
45 * Tests that the default autocomplete widget return the correct results. | |
46 */ | |
47 public function testEntityReferenceAutocompleteWidget() { | |
48 // Create an entity reference field and use the default 'CONTAINS' match | |
49 // operator. | |
50 $field_name = 'field_test'; | |
51 $this->createEntityReferenceField('node', 'page', $field_name, $field_name, 'node', 'default', ['target_bundles' => ['page']]); | |
52 entity_get_form_display('node', 'page', 'default') | |
53 ->setComponent($field_name, [ | |
54 'type' => 'entity_reference_autocomplete', | |
55 'settings' => [ | |
56 'match_operator' => 'CONTAINS', | |
57 ], | |
58 ]) | |
59 ->save(); | |
60 | |
61 // Visit the node add page. | |
62 $this->drupalGet('node/add/page'); | |
63 $page = $this->getSession()->getPage(); | |
64 $assert_session = $this->assertSession(); | |
65 | |
66 $autocomplete_field = $page->findField($field_name . '[0][target_id]'); | |
67 $autocomplete_field->setValue('Test'); | |
68 $this->getSession()->getDriver()->keyDown($autocomplete_field->getXpath(), ' '); | |
69 $assert_session->waitOnAutocomplete(); | |
70 | |
71 $results = $page->findAll('css', '.ui-autocomplete li'); | |
72 | |
73 $this->assertCount(2, $results); | |
74 $assert_session->pageTextContains('Test page'); | |
75 $assert_session->pageTextContains('Page test'); | |
76 | |
77 // Now switch the autocomplete widget to the 'STARTS_WITH' match operator. | |
78 entity_get_form_display('node', 'page', 'default') | |
79 ->setComponent($field_name, [ | |
80 'type' => 'entity_reference_autocomplete', | |
81 'settings' => [ | |
82 'match_operator' => 'STARTS_WITH', | |
83 ], | |
84 ]) | |
85 ->save(); | |
86 | |
87 $this->drupalGet('node/add/page'); | |
88 $page = $this->getSession()->getPage(); | |
89 | |
90 $autocomplete_field = $page->findField($field_name . '[0][target_id]'); | |
91 $autocomplete_field->setValue('Test'); | |
92 $this->getSession()->getDriver()->keyDown($autocomplete_field->getXpath(), ' '); | |
93 $assert_session->waitOnAutocomplete(); | |
94 | |
95 $results = $page->findAll('css', '.ui-autocomplete li'); | |
96 | |
97 $this->assertCount(1, $results); | |
98 $assert_session->pageTextContains('Test page'); | |
99 $assert_session->pageTextNotContains('Page test'); | |
100 } | |
101 | |
102 } |