| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 | 
							- <?php
 
- /**
 
-  * This class can be included at the top of your TripalTestCase to facillitate
 
-  * testing fields, widgets and formatters.
 
-  */
 
- class TripalFieldTestHelper {
 
-   // This is for the initialized field, widget or formatter as indicated by
 
-   // $machine_names in the constructor.
 
-   public $initialized_class;
 
-   // The name of the class being initialized.
 
-   public $class_name;
 
-   // Information for the field.
 
-   public $field_info;
 
-   // Information for the field instance.
 
-   public $instance_info;
 
-   // The loaded bundle the field is attached to.
 
-   public $bundle;
 
-   // The entity the field is attached to.
 
-   public $entity;
 
-   // The type of class we are initializing.
 
-   // One of 'field', 'widget', or 'formatter'.
 
-   public $type;
 
-   // The name of the field for the class being tested.
 
-   public $field_name;
 
-   /**
 
-    * Create an instance of TripalFieldTestHelper.
 
-    *
 
-    * Specifcally, initialize the widget class and save it for further testing.
 
-    *
 
-    * @param $bundle_name
 
-    *   The name of the bundle the field should be attached to. This bundle must
 
-    *   already exist.
 
-    * @param $machine_names
 
-    *   An array of machine names including:
 
-    *    - field_name: the name of the field (REQUIRED)
 
-    *    - widget_name: the name of the widget (Only required for widget
 
-    *   testing)
 
-    *    - formatter_name: the name of the formatter (Only required for
 
-    *   formatter testing)
 
-    * @param $field_info
 
-    *   The Drupal information for the field you want to test.
 
-    * @param $instance_info
 
-    *   The Drupal information for the field instance you want to test.
 
-    */
 
-   public function __construct($bundle_name, $machine_names, $entity, $field_info, $instance_info) {
 
-     // What type of class are we initializing?
 
-     $this->type = 'field';
 
-     $this->class_name = $machine_names['field_name'];
 
-     if (isset($machine_names['widget_name'])) {
 
-       $this->type = 'widget';
 
-       $this->class_name = $machine_names['widget_name'];
 
-     }
 
-     elseif (isset($machine_names['formatter_name'])) {
 
-       $this->type = 'formatter';
 
-       $this->class_name = $machine_names['formatter_name'];
 
-     }
 
-     $this->field_name = $machine_names['field_name'];
 
-     $class_name = '\\' . $this->class_name;
 
-     $class_path = DRUPAL_ROOT . '/' . drupal_get_path('module', 'tripal_chado')
 
-       . '/includes/TripalFields/' . $machine_names['field_name'] . '/' . $this->class_name . '.inc';
 
-     if ((include_once($class_path)) == TRUE) {
 
-       // Save the field information.
 
-       if (!$field_info) {
 
-         $field_info = $this->getFieldInfo($machine_names['field_name']);
 
-       }
 
-       $this->field_info = $field_info;
 
-       // Save the field instance information.
 
-       if (!$instance_info) {
 
-         $instance_info = $this->getFieldInfo($bundle_name, $machine_names['field_name']);
 
-       }
 
-       $this->instance_info = $instance_info;
 
-       // Load the bundle.
 
-       $this->bundle = tripal_load_bundle_entity(['name' => $bundle_name]);
 
-       // The entity from the specified bundle that the field should be attached to.
 
-       $this->entity = $entity;
 
-       // Initialize the class.
 
-       $this->initialized_class = new $class_name($this->field_info, $this->instance_info);
 
-     }
 
-   }
 
-   /**
 
-    * Retrieve the initialized class for testing!
 
-    */
 
-   public function getInitializedClass() {
 
-     return $this->initialized_class;
 
-   }
 
-   /**
 
-    * Retrieve the field information for a given field.
 
-    *
 
-    * @see https://api.drupal.org/api/drupal/modules%21field%21field.info.inc/function/field_info_field/7.x
 
-    *
 
-    * @param $field_name
 
-    *   The name of the field to retrieve. $field_name can only refer to a
 
-    *   non-deleted, active field.
 
-    *
 
-    * @return
 
-    *   The field array as returned by field_info_field() and used when
 
-    *   initializing this class.
 
-    */
 
-   public function getFieldInfo($field_name) {
 
-     if (empty($this->field_info)) {
 
-       $this->field_info = field_info_field($field_name);
 
-     }
 
-     return $this->field_info;
 
-   }
 
-   /**
 
-    * Retrieve the field instance information for a given field.
 
-    *
 
-    * @see https://api.drupal.org/api/drupal/modules%21field%21field.info.inc/function/field_info_instance/7.x
 
-    *
 
-    * @param $bundle_name
 
-    *   The name of the bundle you want the field attached to. For example,
 
-    *   bio_data_1.
 
-    * @param $field_name
 
-    *   The name of the field to retrieve the instance of. $field_name can only
 
-    *   refer to a non-deleted, active field.
 
-    *
 
-    * @return
 
-    *   The field instance array as returned by field_info_instance() and used
 
-    *   when initializing this class.
 
-    */
 
-   public function getInstanceInfo($bundle_name, $field_name) {
 
-     if (empty($this->instance_info)) {
 
-       $this->instance_info = field_info_instance('TripalEntity', $field_name, $bundle_name);
 
-     }
 
-     return $this->instance_info;
 
-   }
 
-   /**
 
-    * Create a fake version of the $element parameter used in many field methods
 
-    * (e.g. TripalFieldWidget::form).
 
-    *
 
-    * @param $delta
 
-    *   The delta for the $element you want to fake.
 
-    * @param $langcode
 
-    *   The language code for the field/widget. This should usually be
 
-    *   LANGUAGE_NONE.
 
-    * @param $required
 
-    *   True if the widget is required and false otherwise.
 
-    *
 
-    * @return
 
-    *   A fake $element variable for use in testing.
 
-    */
 
-   public function mockElement($delta = 0, $langcode = LANGUAGE_NONE, $required = FALSE) {
 
-     return [
 
-       '#entity_type' => 'TripalEntity',
 
-       '#entity' => $this->entity,
 
-       '#bundle' => $this->bundle,
 
-       '#field_name' => $this->field_name,
 
-       '#language' => $langcode,
 
-       '#field_parents' => [],
 
-       '#columns' => [],
 
-       '#title' => '',
 
-       '#description' => '',
 
-       '#required' => $required,
 
-       '#delta' => $delta,
 
-       '#weight' => $delta, //same as delta.
 
-       'value' => [
 
-         '#type' => 'value',
 
-         '#value' => '',
 
-       ],
 
-       '#field' => $this->field_info,
 
-       '#instance' => $this->instance_info,
 
-       '#theme' => 'tripal_field_default',
 
-       'element_validate' => ['tripal_field_widget_form_validate'],
 
-     ];
 
-   }
 
-   /**
 
-    * Create a fake version of the create/edit content form with the
 
-    * current entity attached.
 
-    *
 
-    * @return
 
-    *   A fake $form array for use in testing.
 
-    */
 
-   public function mockForm() {
 
-     return [
 
-       '#parents' => [],
 
-       '#entity' => $this->entity,
 
-     ];
 
-   }
 
-   /**
 
-    * Create a fake version of the create/edit content form_state
 
-    * with the current entity attached.
 
-    *
 
-    * @param $delta
 
-    *   The delta for the $element you want to fake.
 
-    * @param $langcode
 
-    *   The language code for the field/widget. This should usually be
 
-    *   LANGUAGE_NONE.
 
-    * @param $values
 
-    *    An array of values where the key is the form element name and the value
 
-    *   is the fake user submmitted value.
 
-    *
 
-    * @return
 
-    *   A fake $form_state array for use in testing.
 
-    */
 
-   public function mockFormState($delta = 0, $langcode = LANGUAGE_NONE, $values = NULL) {
 
-     $form_state = [
 
-       'build_info' => [
 
-         'args' => [
 
-           0 => NULL,
 
-           1 => $entity,
 
-         ],
 
-         'form_id' => 'tripal_entity_form',
 
-       ],
 
-       'rebuild' => FALSE,
 
-       'rebuild_info' => [],
 
-       'redirect' => NULL,
 
-       'temporary' => [],
 
-       'submitted' => FALSE,
 
-     ];
 
-     if ($values !== NULL) {
 
-       $form_state['values'][$this->field_name][$langcode][$delta] = $values;
 
-     }
 
-     return $form_state;
 
-   }
 
- }
 
 
  |