Mercurial > hg > isophonics-drupal-site
diff core/modules/search/tests/src/Functional/SearchCommentCountToggleTest.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/modules/search/tests/src/Functional/SearchCommentCountToggleTest.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,115 @@ +<?php + +namespace Drupal\Tests\search\Functional; + +use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface; +use Drupal\comment\Tests\CommentTestTrait; + +/** + * Tests that comment count display toggles properly on comment status of node. + * + * Issue 537278 + * + * - Nodes with comment status set to Open should always how comment counts + * - Nodes with comment status set to Closed should show comment counts + * only when there are comments + * - Nodes with comment status set to Hidden should never show comment counts + * + * @group search + */ +class SearchCommentCountToggleTest extends SearchTestBase { + + use CommentTestTrait; + + /** + * Modules to enable. + * + * @var array + */ + public static $modules = ['node', 'comment']; + + /** + * A user with permission to search and post comments. + * + * @var \Drupal\user\UserInterface + */ + protected $searchingUser; + + /** + * Array of nodes available to search. + * + * @var \Drupal\node\NodeInterface[] + */ + protected $searchableNodes; + + protected function setUp() { + parent::setUp(); + + // Create searching user. + $this->searchingUser = $this->drupalCreateUser(['search content', 'access content', 'access comments', 'post comments', 'skip comment approval']); + + // Log in with sufficient privileges. + $this->drupalLogin($this->searchingUser); + + // Add a comment field. + $this->addDefaultCommentField('node', 'article'); + // Create initial nodes. + $node_params = ['type' => 'article', 'body' => [['value' => 'SearchCommentToggleTestCase']]]; + + $this->searchableNodes['1 comment'] = $this->drupalCreateNode($node_params); + $this->searchableNodes['0 comments'] = $this->drupalCreateNode($node_params); + + // Create a comment array + $edit_comment = []; + $edit_comment['subject[0][value]'] = $this->randomMachineName(); + $edit_comment['comment_body[0][value]'] = $this->randomMachineName(); + + // Post comment to the test node with comment + $this->drupalPostForm('comment/reply/node/' . $this->searchableNodes['1 comment']->id() . '/comment', $edit_comment, t('Save')); + + // First update the index. This does the initial processing. + $this->container->get('plugin.manager.search')->createInstance('node_search')->updateIndex(); + + // Then, run the shutdown function. Testing is a unique case where indexing + // and searching has to happen in the same request, so running the shutdown + // function manually is needed to finish the indexing process. + search_update_totals(); + } + + /** + * Verify that comment count display toggles properly on comment status of node + */ + public function testSearchCommentCountToggle() { + // Search for the nodes by string in the node body. + $edit = [ + 'keys' => "'SearchCommentToggleTestCase'", + ]; + $this->drupalGet('search/node'); + + // Test comment count display for nodes with comment status set to Open + $this->drupalPostForm(NULL, $edit, t('Search')); + $this->assertText(t('0 comments'), 'Empty comment count displays for nodes with comment status set to Open'); + $this->assertText(t('1 comment'), 'Non-empty comment count displays for nodes with comment status set to Open'); + + // Test comment count display for nodes with comment status set to Closed + $this->searchableNodes['0 comments']->set('comment', CommentItemInterface::CLOSED); + $this->searchableNodes['0 comments']->save(); + $this->searchableNodes['1 comment']->set('comment', CommentItemInterface::CLOSED); + $this->searchableNodes['1 comment']->save(); + + $this->drupalPostForm(NULL, $edit, t('Search')); + $this->assertNoText(t('0 comments'), 'Empty comment count does not display for nodes with comment status set to Closed'); + $this->assertText(t('1 comment'), 'Non-empty comment count displays for nodes with comment status set to Closed'); + + // Test comment count display for nodes with comment status set to Hidden + $this->searchableNodes['0 comments']->set('comment', CommentItemInterface::HIDDEN); + $this->searchableNodes['0 comments']->save(); + $this->searchableNodes['1 comment']->set('comment', CommentItemInterface::HIDDEN); + $this->searchableNodes['1 comment']->save(); + + $this->drupalPostForm(NULL, $edit, t('Search')); + $this->assertNoText(t('0 comments'), 'Empty comment count does not display for nodes with comment status set to Hidden'); + $this->assertNoText(t('1 comment'), 'Non-empty comment count does not display for nodes with comment status set to Hidden'); + } + +}