You are here

public function BlockContentTypeTest::testBlockContentTypeEditing in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/block_content/tests/src/Functional/BlockContentTypeTest.php \Drupal\Tests\block_content\Functional\BlockContentTypeTest::testBlockContentTypeEditing()

Tests editing a block type using the UI.

File

core/modules/block_content/tests/src/Functional/BlockContentTypeTest.php, line 112

Class

BlockContentTypeTest
Ensures that custom block type functions work correctly.

Namespace

Drupal\Tests\block_content\Functional

Code

public function testBlockContentTypeEditing() {
  $this
    ->drupalPlaceBlock('system_breadcrumb_block');

  // Now create an initial block-type.
  $this
    ->createBlockContentType('basic', TRUE);
  $this
    ->drupalLogin($this->adminUser);

  // We need two block types to prevent /block/add redirecting.
  $this
    ->createBlockContentType('other');
  $field_definitions = \Drupal::service('entity_field.manager')
    ->getFieldDefinitions('block_content', 'other');
  $this
    ->assertFalse(isset($field_definitions['body']), 'Body field was not created when using the API to create block content types.');

  // Verify that title and body fields are displayed.
  $this
    ->drupalGet('block/add/basic');
  $this
    ->assertSession()
    ->pageTextContains('Block description');
  $this
    ->assertNotEmpty($this
    ->cssSelect('#edit-body-0-value'), 'Body field was found.');

  // Change the block type name.
  $edit = [
    'label' => 'Bar',
  ];
  $this
    ->drupalGet('admin/structure/block/block-content/manage/basic');
  $this
    ->assertSession()
    ->titleEquals('Edit basic custom block type | Drupal');
  $this
    ->submitForm($edit, 'Save');
  $front_page_path = Url::fromRoute('<front>')
    ->toString();
  $this
    ->assertBreadcrumb('admin/structure/block/block-content/manage/basic/fields', [
    $front_page_path => 'Home',
    'admin/structure/block' => 'Block layout',
    'admin/structure/block/block-content' => 'Custom block library',
    'admin/structure/block/block-content/manage/basic' => 'Edit Bar',
  ]);
  \Drupal::service('entity_field.manager')
    ->clearCachedFieldDefinitions();
  $this
    ->drupalGet('block/add');
  $this
    ->assertSession()
    ->pageTextContains('Bar');
  $this
    ->clickLink('Bar');

  // Verify that the original machine name was used in the URL.
  $this
    ->assertSession()
    ->addressEquals(Url::fromRoute('block_content.add_form', [
    'block_content_type' => 'basic',
  ]));

  // Remove the body field.
  $this
    ->drupalGet('admin/structure/block/block-content/manage/basic/fields/block_content.basic.body/delete');
  $this
    ->submitForm([], 'Delete');

  // Resave the settings for this type.
  $this
    ->drupalGet('admin/structure/block/block-content/manage/basic');
  $this
    ->submitForm([], 'Save');

  // Check that the body field doesn't exist.
  $this
    ->drupalGet('block/add/basic');
  $this
    ->assertEmpty($this
    ->cssSelect('#edit-body-0-value'), 'Body field was not found.');
}