1.20.x layout.test | public LayoutUpgradePathTest::testLayoutUpgrade() |
Tests a successful upgrade, where block positions copied to layouts.
File
- modules/
layout/ tests/ layout.test, line 2537 - Tests for the Layout module.
Class
- LayoutUpgradePathTest
- Tests the upgrade path from block-based regions to layouts.
Code
public function testLayoutUpgrade() {
$this->assertTrue($this->performUpgrade(), 'The upgrade was completed successfully.');
$this->backdropGet('user');
$blocks = array(
'l-header' => array(
'block-system-header',
'block-system-main-menu',
),
'l-sidebar-first' => array(
'block-search-form',
),
'l-triptych-middle' => array(
'block-node-syndicate',
),
'l-footer-first-column' => array(
'block-system-main-menu',
),
'l-footer-second-column' => array(
'block-system-management',
),
'l-footer-third-column' => array(
'block-system-user-menu',
),
'l-footer-fourth-column' => array(
// No blocks in forth column. The "navigation" block had been here in
// the D7 dump, but the navigation menu was removed in Backdrop.
),
'l-footer' => array(
'block-system-powered-by'
),
);
$this->assertBlocks($blocks);
$this->assertNoBlocks(array(
'l-footer-fourth-column' => array(
'block', // No blocks at all should be in the fourth column
),
));
// Check a node article, which should have the recent nodes block.
$article_node = $this->backdropCreateNode(array(
'type' => 'article',
'title' => $this->randomString(),
));
$this->backdropGet('node/' . $article_node->nid);
$article_blocks = $blocks;
$article_blocks['sidebar-second'][] = 'block-node-recent';
$this->assertBlocks($article_blocks);
// Check that the blocks are NOT available on page content.
// Check a node post, which should have the recent nodes block.
$page_node = $this->backdropCreateNode(array(
'type' => 'page',
'title' => $this->randomString(),
));
$this->backdropGet('node/' . $page_node->nid);
$this->assertBlocks($blocks);
$this->assertNoBlocks(array(
'l-sidebar-section' => array(
'block-node-recent'
),
));
// Check for path-based blocks, which should not be shown on /user.
$profile_blocks = $blocks;
$this->backdropGet('user/1');
$this->assertBlocks($profile_blocks);
// The Recent Comments block should still be shown on the homepage, but not
// on paths other than node*.
$path_blocks = array(
'l-triptych-last' => array(
'block-comment-recent',
),
);
$this->backdropGet('<front>');
$this->assertBlocks($path_blocks);
$this->backdropGet('node/' . $article_node->nid);
$this->assertBlocks($path_blocks);
$this->backdropGet('user/1');
$this->assertNoBlocks($path_blocks);
// Logout, and check the homepage for the Account menu block, which should
// only be visible to authenticated users.
$this->backdropLogout();
$this->backdropGet('<front>');
$this->assertNoBlocks(array(
'.region-footer-thirdcolumn' => array(
'block-system-user-menu',
),
));
}