Loading config/schema/field_is_empty.schema.yml 0 → 100644 +17 −0 Original line number Diff line number Diff line # Schema for the configuration files of the Field is Empty module. field.value.field_is_empty: type: field.value.boolean label: 'Default value' field.field_settings.field_is_empty: type: field.field_settings.boolean label: 'Field is Empty settings' mapping: field_name: type: text label: 'Source' empty_value: type: boolean label: 'Empty Value' tests/src/Kernel/FieldIsEmptyFieldTest.php 0 → 100644 +74 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\field_is_empty\Kernel; use Drupal\entity_test\Entity\EntityTest; use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; use Drupal\field_is_empty\Plugin\Field\FieldType\FieldIsEmptyItem; use Drupal\Tests\field\Kernel\FieldKernelTestBase; use Drupal\Tests\field_is_empty\Traits\FieldIsEmptyFieldCreationTrait; /** * Tests for the Field Is Empty module. * * @group field_is_empty */ class FieldIsEmptyFieldTest extends FieldKernelTestBase { use FieldIsEmptyFieldCreationTrait; /** * Modules to install. * * @var array */ protected static $modules = ['field_is_empty']; /** * {@inheritdoc} */ protected function setUp(): void { parent::setUp(); $field_storage = FieldStorageConfig::create([ 'type' => 'string', 'entity_type' => 'entity_test', 'field_name' => 'field_body', ]); $field_storage->save(); FieldConfig::create([ 'field_storage' => $field_storage, 'bundle' => 'entity_test', ])->save(); $field_settings = [ FieldIsEmptyItem::FIELD_NAME_SETTING => 'field_body', FieldIsEmptyItem::VALUE_ON_EMPTY_SETTING => TRUE, 'on_label' => 'Yes', 'off_label' => 'No' ]; $this->createFieldIsEmptyField('field_is_body_empty', $field_settings); } /** * Tests field output */ public function testFieldIsEmptyOutput() { // Create a test entity $entity = EntityTest::create(); $entity->name->value = $this->randomMachineName(); $entity->save(); $entity = EntityTest::load($entity->id()); $this->assertEquals($entity->field_is_body_empty->value, 1); // Add data to field_body field $entity->field_body->value = $this->randomMachineName(32); $entity->save(); $entity = EntityTest::load($entity->id()); $this->assertEquals($entity->field_is_body_empty->value, 0); } } tests/src/Traits/FieldIsEmptyFieldCreationTrait.php 0 → 100644 +41 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\field_is_empty\Traits; use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; /** * Provides a helper method for creating Field is Empty fields. */ trait FieldIsEmptyFieldCreationTrait { /** * Create a new Field is empty field. * * @param string $name * The name of the new field (all lowercase) * @param array $field_settings * (optional) A list of instance settings that will be added to the instance * defaults. */ protected function createFieldIsEmptyField($name, $field_settings = []) { FieldStorageConfig::create([ 'field_name' => $name, 'entity_type' => 'entity_test', 'type' => 'field_is_empty', ])->save(); $field_config = FieldConfig::create([ 'field_name' => $name, 'label' => $name, 'entity_type' => 'entity_test', 'bundle' => 'entity_test', 'settings' => $field_settings, ]); $field_config->save(); return $field_config; } } Loading
config/schema/field_is_empty.schema.yml 0 → 100644 +17 −0 Original line number Diff line number Diff line # Schema for the configuration files of the Field is Empty module. field.value.field_is_empty: type: field.value.boolean label: 'Default value' field.field_settings.field_is_empty: type: field.field_settings.boolean label: 'Field is Empty settings' mapping: field_name: type: text label: 'Source' empty_value: type: boolean label: 'Empty Value'
tests/src/Kernel/FieldIsEmptyFieldTest.php 0 → 100644 +74 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\field_is_empty\Kernel; use Drupal\entity_test\Entity\EntityTest; use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; use Drupal\field_is_empty\Plugin\Field\FieldType\FieldIsEmptyItem; use Drupal\Tests\field\Kernel\FieldKernelTestBase; use Drupal\Tests\field_is_empty\Traits\FieldIsEmptyFieldCreationTrait; /** * Tests for the Field Is Empty module. * * @group field_is_empty */ class FieldIsEmptyFieldTest extends FieldKernelTestBase { use FieldIsEmptyFieldCreationTrait; /** * Modules to install. * * @var array */ protected static $modules = ['field_is_empty']; /** * {@inheritdoc} */ protected function setUp(): void { parent::setUp(); $field_storage = FieldStorageConfig::create([ 'type' => 'string', 'entity_type' => 'entity_test', 'field_name' => 'field_body', ]); $field_storage->save(); FieldConfig::create([ 'field_storage' => $field_storage, 'bundle' => 'entity_test', ])->save(); $field_settings = [ FieldIsEmptyItem::FIELD_NAME_SETTING => 'field_body', FieldIsEmptyItem::VALUE_ON_EMPTY_SETTING => TRUE, 'on_label' => 'Yes', 'off_label' => 'No' ]; $this->createFieldIsEmptyField('field_is_body_empty', $field_settings); } /** * Tests field output */ public function testFieldIsEmptyOutput() { // Create a test entity $entity = EntityTest::create(); $entity->name->value = $this->randomMachineName(); $entity->save(); $entity = EntityTest::load($entity->id()); $this->assertEquals($entity->field_is_body_empty->value, 1); // Add data to field_body field $entity->field_body->value = $this->randomMachineName(32); $entity->save(); $entity = EntityTest::load($entity->id()); $this->assertEquals($entity->field_is_body_empty->value, 0); } }
tests/src/Traits/FieldIsEmptyFieldCreationTrait.php 0 → 100644 +41 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\field_is_empty\Traits; use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; /** * Provides a helper method for creating Field is Empty fields. */ trait FieldIsEmptyFieldCreationTrait { /** * Create a new Field is empty field. * * @param string $name * The name of the new field (all lowercase) * @param array $field_settings * (optional) A list of instance settings that will be added to the instance * defaults. */ protected function createFieldIsEmptyField($name, $field_settings = []) { FieldStorageConfig::create([ 'field_name' => $name, 'entity_type' => 'entity_test', 'type' => 'field_is_empty', ])->save(); $field_config = FieldConfig::create([ 'field_name' => $name, 'label' => $name, 'entity_type' => 'entity_test', 'bundle' => 'entity_test', 'settings' => $field_settings, ]); $field_config->save(); return $field_config; } }