Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\search\Tests;
|
Chris@0
|
4
|
Chris@0
|
5 /**
|
Chris@0
|
6 * Verifies that a form embedded in search results works.
|
Chris@0
|
7 *
|
Chris@0
|
8 * @group search
|
Chris@0
|
9 */
|
Chris@0
|
10 class SearchEmbedFormTest extends SearchTestBase {
|
Chris@0
|
11
|
Chris@0
|
12 /**
|
Chris@0
|
13 * Modules to enable.
|
Chris@0
|
14 *
|
Chris@0
|
15 * @var array
|
Chris@0
|
16 */
|
Chris@0
|
17 public static $modules = ['search_embedded_form'];
|
Chris@0
|
18
|
Chris@0
|
19 /**
|
Chris@0
|
20 * Node used for testing.
|
Chris@0
|
21 *
|
Chris@0
|
22 * @var \Drupal\node\NodeInterface
|
Chris@0
|
23 */
|
Chris@0
|
24 protected $node;
|
Chris@0
|
25
|
Chris@0
|
26 /**
|
Chris@0
|
27 * Count of how many times the form has been submitted.
|
Chris@0
|
28 *
|
Chris@0
|
29 * @var int
|
Chris@0
|
30 */
|
Chris@0
|
31 protected $submitCount = 0;
|
Chris@0
|
32
|
Chris@0
|
33 protected function setUp() {
|
Chris@0
|
34 parent::setUp();
|
Chris@0
|
35
|
Chris@0
|
36 // Create a user and a node, and update the search index.
|
Chris@0
|
37 $test_user = $this->drupalCreateUser(['access content', 'search content', 'administer nodes']);
|
Chris@0
|
38 $this->drupalLogin($test_user);
|
Chris@0
|
39
|
Chris@0
|
40 $this->node = $this->drupalCreateNode();
|
Chris@0
|
41
|
Chris@0
|
42 $this->container->get('plugin.manager.search')->createInstance('node_search')->updateIndex();
|
Chris@0
|
43 search_update_totals();
|
Chris@0
|
44
|
Chris@0
|
45 // Set up a dummy initial count of times the form has been submitted.
|
Chris@0
|
46 $this->submitCount = \Drupal::state()->get('search_embedded_form.submit_count');
|
Chris@0
|
47 $this->refreshVariables();
|
Chris@0
|
48 }
|
Chris@0
|
49
|
Chris@0
|
50 /**
|
Chris@0
|
51 * Tests that the embedded form appears and can be submitted.
|
Chris@0
|
52 */
|
Chris@0
|
53 public function testEmbeddedForm() {
|
Chris@0
|
54 // First verify we can submit the form from the module's page.
|
Chris@0
|
55 $this->drupalPostForm('search_embedded_form',
|
Chris@0
|
56 ['name' => 'John'],
|
Chris@0
|
57 t('Send away'));
|
Chris@0
|
58 $this->assertText(t('Test form was submitted'), 'Form message appears');
|
Chris@0
|
59 $count = \Drupal::state()->get('search_embedded_form.submit_count');
|
Chris@0
|
60 $this->assertEqual($this->submitCount + 1, $count, 'Form submission count is correct');
|
Chris@0
|
61 $this->submitCount = $count;
|
Chris@0
|
62
|
Chris@0
|
63 // Now verify that we can see and submit the form from the search results.
|
Chris@0
|
64 $this->drupalGet('search/node', ['query' => ['keys' => $this->node->label()]]);
|
Chris@0
|
65 $this->assertText(t('Your name'), 'Form is visible');
|
Chris@0
|
66 $this->drupalPostForm(NULL,
|
Chris@0
|
67 ['name' => 'John'],
|
Chris@0
|
68 t('Send away'));
|
Chris@0
|
69 $this->assertText(t('Test form was submitted'), 'Form message appears');
|
Chris@0
|
70 $count = \Drupal::state()->get('search_embedded_form.submit_count');
|
Chris@0
|
71 $this->assertEqual($this->submitCount + 1, $count, 'Form submission count is correct');
|
Chris@0
|
72 $this->submitCount = $count;
|
Chris@0
|
73
|
Chris@0
|
74 // Now verify that if we submit the search form, it doesn't count as
|
Chris@0
|
75 // our form being submitted.
|
Chris@0
|
76 $this->drupalPostForm('search',
|
Chris@0
|
77 ['keys' => 'foo'],
|
Chris@0
|
78 t('Search'));
|
Chris@0
|
79 $this->assertNoText(t('Test form was submitted'), 'Form message does not appear');
|
Chris@0
|
80 $count = \Drupal::state()->get('search_embedded_form.submit_count');
|
Chris@0
|
81 $this->assertEqual($this->submitCount, $count, 'Form submission count is correct');
|
Chris@0
|
82 $this->submitCount = $count;
|
Chris@0
|
83 }
|
Chris@0
|
84
|
Chris@0
|
85 }
|