1 layout.test | LayoutInterfaceTest::testBlockUserCompareConditions() |
Tests user account comparison condition.
File
- core/
modules/ layout/ tests/ layout.test, line 748 - Tests for the Layout module.
Class
- LayoutInterfaceTest
- Tests the interface for adding, removing, and moving blocks.
Code
function testBlockUserCompareConditions() {
// Create a new layout overriding user/%.
$layout_title = $this->randomName();
$layout_name = strtolower($layout_title);
$layout_url = 'user/%';
$edit = array(
'title' => $layout_title,
'name' => $layout_name,
'layout_template' => 'moscone_flipped',
'path' => $layout_url,
);
$this->backdropPost('admin/structure/layouts/add', $edit, t('Create layout'));
// Add another testing block.
$this->clickLink(t('Add block'), 3);
$this->clickLink(t('Layout foo block'));
$block_title = $this->randomString();
$edit = array(
'title_display' => LAYOUT_TITLE_CUSTOM,
'title' => $block_title,
);
$this->backdropPost(NULL, $edit, t('Add condition'));
$edit = array(
'condition' => 'user_compare',
);
$this->backdropPost(NULL, $edit, t('Load condition'));
// The user account comparison form has some customizations. Verify the
// fields show as expected.
$this->assertOption('edit-contexts-user2', '1', 'User account from path in position 2 selected as second comparison user account.');
$this->assertNoOption('edit-contexts-user2', 'current_user');
$edit = array(
'contexts[user2]' => '1',
'equality' => '1',
);
$this->backdropPost(NULL, $edit, t('Add condition'));
$this->backdropPost(NULL, array(), t('Update block'));
$this->backdropPost(NULL, array(), t('Save layout'));
$this->backdropGet('user/' . $this->admin_user->uid);
$this->assertText(check_plain($block_title), 'Block shown when user views own profile page.');
$this->backdropGet('user/' . $this->web_user->uid);
$this->assertNoText(check_plain($block_title), 'Block not shown when user views profile page of another user.');
// Get the block UUID.
layout_reset_caches();
$layout = layout_load($layout_name);
$block_uuid = end($layout->positions['sidebar']);
// Update the condition to do the opposite, where a block is only shown to
// a user viewing their own profile page.
$this->backdropGet('admin/structure/layouts/manage/' . $layout_name . '/configure-block/editor/' . $block_uuid);
$this->backdropPost(NULL, array(), t('Configure'));
$edit = array(
'equality' => '0',
);
$this->backdropPost(NULL, $edit, t('Save visibility condition'));
$this->backdropPost(NULL, array(), t('Update block'));
$this->backdropPost(NULL, array(), t('Save layout'));
$this->backdropGet('user/' . $this->admin_user->uid);
$this->assertNoText(check_plain($block_title), 'Block not shown when user views own profile page');
$this->backdropGet('user/' . $this->web_user->uid);
$this->assertText(check_plain($block_title), 'Block shown when user views profile page of another user.');
}