Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\quickedit\Kernel;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\field\Entity\FieldConfig;
|
Chris@0
|
6 use Drupal\KernelTests\KernelTestBase;
|
Chris@0
|
7 use Drupal\field\Entity\FieldStorageConfig;
|
Chris@0
|
8
|
Chris@0
|
9 /**
|
Chris@0
|
10 * Base class for testing Quick Edit functionality.
|
Chris@0
|
11 */
|
Chris@0
|
12 abstract class QuickEditTestBase extends KernelTestBase {
|
Chris@0
|
13
|
Chris@0
|
14 /**
|
Chris@0
|
15 * Modules to enable.
|
Chris@0
|
16 *
|
Chris@0
|
17 * @var array
|
Chris@0
|
18 */
|
Chris@0
|
19 public static $modules = ['system', 'entity_test', 'field', 'field_test', 'filter', 'user', 'text', 'quickedit'];
|
Chris@0
|
20
|
Chris@0
|
21 /**
|
Chris@0
|
22 * Bag of created fields.
|
Chris@0
|
23 *
|
Chris@0
|
24 * Allows easy access to test field names/IDs/objects via:
|
Chris@0
|
25 * - $this->fields->{$field_name}_field_storage
|
Chris@0
|
26 * - $this->fields->{$field_name}_instance
|
Chris@0
|
27 *
|
Chris@0
|
28 * @see \Drupal\quickedit\Tests\QuickEditTestBase::createFieldWithStorage()
|
Chris@0
|
29 *
|
Chris@0
|
30 * @var \ArrayObject
|
Chris@0
|
31 */
|
Chris@0
|
32 protected $fields;
|
Chris@0
|
33
|
Chris@0
|
34 /**
|
Chris@0
|
35 * Sets the default field storage backend for fields created during tests.
|
Chris@0
|
36 */
|
Chris@0
|
37 protected function setUp() {
|
Chris@0
|
38 parent::setUp();
|
Chris@0
|
39
|
Chris@0
|
40 $this->fields = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
|
Chris@0
|
41
|
Chris@0
|
42 $this->installEntitySchema('user');
|
Chris@0
|
43 $this->installEntitySchema('entity_test');
|
Chris@0
|
44 $this->installConfig(['field', 'filter']);
|
Chris@0
|
45 }
|
Chris@0
|
46
|
Chris@0
|
47 /**
|
Chris@0
|
48 * Creates a field.
|
Chris@0
|
49 *
|
Chris@0
|
50 * @param string $field_name
|
Chris@0
|
51 * The field name.
|
Chris@0
|
52 * @param string $type
|
Chris@0
|
53 * The field type.
|
Chris@0
|
54 * @param int $cardinality
|
Chris@0
|
55 * The field's cardinality.
|
Chris@0
|
56 * @param string $label
|
Chris@0
|
57 * The field's label (used everywhere: widget label, formatter label).
|
Chris@0
|
58 * @param array $field_settings
|
Chris@0
|
59 * @param string $widget_type
|
Chris@0
|
60 * The widget type.
|
Chris@0
|
61 * @param array $widget_settings
|
Chris@0
|
62 * The widget settings.
|
Chris@0
|
63 * @param string $formatter_type
|
Chris@0
|
64 * The formatter type.
|
Chris@0
|
65 * @param array $formatter_settings
|
Chris@0
|
66 * The formatter settings.
|
Chris@0
|
67 */
|
Chris@0
|
68 protected function createFieldWithStorage($field_name, $type, $cardinality, $label, $field_settings, $widget_type, $widget_settings, $formatter_type, $formatter_settings) {
|
Chris@0
|
69 $field_storage = $field_name . '_field_storage';
|
Chris@0
|
70 $this->fields->$field_storage = FieldStorageConfig::create([
|
Chris@0
|
71 'field_name' => $field_name,
|
Chris@0
|
72 'entity_type' => 'entity_test',
|
Chris@0
|
73 'type' => $type,
|
Chris@0
|
74 'cardinality' => $cardinality,
|
Chris@0
|
75 ]);
|
Chris@0
|
76 $this->fields->$field_storage->save();
|
Chris@0
|
77
|
Chris@0
|
78 $field = $field_name . '_field';
|
Chris@0
|
79 $this->fields->$field = FieldConfig::create([
|
Chris@0
|
80 'field_storage' => $this->fields->$field_storage,
|
Chris@0
|
81 'bundle' => 'entity_test',
|
Chris@0
|
82 'label' => $label,
|
Chris@0
|
83 'description' => $label,
|
Chris@0
|
84 'weight' => mt_rand(0, 127),
|
Chris@0
|
85 'settings' => $field_settings,
|
Chris@0
|
86 ]);
|
Chris@0
|
87 $this->fields->$field->save();
|
Chris@0
|
88
|
Chris@0
|
89 entity_get_form_display('entity_test', 'entity_test', 'default')
|
Chris@0
|
90 ->setComponent($field_name, [
|
Chris@0
|
91 'type' => $widget_type,
|
Chris@0
|
92 'settings' => $widget_settings,
|
Chris@0
|
93 ])
|
Chris@0
|
94 ->save();
|
Chris@0
|
95
|
Chris@0
|
96 entity_get_display('entity_test', 'entity_test', 'default')
|
Chris@0
|
97 ->setComponent($field_name, [
|
Chris@0
|
98 'label' => 'above',
|
Chris@0
|
99 'type' => $formatter_type,
|
Chris@17
|
100 'settings' => $formatter_settings,
|
Chris@0
|
101 ])
|
Chris@0
|
102 ->save();
|
Chris@0
|
103 }
|
Chris@0
|
104
|
Chris@0
|
105 }
|