+++ /dev/null
-<?php
-
-namespace Drupal\entity_reference_revisions\Tests;
-
-use Drupal\block_content\Entity\BlockContent;
-use Drupal\Component\Utility\Html;
-use Drupal\field_ui\Tests\FieldUiTestTrait;
-use Drupal\node\Entity\Node;
-use Drupal\simpletest\WebTestBase;
-
-/**
- * Tests the entity_reference_revisions autocomplete.
- *
- * @group entity_reference_revisions
- */
-class EntityReferenceRevisionsAutocompleteTest extends WebTestBase {
-
- use FieldUiTestTrait;
- use EntityReferenceRevisionsCoreVersionUiTestTrait;
-
- /**
- * Modules to enable.
- *
- * @var array
- */
- public static $modules = array(
- 'block_content',
- 'node',
- 'field',
- 'entity_reference_revisions',
- 'field_ui',
- );
-
- /**
- * {@inheritdoc}
- */
- protected function setUp() {
- parent::setUp();
- // Create article content type.
- $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
- // Place the breadcrumb, tested in fieldUIAddNewField().
- $this->drupalPlaceBlock('system_breadcrumb_block');
- }
-
- /**
- * Test for autocomplete processing.
- *
- * Tests that processing does not crash when the entity types of the
- * referenced entity and of the entity the field is attached to are different.
- */
- public function testEntityReferenceRevisionsAutocompleteProcessing() {
- $admin_user = $this->drupalCreateUser(array(
- 'administer site configuration',
- 'administer nodes',
- 'administer blocks',
- 'create article content',
- 'administer content types',
- 'administer node fields',
- 'administer node display',
- 'administer node form display',
- 'edit any article content',
- ));
- $this->drupalLogin($admin_user);
-
- // Create a custom block content bundle.
- $this->createBlockContentType(array('type' => 'customblockcontent', 'name' => 'Custom Block Content'));
-
- // Create entity reference revisions field attached to article.
- static::fieldUIAddNewField(
- 'admin/structure/types/manage/article',
- 'entity_reference_revisions',
- 'Entity reference revisions',
- 'entity_reference_revisions',
- array('settings[target_type]' => 'block_content', 'cardinality' => '-1'),
- array('settings[handler_settings][target_bundles][customblockcontent]' => TRUE)
- );
-
- // Create custom block.
- $block_label = $this->randomMachineName();
- $block_content = $this->randomString();
- $edit = array(
- 'info[0][value]' => $block_label,
- 'body[0][value]' => $block_content,
- );
- $this->drupalPostForm('block/add', $edit, t('Save'));
- $block = $this->drupalGetBlockByInfo($block_label);
-
- // Create an article.
- $title = $this->randomMachineName();
- $edit = array(
- 'title[0][value]' => $title,
- 'body[0][value]' => 'Revision 1',
- 'field_entity_reference_revisions[0][target_id]' => $block_label . ' (' . $block->id() . ')',
- );
- $this->drupalPostNodeForm('node/add/article', $edit, t('Save and publish'));
- $this->assertText($title);
- $this->assertText(Html::escape($block_content));
-
- // Check if the block content is not deleted since there is no composite
- // relationship.
- $node = $this->drupalGetNodeByTitle($edit['title[0][value]']);
- $node = Node::load($node->id());
- $node->delete();
- $this->assertNotNull(BlockContent::load($block->id()));
- }
-
- /**
- * Get a custom block from the database based on its title.
- *
- * @param $info
- * A block title, usually generated by $this->randomMachineName().
- * @param $reset
- * (optional) Whether to reset the entity cache.
- *
- * @return \Drupal\block\BlockInterface
- * A block entity matching $info.
- */
- function drupalGetBlockByInfo($info, $reset = FALSE) {
- if ($reset) {
- \Drupal::entityTypeManager()->getStorage('block_content')->resetCache();
- }
- $blocks = \Drupal::entityTypeManager()->getStorage('block_content')->loadByProperties(array('info' => $info));
- // Get the first block returned from the database.
- $returned_block = reset($blocks);
- return $returned_block;
- }
-
- /**
- * Create a block_content bundle.
- *
- * @param $parameters
- * An assoc array with name (human readable) and type (bundle machine name)
- * as keys.
- */
- function createBlockContentType($parameters) {
- $label = $parameters['name'];
- $machine_name = $parameters['type'];
- $edit = array(
- 'label' => $label,
- 'id' => $machine_name,
- 'revision' => TRUE,
- );
- $this->drupalPostForm('admin/structure/block/block-content/types/add', $edit, t('Save'));
- $this->assertText($label);
- }
-
-}