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