diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextItemBase.php b/core/modules/text/src/Plugin/Field/FieldType/TextItemBase.php index e70fadacb1..4dbbfe50c0 100644 --- a/core/modules/text/src/Plugin/Field/FieldType/TextItemBase.php +++ b/core/modules/text/src/Plugin/Field/FieldType/TextItemBase.php @@ -70,7 +70,7 @@ public function onChange($property_name, $notify = TRUE) { /** * {@inheritdoc} */ - public static function generateSampleValue(FieldDefinitionInterface $field_definition) { + public static function generateSampleValue(FieldDefinitionInterface $field_definition, $format = NULL) { $random = new Random(); $settings = $field_definition->getSettings(); @@ -80,13 +80,14 @@ public static function generateSampleValue(FieldDefinitionInterface $field_defin } else { // Textfield handling. - $value = substr($random->sentences(mt_rand(1, $settings['max_length'] / 3), FALSE), 0, $settings['max_length']); + $max = ceil($settings['max_length'] / 3); + $value = substr($random->sentences(mt_rand(1, $max), FALSE), 0, $settings['max_length']); } $values = [ 'value' => $value, 'summary' => $value, - 'format' => filter_fallback_format(), + 'format' => isset($format) ? $format : filter_fallback_format(), ]; return $values; } diff --git a/core/modules/text/tests/src/Unit/TextItemTest.php b/core/modules/text/tests/src/Unit/TextItemTest.php new file mode 100644 index 0000000000..cd1c23c6a3 --- /dev/null +++ b/core/modules/text/tests/src/Unit/TextItemTest.php @@ -0,0 +1,60 @@ +getMockBuilder('Drupal\Core\Cache\CacheBackendInterface')->getMock(), + $this->getMockBuilder('Drupal\Core\Extension\ModuleHandlerInterface')->getMock(), + $this->getMockBuilder('Drupal\Core\TypedData\TypedDataManagerInterface')->getMock() + ); + + // Set up a config factory for the filter settings fallback format. + $config_factory = $this->getConfigFactoryStub([ + 'filter.settings' => [ + 'fallback_format' => 'plain_text', + ], + ]); + + $container = new ContainerBuilder(); + $container->set('plugin.manager.field.field_type', $plugin_manager); + $container->set('config.factory', $config_factory); + \Drupal::setContainer($container); + + } + + /** + * Tests creation of sample values. + * + * @covers ::generateSampleValue + */ + public function testTextFieldSampleValue() { + $field_definition = BaseFieldDefinition::create('text') + ->setSetting('max_length', 1) + ->setTargetEntityTypeId('page'); + $sample_value = TextItemBase::generateSampleValue($field_definition, 'plain_text'); + + $this->assertEquals(1, strlen($sample_value['value']), 'Sample value is correct'); + + } + +}