You are here

BlockContentUpdateTest.php in Drupal 8

File

core/modules/block_content/tests/src/Functional/Update/BlockContentUpdateTest.php
View source
<?php

namespace Drupal\Tests\block_content\Functional\Update;

use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\FunctionalTests\Update\UpdatePathTestBase;

/**
 * Tests update functions for the Block Content module.
 *
 * @group Update
 * @group legacy
 */
class BlockContentUpdateTest extends UpdatePathTestBase {

  /**
   * {@inheritdoc}
   */
  protected function setDatabaseDumpFiles() {
    $this->databaseDumpFiles = [
      __DIR__ . '/../../../../../system/tests/fixtures/update/drupal-8.bare.standard.php.gz',
    ];
  }

  /**
   * Tests the revision metadata fields and revision data table additions.
   */
  public function testSimpleUpdates() {
    $entity_definition_update_manager = \Drupal::entityDefinitionUpdateManager();
    $entity_type = $entity_definition_update_manager
      ->getEntityType('block_content');
    $this
      ->assertNull($entity_type
      ->getRevisionDataTable());
    $this
      ->runUpdates();
    $post_revision_created = $entity_definition_update_manager
      ->getFieldStorageDefinition('revision_created', 'block_content');
    $post_revision_user = $entity_definition_update_manager
      ->getFieldStorageDefinition('revision_user', 'block_content');
    $this
      ->assertInstanceOf(BaseFieldDefinition::class, $post_revision_created);
    $this
      ->assertInstanceOf(BaseFieldDefinition::class, $post_revision_user);
    $this
      ->assertEqual('created', $post_revision_created
      ->getType(), "Field is type created");
    $this
      ->assertEqual('entity_reference', $post_revision_user
      ->getType(), "Field is type entity_reference");
    $entity_type = $entity_definition_update_manager
      ->getEntityType('block_content');
    $this
      ->assertEqual('block_content_field_revision', $entity_type
      ->getRevisionDataTable());
  }

  /**
   * Tests adding a status field to the block content entity type.
   *
   * @see block_content_update_8400()
   */
  public function testStatusFieldAddition() {
    $schema = \Drupal::database()
      ->schema();
    $entity_definition_update_manager = \Drupal::entityDefinitionUpdateManager();

    // Run updates.
    $this
      ->runUpdates();

    // Check that the field exists and has the correct label.
    $updated_field = $entity_definition_update_manager
      ->getFieldStorageDefinition('status', 'block_content');
    $this
      ->assertEqual('Publishing status', $updated_field
      ->getLabel());
    $content_translation_status = $entity_definition_update_manager
      ->getFieldStorageDefinition('content_translation_status', 'block_content');
    $this
      ->assertNull($content_translation_status);
    $this
      ->assertFalse($schema
      ->fieldExists('block_content_field_revision', 'content_translation_status'));
    $this
      ->assertFalse($schema
      ->fieldExists('block_content_field_data', 'content_translation_status'));
  }

}

Classes

Namesort descending Description
BlockContentUpdateTest Tests update functions for the Block Content module.