BlockContentUpdateTest.php
Same filename in other branches
Namespace
Drupal\Tests\block_content\Functional\UpdateFile
-
core/
modules/ block_content/ tests/ src/ Functional/ Update/ BlockContentUpdateTest.php
View source
<?php
declare (strict_types=1);
namespace Drupal\Tests\block_content\Functional\Update;
use Drupal\block_content\Entity\BlockContentType;
use Drupal\FunctionalTests\Update\UpdatePathTestBase;
use Drupal\user\Entity\User;
use Drupal\views\Entity\View;
/**
* Tests update functions for the Block Content module.
*
* @group block_content
*/
class BlockContentUpdateTest extends UpdatePathTestBase {
/**
* {@inheritdoc}
*/
protected function setDatabaseDumpFiles() : void {
$this->databaseDumpFiles = [
__DIR__ . '/../../../../../system/tests/fixtures/update/drupal-9.4.0.bare.standard.php.gz',
];
}
/**
* Tests converting block types' `revision` flag to boolean.
*/
public function testConvertBlockContentTypeRevisionFlagToBoolean() : void {
$no_new_revisions = BlockContentType::create([
'id' => 'no_new_revisions',
'label' => 'Does not create new revisions',
'revision' => 0,
]);
$no_new_revisions->trustData()
->save();
$new_revisions = BlockContentType::create([
'id' => 'new_revisions',
'label' => 'Creates new revisions',
'revision' => 1,
]);
$new_revisions->trustData()
->save();
// Ensure that an integer was stored, so we can be sure that the update
// path converts it to a boolean.
$this->assertSame(0, $no_new_revisions->get('revision'));
$this->assertSame(1, $new_revisions->get('revision'));
$this->runUpdates();
$this->assertFalse(BlockContentType::load('no_new_revisions')->get('revision'));
$this->assertTrue(BlockContentType::load('new_revisions')->get('revision'));
}
/**
* Tests moving the content block library to Content.
*
* @see block_content_post_update_move_custom_block_library()
*/
public function testMoveCustomBlockLibraryToContent() : void {
$user = $this->drupalCreateUser([
'administer blocks',
]);
$this->drupalLogin($user);
$this->drupalGet('admin/structure/block/block-content');
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->pageTextContains('Custom blocks');
$this->assertSession()
->pageTextContains('Custom block library');
$this->drupalGet('admin/content/block');
$this->assertSession()
->statusCodeEquals(404);
$this->runUpdates();
// Load and initialize the block_content view.
$view = View::load('block_content');
$data = $view->toArray();
// Check that the path, description, and menu options have been updated.
$this->assertEquals('admin/content/block', $data['display']['page_1']['display_options']['path']);
$this->assertEquals('Create and edit block content.', $data['display']['page_1']['display_options']['menu']['description']);
$this->assertFalse($data['display']['page_1']['display_options']['menu']['expanded']);
$this->assertEquals('system.admin_content', $data['display']['page_1']['display_options']['menu']['parent']);
$this->assertEquals('Content blocks', $view->label());
$this->assertEquals('Blocks', $data['display']['page_1']['display_options']['menu']['title']);
// Check the new path is accessible.
$user = $this->drupalCreateUser([
'access block library',
]);
$this->drupalLogin($user);
$this->drupalGet('admin/content/block');
$this->assertSession()
->statusCodeEquals(200);
}
/**
* Tests the block_content view isn't updated if the path has been modified.
*
* @see block_content_post_update_move_custom_block_library()
*/
public function testCustomBlockLibraryPathOverridden() : void {
$view = View::load('block_content');
$display =& $view->getDisplay('page_1');
$display['display_options']['path'] = 'some/custom/path';
$view->save();
$this->runUpdates();
$view = View::load('block_content');
$data = $view->toArray();
$this->assertEquals('some/custom/path', $data['display']['page_1']['display_options']['path']);
}
/**
* Tests the permissions are updated for users with "administer blocks".
*
* @see block_content_post_update_sort_permissions()
*/
public function testBlockLibraryPermissionsUpdate() : void {
$user = $this->drupalCreateUser([
'administer blocks',
]);
$this->assertTrue($user->hasPermission('administer blocks'));
$this->assertFalse($user->hasPermission('administer block content'));
$this->assertFalse($user->hasPermission('administer block types'));
$this->assertFalse($user->hasPermission('access block library'));
$this->runUpdates();
$user = User::load($user->id());
$this->assertTrue($user->hasPermission('administer blocks'));
$this->assertTrue($user->hasPermission('administer block content'));
$this->assertTrue($user->hasPermission('administer block types'));
$this->assertTrue($user->hasPermission('access block library'));
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
BlockContentUpdateTest | Tests update functions for the Block Content module. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.