You are here

public function MigrateBlockTest::testBlockMigration in Drupal 10

Same name in this branch
  1. 10 core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php \Drupal\Tests\block\Kernel\Migrate\d6\MigrateBlockTest::testBlockMigration()
  2. 10 core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockTest.php \Drupal\Tests\block\Kernel\Migrate\d7\MigrateBlockTest::testBlockMigration()
Same name and namespace in other branches
  1. 8 core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php \Drupal\Tests\block\Kernel\Migrate\d6\MigrateBlockTest::testBlockMigration()
  2. 9 core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php \Drupal\Tests\block\Kernel\Migrate\d6\MigrateBlockTest::testBlockMigration()

Tests the block migration.

File

core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php, line 98

Class

MigrateBlockTest
Tests migration of blocks to configuration entities.

Namespace

Drupal\Tests\block\Kernel\Migrate\d6

Code

public function testBlockMigration() {
  $blocks = Block::loadMultiple();
  $this
    ->assertCount(25, $blocks);

  // Check user blocks.
  $visibility = [
    'request_path' => [
      'id' => 'request_path',
      'negate' => TRUE,
      'pages' => "<front>\n/node/1\n/blog/*",
    ],
  ];
  $settings = [
    'id' => 'user_login_block',
    'label' => '',
    'provider' => 'user',
    'label_display' => '0',
  ];
  $this
    ->assertEntity('user', $visibility, 'sidebar', 'olivero', -10, $settings);
  $visibility = [];
  $settings = [
    'id' => 'system_menu_block',
    'label' => 'zu - Navigation',
    'provider' => 'system',
    'label_display' => 'visible',
    'level' => 1,
    'expand_all_items' => FALSE,
    'depth' => 0,
  ];
  $this
    ->assertEntity('user_1', $visibility, 'sidebar', 'olivero', -11, $settings);
  $visibility = [
    'user_role' => [
      'id' => 'user_role',
      'negate' => FALSE,
      'context_mapping' => [
        'user' => '@user.current_user_context:current_user',
      ],
      'roles' => [
        'authenticated' => 'authenticated',
      ],
    ],
  ];
  $settings = [
    'id' => 'broken',
    'label' => '',
    'provider' => 'core',
    'label_display' => '0',
    'items_per_page' => '5',
  ];
  $this
    ->assertEntity('user_2', $visibility, 'sidebar', 'olivero', -11, $settings);
  $visibility = [
    'user_role' => [
      'id' => 'user_role',
      'negate' => FALSE,
      'context_mapping' => [
        'user' => '@user.current_user_context:current_user',
      ],
      'roles' => [
        'migrate_test_role_1' => 'migrate_test_role_1',
      ],
    ],
  ];
  $settings = [
    'id' => 'broken',
    'label' => '',
    'provider' => 'core',
    'label_display' => '0',
    'items_per_page' => '10',
  ];
  $this
    ->assertEntity('user_3', $visibility, 'sidebar', 'olivero', -10, $settings);

  // Check system block.
  $visibility = [
    'request_path' => [
      'id' => 'request_path',
      'negate' => TRUE,
      'pages' => '/node/1',
    ],
  ];
  $settings = [
    'id' => 'system_powered_by_block',
    'label' => '',
    'provider' => 'system',
    'label_display' => '0',
  ];
  $this
    ->assertEntity('system', $visibility, 'footer_top', 'olivero', -5, $settings);

  // Check menu blocks.
  $settings = [
    'id' => 'broken',
    'label' => '',
    'provider' => 'core',
    'label_display' => '0',
  ];
  $this
    ->assertEntity('menu', [], 'header', 'olivero', -5, $settings);

  // Check aggregator block.
  $settings = [
    'id' => 'broken',
    'label' => '',
    'provider' => 'core',
    'label_display' => '0',
    'block_count' => 7,
    'feed' => '5',
  ];
  $this
    ->assertEntity('aggregator', [], 'sidebar', 'olivero', -2, $settings);

  // Check book block.
  $settings = [
    'id' => 'book_navigation',
    'label' => '',
    'provider' => 'book',
    'label_display' => '0',
    'block_mode' => 'book pages',
  ];
  $this
    ->assertEntity('book', [], 'sidebar', 'olivero', -4, $settings);

  // Check forum block settings.
  $settings = [
    'id' => 'forum_active_block',
    'label' => '',
    'provider' => 'forum',
    'label_display' => '0',
    'block_count' => 3,
    'properties' => [
      'administrative' => '1',
    ],
  ];
  $this
    ->assertEntity('forum', [], 'sidebar', 'olivero', -8, $settings);
  $settings = [
    'id' => 'forum_new_block',
    'label' => '',
    'provider' => 'forum',
    'label_display' => '0',
    'block_count' => 4,
    'properties' => [
      'administrative' => '1',
    ],
  ];
  $this
    ->assertEntity('forum_1', [], 'sidebar', 'olivero', -9, $settings);

  // Check statistic block settings.
  $settings = [
    'id' => 'broken',
    'label' => '',
    'provider' => 'core',
    'label_display' => '0',
    'top_day_num' => 7,
    'top_all_num' => 8,
    'top_last_num' => 9,
  ];
  $this
    ->assertEntity('statistics', [], 'sidebar', 'olivero', 0, $settings);

  // Check custom blocks.
  $visibility = [
    'request_path' => [
      'id' => 'request_path',
      'negate' => FALSE,
      'pages' => '<front>',
    ],
  ];
  $settings = [
    'id' => 'block_content',
    'label' => 'Static Block',
    'provider' => 'block_content',
    'label_display' => 'visible',
    'status' => TRUE,
    'info' => '',
    'view_mode' => 'full',
  ];
  $this
    ->assertEntity('block', $visibility, 'content', 'olivero', 0, $settings);
  $visibility = [
    'request_path' => [
      'id' => 'request_path',
      'negate' => FALSE,
      'pages' => '/node',
    ],
  ];
  $settings = [
    'id' => 'block_content',
    'label' => 'Another Static Block',
    'provider' => 'block_content',
    'label_display' => 'visible',
    'status' => TRUE,
    'info' => '',
    'view_mode' => 'full',
  ];

  // We expect this block to be disabled because '' is not a valid region,
  // and block_rebuild() will disable any block in an invalid region.
  $this
    ->assertEntity('block_1', $visibility, '', 'bluemarine', -4, $settings, FALSE);
  $settings = [
    'id' => 'block_content',
    'label' => '',
    'provider' => 'block_content',
    'label_display' => '0',
    'status' => TRUE,
    'info' => '',
    'view_mode' => 'full',
  ];
  $this
    ->assertEntity('block_2', [], 'right', 'test_theme', -7, $settings);

  // Custom block with php code is not migrated.
  $block = Block::load('block_3');
  $this
    ->assertNotInstanceOf(Block::class, $block);

  // Check migrate messages.
  $messages = iterator_to_array($this
    ->getMigration('d6_block')
    ->getIdMap()
    ->getMessages());
  $this
    ->assertCount(2, $messages);
  $this
    ->assertSame($messages[1]->message, 'Schema errors for block.block.aggregator with the following errors: block.block.aggregator:settings.block_count missing schema, block.block.aggregator:settings.feed missing schema');
}