crm_core-8.x-3.x-dev/modules/crm_core_contact/tests/src/Traits/IndividualCreationTrait.php

modules/crm_core_contact/tests/src/Traits/IndividualCreationTrait.php
<?php

namespace Drupal\Tests\crm_core_contact\Traits;

use Drupal\crm_core_contact\Entity\Individual;
use Drupal\user\Entity\User;

/**
 * Provides methods to create node based on default settings.
 *
 * This trait is meant to be used only by test classes.
 */
trait IndividualCreationTrait {

  /**
   * Get a node from the database based on its label.
   *
   * @param string|\Drupal\Component\Render\MarkupInterface $label
   *   An individual label, usually generated by $this->randomMachineName().
   * @param bool $reset
   *   (optional) Whether to reset the entity cache.
   *
   * @return \Drupal\crm_core_contact\IndividualInterface
   *   A node entity matching $label.
   */
  public function getIndividualByLabel($label, $reset = FALSE) {
    if ($reset) {
      \Drupal::entityTypeManager()->getStorage('crm_core_individual')->resetCache();
    }
    // Cast MarkupInterface objects to string.
    $label = (string) $label;
    $individuals = \Drupal::entityTypeManager()
      ->getStorage('crm_core_individual')
      ->loadByProperties(['label' => $label]);
    // Load the first individual returned from the database.
    $returned_individual = reset($individuals);
    return $returned_individual;
  }

  /**
   * Creates an individual based on default settings.
   *
   * @param array $values
   *   (optional) An associative array of values for the individual, as used in
   *   creation of entity. Override the defaults by specifying the key and value
   *   in the array, for example:
   *
   *   @code
   *     $this->drupalCreateIndividual([
   *       'label' => t('Hello, world!'),
   *       'type' => 'person',
   *     ]);
   *   @endcode
   *   The following defaults are provided:
   *   - body: Random string using the default filter format:
   *     @code
   *       $values['body'][0] = [
   *         'value' => $this->randomMachineName(32),
   *         'format' => filter_default_format(),
   *       ];
   *     @endcode
   *   - title: Random string.
   *   - type: 'person'.
   *   - uid: The currently logged in user, or anonymous.
   *
   * @return \Drupal\crm_core_contact\IndividualInterface
   *   The created individual entity.
   */
  protected function createIndividual(array $values = []) {
    // Populate defaults array.
    $values += [
      'title'     => $this->randomMachineName(8),
      'type'      => 'person',
    ];

    if (!array_key_exists('uid', $values)) {
      $user = User::load(\Drupal::currentUser()->id());
      if ($user) {
        $values['uid'] = $user->id();
      }
      elseif (method_exists($this, 'setUpCurrentUser')) {
        /** @var \Drupal\user\UserInterface $user */
        $user = $this->setUpCurrentUser();
        $values['uid'] = $user->id();
      }
      else {
        $values['uid'] = 0;
      }
    }

    $individual = Individual::create($values);
    $individual->save();

    return $individual;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc