Mercurial > hg > cmmr2012-drupal-site
diff core/modules/comment/tests/src/Kernel/CommentIntegrationTest.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/comment/tests/src/Kernel/CommentIntegrationTest.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,138 @@ +<?php + +namespace Drupal\Tests\comment\Kernel; + +use Drupal\comment\Entity\CommentType; +use Drupal\Component\Utility\Unicode; +use Drupal\Core\Database\Database; +use Drupal\Core\Entity\Entity\EntityViewDisplay; +use Drupal\Core\Entity\Entity\EntityViewMode; +use Drupal\field\Entity\FieldConfig; +use Drupal\field\Entity\FieldStorageConfig; +use Drupal\KernelTests\KernelTestBase; + +/** + * Tests integration of comment with other components. + * + * @group comment + */ +class CommentIntegrationTest extends KernelTestBase { + + /** + * {@inheritdoc} + */ + public static $modules = ['comment', 'field', 'entity_test', 'user', 'system', 'dblog']; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + $this->installEntitySchema('entity_test'); + $this->installEntitySchema('user'); + $this->installEntitySchema('comment'); + $this->installSchema('dblog', ['watchdog']); + + // Create a new 'comment' comment-type. + CommentType::create([ + 'id' => 'comment', + 'label' => $this->randomString(), + ])->save(); + } + + /** + * Tests view mode setting integration. + * + * @see comment_entity_view_display_presave() + * @see CommentDefaultFormatter::calculateDependencies() + */ + public function testViewMode() { + $mode = Unicode::strtolower($this->randomMachineName()); + // Create a new comment view mode and a view display entity. + EntityViewMode::create([ + 'id' => "comment.$mode", + 'targetEntityType' => 'comment', + 'settings' => ['comment_type' => 'comment'], + ])->save(); + EntityViewDisplay::create([ + 'targetEntityType' => 'comment', + 'bundle' => 'comment', + 'mode' => $mode, + ])->setStatus(TRUE)->save(); + + // Create a comment field attached to a host 'entity_test' entity. + FieldStorageConfig::create([ + 'entity_type' => 'entity_test', + 'type' => 'comment', + 'field_name' => $field_name = Unicode::strtolower($this->randomMachineName()), + 'settings' => [ + 'comment_type' => 'comment', + ], + ])->save(); + FieldConfig::create([ + 'entity_type' => 'entity_test', + 'bundle' => 'entity_test', + 'field_name' => $field_name, + ])->save(); + + $component = [ + 'type' => 'comment_default', + 'settings' => ['view_mode' => $mode, 'pager_id' => 0], + ]; + // Create a new 'entity_test' view display on host entity that uses the + // custom comment display in field formatter to show the field. + EntityViewDisplay::create([ + 'targetEntityType' => 'entity_test', + 'bundle' => 'entity_test', + 'mode' => 'default', + ])->setComponent($field_name, $component)->setStatus(TRUE)->save(); + + $host_display_id = 'entity_test.entity_test.default'; + $comment_display_id = "comment.comment.$mode"; + + // Disable the "comment.comment.$mode" display. + EntityViewDisplay::load($comment_display_id)->setStatus(FALSE)->save(); + + /** @var \Drupal\Core\Entity\Display\EntityViewDisplayInterface $host_display */ + $host_display = EntityViewDisplay::load($host_display_id); + + // Check that the field formatter has been disabled on host view display. + $this->assertNull($host_display->getComponent($field_name)); + $this->assertTrue($host_display->get('hidden')[$field_name]); + + // Check that the proper warning has been logged. + $arguments = [ + '@id' => $host_display_id, + '@name' => $field_name, + '@display' => EntityViewMode::load("comment.$mode")->label(), + '@mode' => $mode, + ]; + $logged = (bool) Database::getConnection()->select('watchdog') + ->fields('watchdog', ['wid']) + ->condition('type', 'system') + ->condition('message', "View display '@id': Comment field formatter '@name' was disabled because it is using the comment view display '@display' (@mode) that was just disabled.") + ->condition('variables', serialize($arguments)) + ->execute() + ->fetchField(); + $this->assertTrue($logged); + + // Re-enable the comment view display. + EntityViewDisplay::load($comment_display_id)->setStatus(TRUE)->save(); + // Re-enable the comment field formatter on host entity view display. + EntityViewDisplay::load($host_display_id)->setComponent($field_name, $component)->save(); + + // Delete the "comment.$mode" view mode. + EntityViewMode::load("comment.$mode")->delete(); + + // Check that the comment view display entity has been deleted too. + $this->assertNull(EntityViewDisplay::load($comment_display_id)); + + /** @var \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display */ + $host_display = EntityViewDisplay::load($host_display_id); + + // Check that the field formatter has been disabled on host view display. + $this->assertNull($host_display->getComponent($field_name)); + $this->assertTrue($host_display->get('hidden')[$field_name]); + } + +}