test_helpers-1.0.0-alpha6/src/Plugin/Field/FieldType/ItemStubItem.php
src/Plugin/Field/FieldType/ItemStubItem.php
<?php
namespace Drupal\test_helpers\Plugin\Field\FieldType;
use Drupal\Component\Utility\Random;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldItemBase;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\TypedData\DataDefinition;
/**
* A stub for Drupal's default FieldItemBase class.
*
* @FieldType(
* id = "item_stub",
* label = "Item Stub",
* description = "A stub field item to simplify writing unit tests.",
* category = "test_helpers",
* default_widget = "string_textfield",
* default_formatter = "string"
* )
*/
class ItemStubItem extends FieldItemBase {
/**
* {@inheritdoc}
*/
public static function schema(FieldStorageDefinitionInterface $fieldDefinition) {
return [
'columns' => [
'value' => [
'type' => $fieldDefinition->getSetting('is_ascii') === TRUE ? 'varchar_ascii' : 'varchar',
'length' => (int) $fieldDefinition->getSetting('max_length'),
'binary' => $fieldDefinition->getSetting('case_sensitive'),
],
],
];
}
/**
* {@inheritdoc}
*/
public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
// This is called very early by the user entity roles field. Prevent
// early t() calls by using the TranslatableMarkup.
$properties['value'] = DataDefinition::create('string')
->setLabel(new TranslatableMarkup('Text value'))
->setSetting('case_sensitive', $field_definition->getSetting('case_sensitive'))
->setRequired(TRUE);
return $properties;
}
/**
* {@inheritdoc}
*/
public static function mainPropertyName() {
return 'value';
}
/**
* {@inheritdoc}
*/
public function isEmpty() {
foreach ($this->values ?? [] as $value) {
if (!empty($value)) {
return FALSE;
}
}
return TRUE;
}
/**
* {@inheritdoc}
*/
public static function generateSampleValue(FieldDefinitionInterface $field_definition) {
$random = new Random();
$values['value'] = $random->word(mt_rand(1, $field_definition->getSetting('max_length')));
return $values;
}
}
