View source
<?php
namespace Drupal\Tests\textimage\Functional;
use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\textimage\Kernel\TextimageTestTrait;
abstract class TextimageTestBase extends BrowserTestBase {
use TextimageTestTrait;
protected $textimageAdmin = 'admin/config/media/textimage';
protected static $modules = [
'textimage',
'node',
'image_effects',
];
public function setUp() {
parent::setUp();
$this
->initTextimageTest();
if ($this->profile != 'standard') {
$this
->drupalCreateContentType([
'type' => 'page',
'name' => 'Basic page',
]);
$this
->drupalCreateContentType([
'type' => 'article',
'name' => 'Article',
]);
}
$this->adminUser = $this
->drupalCreateUser([
'access content',
'create article content',
'edit any article content',
'delete any article content',
'administer site configuration',
'administer image styles',
'generate textimage url derivatives',
]);
$this
->drupalLogin($this->adminUser);
}
protected function createTextField($name, $bundle, array $storage_settings = [], array $field_settings = [], array $widget_settings = []) {
FieldStorageConfig::create([
'field_name' => $name,
'entity_type' => 'node',
'type' => 'text',
'settings' => $storage_settings,
'cardinality' => !empty($storage_settings['cardinality']) ? $storage_settings['cardinality'] : 1,
])
->save();
$field_config = FieldConfig::create([
'field_name' => $name,
'label' => $name,
'entity_type' => 'node',
'bundle' => $bundle,
'required' => !empty($field_settings['required']),
'description' => !empty($field_settings['description']) ? $field_settings['description'] : '',
'settings' => $field_settings,
])
->save();
$this->entityDisplayRepository
->getFormDisplay('node', $bundle, 'default')
->setComponent($name, [
'type' => 'text_textfield',
'settings' => $widget_settings,
])
->save();
$this->entityDisplayRepository
->getViewDisplay('node', $bundle, 'default')
->setComponent($name)
->save();
return $field_config;
}
protected function createTextimageNode($field_type, $field_name, $field_value, $bundle, $node_title) {
switch ($field_type) {
case 'text':
if (!is_array($field_value)) {
$field_value = [
$field_value,
];
}
$edit = [
'title[0][value]' => $node_title,
'body[0][value]' => $field_value[0],
];
for ($i = 0; $i < count($field_value); $i++) {
$index = $field_name . '[' . $i . '][value]';
$edit[$index] = $field_value[$i];
}
$this
->drupalPostForm('node/add/' . $bundle, $edit, t('Save'));
break;
case 'image':
$edit = [
'title[0][value]' => $node_title,
];
$edit['files[' . $field_name . '_0]'] = $this->fileSystem
->realpath($field_value->uri);
$this
->drupalPostForm('node/add/' . $bundle, $edit, t('Save'));
$this
->drupalPostForm(NULL, [
$field_name . '[0][alt]' => 'test alt text',
], t('Save'));
break;
}
$matches = [];
preg_match('/node\\/([0-9]+)/', $this
->getUrl(), $matches);
return isset($matches[1]) ? $matches[1] : FALSE;
}
}