CaseTrackerWebTestBase.php in Case Tracker 8
Definition of Drupal\casetracker\Tests\FieldWebTestBase.
Namespace
Drupal\casetrackerFile
src/CaseTrackerWebTestBase.phpView source
<?php
/**
* @file
* Definition of Drupal\casetracker\Tests\FieldWebTestBase.
*/
namespace Drupal\casetracker;
use Drupal\Core\Session\AccountInterface;
use Drupal\simpletest\WebTestBase;
class CaseTrackerWebTestBase extends WebTestBase {
/**
* @var string
*/
protected $contentTypeName;
/**
* @var AccountInterface
*/
protected $administratorAccount;
/**
* @var AccountInterface
*/
protected $authorAccount;
/**
* @var string
*/
protected $fieldName;
/**
* Modules to enable.
*
* @var array
*/
public static $modules = array(
'node',
'field_ui',
'casetracker',
);
/**
* {@inheritdoc}
*
* Once installed, a content type with the desired field is created
*/
protected function setUp() {
// Install Drupal.
parent::setUp();
// Create and login a user that creates the content type.
$permissions = array(
'administer content types',
'administer node fields',
'administer node form display',
);
$this->administratorAccount = $this
->drupalCreateUser($permissions);
parent::drupalLogin($this->administratorAccount);
// Prepare a new content type where the field will be added.
$this->contentTypeName = strtolower($this
->randomMachineName(10));
$this
->drupalGet('admin/structure/types/add');
$edit = array(
'name' => $this->contentTypeName,
'type' => $this->contentTypeName,
);
$this
->drupalPostForm(NULL, $edit, t('Save and manage fields'));
$this
->assertText(t('The content type @name has been added.', array(
'@name' => $this->contentTypeName,
)));
// Reset the permission cache.
$create_permission = 'create ' . $this->contentTypeName . ' content';
$this
->checkPermissions(array(
$create_permission,
), TRUE);
// Now that we have a new content type, create a user that has privileges
// on the content type.
$this->authorAccount = $this
->drupalCreateUser(array(
$create_permission,
));
}
/**
* Create a field on the content type created during setUp().
*
* @param string $type
* The storage field type to create
* @param string $widget_type
* The widget to use when editing this field
* @param int|string $cardinality
* Cardinality of the field. Use -1 to signify 'unlimited.'
*
* @return string
* Name of the field, like field_something
*/
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;
}
}
Classes
Name | Description |
---|---|
CaseTrackerWebTestBase |