BlockContentPermissionsTest.php

Same filename and directory in other branches
  1. 11.x core/modules/block_content/tests/src/Kernel/BlockContentPermissionsTest.php

Namespace

Drupal\Tests\block_content\Kernel

File

core/modules/block_content/tests/src/Kernel/BlockContentPermissionsTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\block_content\Kernel;

use Drupal\KernelTests\KernelTestBase;
use Drupal\block_content\Entity\BlockContentType;

/**
 * Tests the permissions of content blocks.
 *
 * @coversDefaultClass \Drupal\block_content\BlockContentPermissions
 *
 * @group block_content
 */
class BlockContentPermissionsTest extends KernelTestBase {
  
  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'block',
    'block_content',
    'block_content_test',
    'system',
    'user',
  ];
  
  /**
   * The permission handler.
   *
   * @var \Drupal\user\PermissionHandlerInterface
   */
  protected $permissionHandler;
  
  /**
   * {@inheritdoc}
   */
  public function setUp() : void {
    parent::setUp();
    $this->installEntitySchema('user');
    $this->installEntitySchema('block_content');
    $this->permissionHandler = $this->container
      ->get('user.permissions');
  }
  
  /**
   * @covers ::blockTypePermissions
   */
  public function testDynamicPermissions() : void {
    $permissions = $this->permissionHandler
      ->getPermissions();
    $this->assertArrayNotHasKey('edit any basic block content', $permissions, 'The per-block-type permission does not exist.');
    $this->assertArrayNotHasKey('edit any square block content', $permissions, 'The per-block-type permission does not exist.');
    // Create a basic block content type.
    BlockContentType::create([
      'id' => 'basic',
      'label' => 'A basic block type',
      'description' => 'Provides a basic block type',
    ])->save();
    // Create a square block content type.
    BlockContentType::create([
      'id' => 'square',
      'label' => 'A square block type',
      'description' => 'Provides a block type that is square',
    ])->save();
    $permissions = $this->permissionHandler
      ->getPermissions();
    // Assert the basic permission has been created.
    $this->assertArrayHasKey('edit any basic block content', $permissions, 'The per-block-type permission exists.');
    $this->assertEquals('<em class="placeholder">A basic block type</em>: Edit content block', $permissions['edit any basic block content']['title']->render());
    // Assert the square permission has been created.
    $this->assertArrayHasKey('edit any square block content', $permissions, 'The per-block-type permission exists.');
    $this->assertEquals('<em class="placeholder">A square block type</em>: Edit content block', $permissions['edit any square block content']['title']->render());
  }

}

Classes

Title Deprecated Summary
BlockContentPermissionsTest Tests the permissions of content blocks.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.