diff --git a/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php b/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php index c53fd64c27b..2b955cd8e68 100644 --- a/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php +++ b/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php @@ -9,6 +9,7 @@ namespace Drupal\comment\Plugin\Field\FieldType; use Drupal\comment\CommentManagerInterface; use Drupal\comment\Entity\CommentType; +use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Field\FieldStorageDefinitionInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Render\Element; @@ -193,4 +194,18 @@ class CommentItem extends FieldItemBase implements CommentItemInterface { return $element; } + /** + * {@inheritdoc} + */ + public static function generateSampleValue(FieldDefinitionInterface $field_definition) { + $statuses = [ + CommentItemInterface::HIDDEN, + CommentItemInterface::CLOSED, + CommentItemInterface::OPEN, + ]; + return [ + 'status' => $statuses[mt_rand(0, count($statuses) - 1)], + ]; + } + } diff --git a/core/modules/comment/src/Tests/CommentItemTest.php b/core/modules/comment/src/Tests/CommentItemTest.php new file mode 100644 index 00000000000..817b4972e25 --- /dev/null +++ b/core/modules/comment/src/Tests/CommentItemTest.php @@ -0,0 +1,65 @@ +installSchema('comment', ['comment_entity_statistics']); + $this->installConfig(['comment']); + } + + /** + * Tests using entity fields of the comment field type. + */ + public function testCommentItem() { + $this->addDefaultCommentField('entity_test', 'entity_test', 'comment'); + + // Verify entity creation. + $entity = entity_create('entity_test'); + $entity->name->value = $this->randomMachineName(); + $entity->save(); + + // Verify entity has been created properly. + $id = $entity->id(); + $entity = entity_load('entity_test', $id, TRUE); + $this->assertTrue($entity->comment instanceof FieldItemListInterface, 'Field implements interface.'); + $this->assertTrue($entity->comment[0] instanceof CommentItemInterface, 'Field item implements interface.'); + + // Test sample item generation. + /** @var \Drupal\entity_test\Entity\EntityTest $entity */ + $entity = entity_create('entity_test'); + $entity->comment->generateSampleItems(); + $this->entityValidateAndSave($entity); + $this->assertTrue(in_array($entity->get('comment')->status, [ + CommentItemInterface::HIDDEN, + CommentItemInterface::CLOSED, + CommentItemInterface::OPEN, + ]), 'Comment status value in defined range'); + } + +}