Commit 61b95def authored by Vardan Harutyunyan's avatar Vardan Harutyunyan Committed by dmitriy.trt
Browse files

Issue #3304636 by hhvardan: Add tests

parent 76e2f987
Loading
Loading
Loading
Loading
+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'
+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);
  }
}
+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;
  }

}