// Check that hook_field_widget_form_alter() does not believe this is the
// default value form.
$this->assertNoText('From hook_field_widget_form_alter(): Default form is true.', 'Not default value form in hook_field_widget_form_alter().');
+ // Check that hook_field_widget_form_alter() does not believe this is the
+ // default value form.
+ $this->assertNoText('From hook_field_widget_multivalue_form_alter(): Default form is true.', 'Not default value form in hook_field_widget_form_alter().');
// Submit with invalid value (field-level validation).
$edit = [
$this->assertEscaped("<script>alert('a configurable field');</script>");
}
+ /**
+ * Tests hook_field_widget_multivalue_form_alter().
+ */
+ public function testFieldFormMultipleWidgetAlter() {
+ $this->widgetAlterTest('hook_field_widget_multivalue_form_alter', 'test_field_widget_multiple');
+ }
+
+ /**
+ * Tests hook_field_widget_multivalue_form_alter() with single value elements.
+ */
+ public function testFieldFormMultipleWidgetAlterSingleValues() {
+ $this->widgetAlterTest('hook_field_widget_multivalue_form_alter', 'test_field_widget_multiple_single_value');
+ }
+
+ /**
+ * Tests hook_field_widget_multivalue_WIDGET_TYPE_form_alter().
+ */
+ public function testFieldFormMultipleWidgetTypeAlter() {
+ $this->widgetAlterTest('hook_field_widget_multivalue_WIDGET_TYPE_form_alter', 'test_field_widget_multiple');
+ }
+
+ /**
+ * Tests hook_field_widget_multivalue_WIDGET_TYPE_form_alter() with single value elements.
+ */
+ public function testFieldFormMultipleWidgetTypeAlterSingleValues() {
+ $this->widgetAlterTest('hook_field_widget_multivalue_WIDGET_TYPE_form_alter', 'test_field_widget_multiple_single_value');
+ }
+
+ /**
+ * Tests widget alter hooks for a given hook name.
+ */
+ protected function widgetAlterTest($hook, $widget) {
+ // Create a field with fixed cardinality, configure the form to use a
+ // "multiple" widget.
+ $field_storage = $this->fieldStorageMultiple;
+ $field_name = $field_storage['field_name'];
+ $this->field['field_name'] = $field_name;
+ FieldStorageConfig::create($field_storage)->save();
+ FieldConfig::create($this->field)->save();
+
+ // Set a flag in state so that the hook implementations will run.
+ \Drupal::state()->set("field_test.widget_alter_test", [
+ 'hook' => $hook,
+ 'field_name' => $field_name,
+ 'widget' => $widget,
+ ]);
+ entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
+ ->setComponent($field_name, [
+ 'type' => $widget,
+ ])
+ ->save();
+
+ $this->drupalGet('entity_test/add');
+ $this->assertUniqueText("From $hook(): prefix on $field_name parent element.");
+ if ($widget === 'test_field_widget_multiple_single_value') {
+ $suffix_text = "From $hook(): suffix on $field_name child element.";
+ $this->assertEqual($field_storage['cardinality'], substr_count($this->getTextContent(), $suffix_text), "'$suffix_text' was found {$field_storage['cardinality']} times using widget $widget");
+ }
+ }
+
}