3 namespace Drupal\Tests\quickedit\Kernel;
5 use Drupal\field\Entity\FieldConfig;
6 use Drupal\KernelTests\KernelTestBase;
7 use Drupal\field\Entity\FieldStorageConfig;
10 * Base class for testing Quick Edit functionality.
12 abstract class QuickEditTestBase extends KernelTestBase {
19 public static $modules = ['system', 'entity_test', 'field', 'field_test', 'filter', 'user', 'text', 'quickedit'];
22 * Bag of created fields.
24 * Allows easy access to test field names/IDs/objects via:
25 * - $this->fields->{$field_name}_field_storage
26 * - $this->fields->{$field_name}_instance
28 * @see \Drupal\quickedit\Tests\QuickEditTestBase::createFieldWithStorage()
35 * Sets the default field storage backend for fields created during tests.
37 protected function setUp() {
40 $this->fields = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
42 $this->installEntitySchema('user');
43 $this->installEntitySchema('entity_test');
44 $this->installConfig(['field', 'filter']);
50 * @param string $field_name
54 * @param int $cardinality
55 * The field's cardinality.
56 * @param string $label
57 * The field's label (used everywhere: widget label, formatter label).
58 * @param array $field_settings
59 * @param string $widget_type
61 * @param array $widget_settings
62 * The widget settings.
63 * @param string $formatter_type
65 * @param array $formatter_settings
66 * The formatter settings.
68 protected function createFieldWithStorage($field_name, $type, $cardinality, $label, $field_settings, $widget_type, $widget_settings, $formatter_type, $formatter_settings) {
69 $field_storage = $field_name . '_field_storage';
70 $this->fields->$field_storage = FieldStorageConfig::create([
71 'field_name' => $field_name,
72 'entity_type' => 'entity_test',
74 'cardinality' => $cardinality,
76 $this->fields->$field_storage->save();
78 $field = $field_name . '_field';
79 $this->fields->$field = FieldConfig::create([
80 'field_storage' => $this->fields->$field_storage,
81 'bundle' => 'entity_test',
83 'description' => $label,
84 'weight' => mt_rand(0, 127),
85 'settings' => $field_settings,
87 $this->fields->$field->save();
89 entity_get_form_display('entity_test', 'entity_test', 'default')
90 ->setComponent($field_name, [
91 'type' => $widget_type,
92 'settings' => $widget_settings,
96 entity_get_display('entity_test', 'entity_test', 'default')
97 ->setComponent($field_name, [
99 'type' => $formatter_type,
100 'settings' => $formatter_settings