BlockContentReusableUpdateTest.php in Drupal 8
File
core/modules/block_content/tests/src/Functional/Update/BlockContentReusableUpdateTest.php
View source
<?php
namespace Drupal\Tests\block_content\Functional\Update;
use Drupal\block_content\Entity\BlockContent;
use Drupal\FunctionalTests\Update\UpdatePathTestBase;
class BlockContentReusableUpdateTest extends UpdatePathTestBase {
protected function setDatabaseDumpFiles() {
$this->databaseDumpFiles = [
__DIR__ . '/../../../../../system/tests/fixtures/update/drupal-8.bare.standard.php.gz',
__DIR__ . '/../../../fixtures/update/drupal-8.views_block_content-2976334.php',
];
}
public function testReusableFieldAddition() {
$assert_session = $this
->assertSession();
$entity_definition_update_manager = \Drupal::entityDefinitionUpdateManager();
$this
->assertEmpty($entity_definition_update_manager
->getFieldStorageDefinition('reusable', 'block_content'));
$view_config = \Drupal::configFactory()
->get('views.view.block_content');
$this
->assertFalse($view_config
->isNew());
$this
->assertEmpty($view_config
->get('display.default.display_options.filters.reusable'));
$this
->assertEmpty($view_config
->get('display.page_2.display_options.filters.reusable'));
$this
->runUpdates();
\Drupal::configFactory()
->clearStaticCache();
$view_config = \Drupal::configFactory()
->get('views.view.block_content');
$this
->assertNotEmpty($view_config
->get('display.default.display_options.filters.reusable'));
$this
->assertNotEmpty($view_config
->get('display.page_2.display_options.filters.reusable'));
$reusable_field = $entity_definition_update_manager
->getFieldStorageDefinition('reusable', 'block_content');
$this
->assertEquals('Reusable', $reusable_field
->getLabel());
$this
->assertEquals('A boolean indicating whether this block is reusable.', $reusable_field
->getDescription());
$this
->assertEquals(FALSE, $reusable_field
->isRevisionable());
$this
->assertEquals(FALSE, $reusable_field
->isTranslatable());
$after_block1 = BlockContent::create([
'info' => 'After update block1',
'type' => 'basic_block',
]);
$after_block1
->save();
$after_block2 = BlockContent::create([
'info' => 'After update block2',
'type' => 'basic_block',
]);
$after_block2
->save();
$this
->assertTrue($after_block1
->isReusable());
$this
->assertTrue($after_block2
->isReusable());
$admin_user = $this
->drupalCreateUser([
'administer blocks',
]);
$this
->drupalLogin($admin_user);
$block_non_reusable = BlockContent::create([
'info' => 'block1 non reusable',
'type' => 'basic_block',
'reusable' => FALSE,
]);
$block_non_reusable
->save();
$block2_non_reusable = BlockContent::create([
'info' => 'block2 non reusable',
'type' => 'basic_block',
'reusable' => FALSE,
]);
$block2_non_reusable
->save();
$this
->assertFalse($block_non_reusable
->isReusable());
$this
->assertFalse($block2_non_reusable
->isReusable());
$this
->drupalGet('admin/structure/block/block-content');
$assert_session
->statusCodeEquals('200');
$assert_session
->responseContains('view-id-block_content');
$assert_session
->pageTextContains($after_block1
->label());
$assert_session
->pageTextContains($after_block2
->label());
$assert_session
->pageTextNotContains($block_non_reusable
->label());
$assert_session
->pageTextNotContains($block2_non_reusable
->label());
$this
->drupalGet('extra-view-display');
$assert_session
->statusCodeEquals('200');
$assert_session
->responseContains('view-id-block_content');
$assert_session
->pageTextNotContains($after_block1
->label());
$assert_session
->pageTextContains($after_block2
->label());
$assert_session
->pageTextNotContains($block_non_reusable
->label());
$assert_session
->pageTextNotContains($block2_non_reusable
->label());
$this
->drupalGet('admin/structure/block/block-content');
$this->container
->get('module_installer')
->uninstall([
'views_ui',
'views',
]);
$this
->drupalGet('admin/structure/block/block-content');
$assert_session
->statusCodeEquals('200');
$assert_session
->responseNotContains('view-id-block_content');
$assert_session
->pageTextContains($after_block1
->label());
$assert_session
->pageTextContains($after_block2
->label());
$assert_session
->pageTextNotContains($block_non_reusable
->label());
$assert_session
->pageTextNotContains($block2_non_reusable
->label());
$this
->drupalGet('block/' . $after_block1
->id());
$assert_session
->statusCodeEquals('200');
$this
->drupalGet('block/' . $block_non_reusable
->id());
$assert_session
->statusCodeEquals('403');
$this
->drupalLogout();
$this
->drupalLogin($this
->createUser([
'access user profiles',
'administer blocks',
]));
$this
->drupalGet('block/' . $after_block1
->id());
$assert_session
->statusCodeEquals('200');
$this
->drupalGet('block/' . $block_non_reusable
->id());
$assert_session
->statusCodeEquals('403');
}
public function testReusableFieldAdditionWithoutViews() {
$this->container
->get('module_installer')
->uninstall([
'views',
]);
$this
->runUpdates();
}
}