function TextFieldTest::testTextFieldValidation

Test text field validation.

File

drupal/core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php, line 51
Definition of Drupal\text\TextFieldTest.

Class

TextFieldTest
Tests the creation of text fields.

Namespace

Drupal\text\Tests

Code

function testTextFieldValidation() {

  // Create a field with settings to validate.
  $max_length = 3;
  $this->field = array(
    'field_name' => drupal_strtolower($this
      ->randomName()),
    'type' => 'text',
    'settings' => array(
      'max_length' => $max_length,
    ),
  );
  field_create_field($this->field);
  $this->instance = array(
    'field_name' => $this->field['field_name'],
    'entity_type' => 'entity_test',
    'bundle' => 'entity_test',
  );
  field_create_instance($this->instance);

  // Test valid and invalid values with field_attach_validate().
  $entity = entity_create('entity_test', array());
  $langcode = Language::LANGCODE_NOT_SPECIFIED;
  for ($i = 0; $i <= $max_length + 2; $i++) {
    $entity->{$this->field['field_name']}->value = str_repeat('x', $i);
    try {
      field_attach_validate($entity);
      $this
        ->assertTrue($i <= $max_length, "Length {$i} does not cause validation error when max_length is {$max_length}");
    } catch (FieldValidationException $e) {
      $this
        ->assertTrue($i > $max_length, "Length {$i} causes validation error when max_length is {$max_length}");
    }
  }
}