Mercurial > hg > isophonics-drupal-site
view core/modules/node/tests/src/Traits/NodeCreationTrait.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | af1871eacc83 |
children |
line wrap: on
line source
<?php namespace Drupal\Tests\node\Traits; use Drupal\node\Entity\Node; 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 NodeCreationTrait { /** * Get a node from the database based on its title. * * @param string|\Drupal\Component\Render\MarkupInterface $title * A node title, usually generated by $this->randomMachineName(). * @param $reset * (optional) Whether to reset the entity cache. * * @return \Drupal\node\NodeInterface * A node entity matching $title. */ public function getNodeByTitle($title, $reset = FALSE) { if ($reset) { \Drupal::entityTypeManager()->getStorage('node')->resetCache(); } // Cast MarkupInterface objects to string. $title = (string) $title; $nodes = \Drupal::entityTypeManager() ->getStorage('node') ->loadByProperties(['title' => $title]); // Load the first node returned from the database. $returned_node = reset($nodes); return $returned_node; } /** * Creates a node based on default settings. * * @param array $settings * (optional) An associative array of settings for the node, as used in * entity_create(). Override the defaults by specifying the key and value * in the array, for example: * @code * $this->drupalCreateNode(array( * 'title' => t('Hello, world!'), * 'type' => 'article', * )); * @endcode * The following defaults are provided: * - body: Random string using the default filter format: * @code * $settings['body'][0] = array( * 'value' => $this->randomMachineName(32), * 'format' => filter_default_format(), * ); * @endcode * - title: Random string. * - type: 'page'. * - uid: The currently logged in user, or anonymous. * * @return \Drupal\node\NodeInterface * The created node entity. */ protected function createNode(array $settings = []) { // Populate defaults array. $settings += [ 'body' => [ [ 'value' => $this->randomMachineName(32), 'format' => filter_default_format(), ], ], 'title' => $this->randomMachineName(8), 'type' => 'page', ]; if (!array_key_exists('uid', $settings)) { $user = User::load(\Drupal::currentUser()->id()); if ($user) { $settings['uid'] = $user->id(); } elseif (method_exists($this, 'setUpCurrentUser')) { /** @var \Drupal\user\UserInterface $user */ $user = $this->setUpCurrentUser(); $settings['uid'] = $user->id(); } else { $settings['uid'] = 0; } } $node = Node::create($settings); $node->save(); return $node; } }