Mercurial > hg > isophonics-drupal-site
diff core/modules/node/tests/src/Traits/NodeCreationTrait.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | af1871eacc83 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/node/tests/src/Traits/NodeCreationTrait.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,86 @@ +<?php + +namespace Drupal\Tests\node\Traits; + +use Drupal\node\Entity\Node; + +/** + * 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', + 'uid' => \Drupal::currentUser()->id(), + ]; + $node = Node::create($settings); + $node->save(); + + return $node; + } + +}