$bundle_name)); $vars['field_info'] = field_info_field($field_name); $vars['instance_info'] = field_info_instance('TripalEntity', $field_name, $bundle_name); // Create an instance of the widget class. $vars['widget_class'] = new \sbo__relationship_widget($this->field_info, $this->instance_info); // load an entity to pretend the widget is modifying. $vars['entity'] = entity_load('TripalEntity', [$entity_id]); } return $vars; } /** * Test that we can initialize the widget properly. */ public function testWidgetClassInitialization() { // Initialize our variables. $vars = $this->initializeWidgetClass('bio_data_1', 'sbo__relationship', 'sbo__relationship_widget', 8); // Check we have the variables we initialized. $this->assertNotEmpty($vars['bundle'], "Could not load the bundle."); $this->assertNotEmpty($vars['field_info'], "Could not lookup the field information."); $this->assertNotEmpty($vars['instance_info'], "Could not lookup the instance informatiob."); $this->assertNotEmpty($vars['widget_class'], "Couldn't create a widget class instance."); $this->assertNotEmpty($vars['entity'], "Couldn't load an entity."); } /** * Test the widget Form. * * @group lacey */ public function testWidgetForm() { $field_name = 'sbo__relationship'; $bundle_name = 'bio_data_1'; $widget_name = 'sbo__relationship_widget'; $entity_id = 8; $vars = $this->initializeWidgetClass($bundle_name, $field_name, $widget_name, $entity_id); // Stub out a fake $widget object. $widget = [ '#entity_type' => 'TripalEntity', '#entity' => $vars['entity'], '#bundle' => $vars['bundle'], '#field_name' => $field_name, '#language' => LANGUAGE_NONE, '#field_parents' => [], '#columns' => [], '#title' => '', '#description' => '', '#required' => FALSE, '#delta' => 0, '#weight' => 0, //same as delta. 'value' => [ '#type' => 'value', '#value' => '', ], '#field' => $vars['field_info'], '#instance' => $vars['instance_info'], '#theme' => 'tripal_field_default', 'element_validate' => ['tripal_field_widget_form_validate'] ]; // Stub out the form and form_state. $form = [ '#parents' => [], '#entity' => $vars['entity'], ]; $form_state = [ 'build_info' => [ 'args' => [ 0 => NULL, 1 => $vars['entity'] ], 'form_id' => 'tripal_entity_form', ], 'rebuild' => FALSE, 'rebuild_info' => [], 'redirect' => NULL, 'temporary' => [], 'submitted' => FALSE, ]; // stub out the data for the field. $langcode = LANGUAGE_NONE; $items = [ 'value' => '', 'chado-organism_relationship__organism_relationship_id' => '', 'chado-organism_relationship__subject_id' => '', 'chado-organism_relationship__object_id' => '', 'chado-organism_relationship__type_id' => '', 'chado-organism_relationship__rank' => '', 'object_name' => '', 'subject_name' => '', 'type_name' => '', ]; $delta = 0; // Stub out the widget element. $element = [ '#entity_type' => 'TripalEntity', '#entity' => $vars['entity'], '#bundle' => $bundle_name, '#field_name' => $field_name, '#language' => LANGUAGE_NONE, '#field_parents' => [], '#columns' => [], '#title' => '', '#description' => '', '#required' => FALSE, '#delta' => 0, '#weight' => 0, ]; // Execute the form method. $vars['widget_class']->form($widget, $form, $form_state, $langcode, $items, $delta, $element); // Check the resulting for array $this->assertArrayHasKey('subject_name', $widget, 'The form does not have a subject element.'); $this->assertArrayHasKey('type_name', $widget, 'The form does not have a type element.'); $this->assertArrayHasKey('object_name', $widget, 'The form does not have a object element.'); } }