annotate core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Tests\search\Functional;
Chris@0 4
Chris@17 5 use Drupal\Tests\BrowserTestBase;
Chris@17 6
Chris@0 7 /**
Chris@0 8 * Tests search functionality with punctuation and HTML entities.
Chris@0 9 *
Chris@0 10 * @group search
Chris@0 11 */
Chris@17 12 class SearchNodePunctuationTest extends BrowserTestBase {
Chris@17 13
Chris@17 14 /**
Chris@17 15 * {@inheritdoc}
Chris@17 16 */
Chris@17 17 protected static $modules = ['node', 'search'];
Chris@0 18
Chris@0 19 /**
Chris@0 20 * A user with permission to use advanced search.
Chris@0 21 *
Chris@0 22 * @var \Drupal\user\UserInterface
Chris@0 23 */
Chris@0 24 public $testUser;
Chris@0 25
Chris@0 26 protected function setUp() {
Chris@0 27 parent::setUp();
Chris@17 28
Chris@17 29 $this->drupalCreateContentType(['type' => 'page', 'name' => 'Basic page']);
Chris@17 30
Chris@0 31 node_access_rebuild();
Chris@0 32 // Create a test user and log in.
Chris@0 33 $this->testUser = $this->drupalCreateUser(['access content', 'search content', 'use advanced search', 'access user profiles']);
Chris@0 34 $this->drupalLogin($this->testUser);
Chris@0 35 }
Chris@0 36
Chris@0 37 /**
Chris@0 38 * Tests that search works with punctuation and HTML entities.
Chris@0 39 */
Chris@0 40 public function testPhraseSearchPunctuation() {
Chris@0 41 $node = $this->drupalCreateNode(['body' => [['value' => "The bunny's ears were fluffy."]]]);
Chris@0 42 $node2 = $this->drupalCreateNode(['body' => [['value' => 'Dignissim Aliquam &amp; Quieligo meus natu quae quia te. Damnum&copy; erat&mdash; neo pneum. Facilisi feugiat ibidem ratis.']]]);
Chris@0 43
Chris@0 44 // Update the search index.
Chris@0 45 $this->container->get('plugin.manager.search')->createInstance('node_search')->updateIndex();
Chris@0 46 search_update_totals();
Chris@0 47
Chris@0 48 // Refresh variables after the treatment.
Chris@0 49 $this->refreshVariables();
Chris@0 50
Chris@0 51 // Submit a phrase wrapped in double quotes to include the punctuation.
Chris@0 52 $edit = ['keys' => '"bunny\'s"'];
Chris@0 53 $this->drupalPostForm('search/node', $edit, t('Search'));
Chris@0 54 $this->assertText($node->label());
Chris@0 55
Chris@0 56 // Check if the author is linked correctly to the user profile page.
Chris@18 57 $username = $node->getOwner()->getAccountName();
Chris@0 58 $this->assertLink($username);
Chris@0 59
Chris@0 60 // Search for "&" and verify entities are not broken up in the output.
Chris@0 61 $edit = ['keys' => '&'];
Chris@0 62 $this->drupalPostForm('search/node', $edit, t('Search'));
Chris@0 63 $this->assertNoRaw('<strong>&</strong>amp;');
Chris@0 64 $this->assertText('You must include at least one keyword');
Chris@0 65
Chris@0 66 $edit = ['keys' => '&amp;'];
Chris@0 67 $this->drupalPostForm('search/node', $edit, t('Search'));
Chris@0 68 $this->assertNoRaw('<strong>&</strong>amp;');
Chris@0 69 $this->assertText('You must include at least one keyword');
Chris@0 70 }
Chris@0 71
Chris@0 72 }