You are here

protected function CaseTrackerWebTestBase::createField in Case Tracker 8

Create a field on the content type created during setUp().

Parameters

string $type: The storage field type to create

string $widget_type: The widget to use when editing this field

int|string $cardinality: Cardinality of the field. Use -1 to signify 'unlimited.'

Return value

string Name of the field, like field_something

1 call to CaseTrackerWebTestBase::createField()
CaseStatusFieldTest::testSingleValueField in src/Tests/CaseStatusFieldTest.php
Test basic functionality of the csae status field.

File

src/CaseTrackerWebTestBase.php, line 92
Definition of Drupal\casetracker\Tests\FieldWebTestBase.

Class

CaseTrackerWebTestBase

Namespace

Drupal\casetracker

Code

protected function createField($type = 'casetracker_state', $widget_type = 'casetracker_state_widget', $cardinality = '1') {
  $this
    ->drupalGet('admin/structure/types/manage/' . $this->contentTypeName . '/fields');

  // Go to the 'Add field' page.
  $this
    ->clickLink('Add field');

  // Make a name for this field.
  $field_name = strtolower($this
    ->randomMachineName(10));

  // Fill out the field form.
  $edit = array(
    'new_storage_type' => $type,
    'field_name' => $field_name,
    'label' => $field_name,
  );
  $this
    ->drupalPostForm(NULL, $edit, t('Save and continue'));

  // Fill out the $cardinality form as if we're not using an unlimited number
  // of values.
  $edit = array(
    'cardinality' => 'number',
    'cardinality_number' => (string) $cardinality,
  );

  // If we have -1 for $cardinality, we should change the form's drop-down
  // from 'Number' to 'Unlimited.'
  if (-1 == $cardinality) {
    $edit = array(
      'cardinality' => '-1',
      'cardinality_number' => '1',
    );
  }

  // And now we save the cardinality settings.
  $this
    ->drupalPostForm(NULL, $edit, t('Save field settings'));
  debug(t('Saved settings for field %field_name with widget %widget_type and cardinality %cardinality', array(
    '%field_name' => $field_name,
    '%widget_type' => $widget_type,
    '%cardinality' => $cardinality,
  )));
  $this
    ->assertText(t('Updated field @name field settings.', array(
    '@name' => $field_name,
  )));

  // Set the widget type for the newly created field.
  $this
    ->drupalGet('admin/structure/types/manage/' . $this->contentTypeName . '/form-display');
  $edit = array(
    'fields[field_' . $field_name . '][type]' => $widget_type,
  );
  $this
    ->drupalPostForm(NULL, $edit, t('Save'));
  return $field_name;
}