annotate modules/dashboard/dashboard.test @ 13:134d4b2e75f6

updated quicktabs and google analytics modules
author danieleb <danielebarchiesi@me.com>
date Tue, 29 Oct 2013 13:48:59 +0000
parents ff03f76ab3fe
children
rev   line source
danielebarchiesi@0 1 <?php
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * @file
danielebarchiesi@0 5 * Tests for dashboard.module.
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 /**
danielebarchiesi@0 9 * Tests the Dashboard module blocks.
danielebarchiesi@0 10 */
danielebarchiesi@0 11 class DashboardBlocksTestCase extends DrupalWebTestCase {
danielebarchiesi@0 12 public static function getInfo() {
danielebarchiesi@0 13 return array(
danielebarchiesi@0 14 'name' => 'Dashboard blocks',
danielebarchiesi@0 15 'description' => 'Test blocks as used by the dashboard.',
danielebarchiesi@0 16 'group' => 'Dashboard',
danielebarchiesi@0 17 );
danielebarchiesi@0 18 }
danielebarchiesi@0 19
danielebarchiesi@0 20 function setUp() {
danielebarchiesi@0 21 parent::setUp();
danielebarchiesi@0 22
danielebarchiesi@0 23 // Create and log in an administrative user having access to the dashboard.
danielebarchiesi@0 24 $admin_user = $this->drupalCreateUser(array('access dashboard', 'administer blocks', 'access administration pages', 'administer modules'));
danielebarchiesi@0 25 $this->drupalLogin($admin_user);
danielebarchiesi@0 26
danielebarchiesi@0 27 // Make sure that the dashboard is using the same theme as the rest of the
danielebarchiesi@0 28 // site (and in particular, the same theme used on 403 pages). This forces
danielebarchiesi@0 29 // the dashboard blocks to be the same for an administrator as for a
danielebarchiesi@0 30 // regular user, and therefore lets us test that the dashboard blocks
danielebarchiesi@0 31 // themselves are specifically removed for a user who does not have access
danielebarchiesi@0 32 // to the dashboard page.
danielebarchiesi@0 33 theme_enable(array('stark'));
danielebarchiesi@0 34 variable_set('theme_default', 'stark');
danielebarchiesi@0 35 variable_set('admin_theme', 'stark');
danielebarchiesi@0 36 }
danielebarchiesi@0 37
danielebarchiesi@0 38 /**
danielebarchiesi@0 39 * Tests adding a block to the dashboard and checking access to it.
danielebarchiesi@0 40 */
danielebarchiesi@0 41 function testDashboardAccess() {
danielebarchiesi@0 42 // Add a new custom block to a dashboard region.
danielebarchiesi@0 43 $custom_block = array();
danielebarchiesi@0 44 $custom_block['info'] = $this->randomName(8);
danielebarchiesi@0 45 $custom_block['title'] = $this->randomName(8);
danielebarchiesi@0 46 $custom_block['body[value]'] = $this->randomName(32);
danielebarchiesi@0 47 $custom_block['regions[stark]'] = 'dashboard_main';
danielebarchiesi@0 48 $this->drupalPost('admin/structure/block/add', $custom_block, t('Save block'));
danielebarchiesi@0 49
danielebarchiesi@0 50 // Ensure admin access.
danielebarchiesi@0 51 $this->drupalGet('admin/dashboard');
danielebarchiesi@0 52 $this->assertResponse(200, t('Admin has access to the dashboard.'));
danielebarchiesi@0 53 $this->assertRaw($custom_block['title'], t('Admin has access to a dashboard block.'));
danielebarchiesi@0 54
danielebarchiesi@0 55 // Ensure non-admin access is denied.
danielebarchiesi@0 56 $normal_user = $this->drupalCreateUser();
danielebarchiesi@0 57 $this->drupalLogin($normal_user);
danielebarchiesi@0 58 $this->drupalGet('admin/dashboard');
danielebarchiesi@0 59 $this->assertResponse(403, t('Non-admin has no access to the dashboard.'));
danielebarchiesi@0 60 $this->assertNoText($custom_block['title'], t('Non-admin has no access to a dashboard block.'));
danielebarchiesi@0 61 }
danielebarchiesi@0 62
danielebarchiesi@0 63 /**
danielebarchiesi@0 64 * Tests that dashboard regions are displayed or hidden properly.
danielebarchiesi@0 65 */
danielebarchiesi@0 66 function testDashboardRegions() {
danielebarchiesi@0 67 $dashboard_regions = dashboard_region_descriptions();
danielebarchiesi@0 68
danielebarchiesi@0 69 // Ensure blocks can be placed in dashboard regions.
danielebarchiesi@0 70 $this->drupalGet('admin/dashboard/configure');
danielebarchiesi@0 71 foreach ($dashboard_regions as $region => $description) {
danielebarchiesi@0 72 $elements = $this->xpath('//option[@value=:region]', array(':region' => $region));
danielebarchiesi@0 73 $this->assertTrue(!empty($elements), t('%region is an available choice on the dashboard block configuration page.', array('%region' => $region)));
danielebarchiesi@0 74 }
danielebarchiesi@0 75
danielebarchiesi@0 76 // Ensure blocks cannot be placed in dashboard regions on the standard
danielebarchiesi@0 77 // blocks configuration page.
danielebarchiesi@0 78 $this->drupalGet('admin/structure/block');
danielebarchiesi@0 79 foreach ($dashboard_regions as $region => $description) {
danielebarchiesi@0 80 $elements = $this->xpath('//option[@value=:region]', array(':region' => $region));
danielebarchiesi@0 81 $this->assertTrue(empty($elements), t('%region is not an available choice on the block configuration page.', array('%region' => $region)));
danielebarchiesi@0 82 }
danielebarchiesi@0 83 }
danielebarchiesi@0 84
danielebarchiesi@0 85 /**
danielebarchiesi@0 86 * Tests that the dashboard module can be re-enabled, retaining its blocks.
danielebarchiesi@0 87 */
danielebarchiesi@0 88 function testDisableEnable() {
danielebarchiesi@0 89 // Add a new custom block to a dashboard region.
danielebarchiesi@0 90 $custom_block = array();
danielebarchiesi@0 91 $custom_block['info'] = $this->randomName(8);
danielebarchiesi@0 92 $custom_block['title'] = $this->randomName(8);
danielebarchiesi@0 93 $custom_block['body[value]'] = $this->randomName(32);
danielebarchiesi@0 94 $custom_block['regions[stark]'] = 'dashboard_main';
danielebarchiesi@0 95 $this->drupalPost('admin/structure/block/add', $custom_block, t('Save block'));
danielebarchiesi@0 96 $this->drupalGet('admin/dashboard');
danielebarchiesi@0 97 $this->assertRaw($custom_block['title'], t('Block appears on the dashboard.'));
danielebarchiesi@0 98
danielebarchiesi@0 99 $edit = array();
danielebarchiesi@0 100 $edit['modules[Core][dashboard][enable]'] = FALSE;
danielebarchiesi@0 101 $this->drupalPost('admin/modules', $edit, t('Save configuration'));
danielebarchiesi@0 102 $this->assertText(t('The configuration options have been saved.'), t('Modules status has been updated.'));
danielebarchiesi@0 103 $this->assertNoRaw('assigned to the invalid region', t('Dashboard blocks gracefully disabled.'));
danielebarchiesi@0 104 module_list(TRUE);
danielebarchiesi@0 105 $this->assertFalse(module_exists('dashboard'), t('Dashboard disabled.'));
danielebarchiesi@0 106
danielebarchiesi@0 107 $edit['modules[Core][dashboard][enable]'] = 'dashboard';
danielebarchiesi@0 108 $this->drupalPost('admin/modules', $edit, t('Save configuration'));
danielebarchiesi@0 109 $this->assertText(t('The configuration options have been saved.'), t('Modules status has been updated.'));
danielebarchiesi@0 110 module_list(TRUE);
danielebarchiesi@0 111 $this->assertTrue(module_exists('dashboard'), t('Dashboard enabled.'));
danielebarchiesi@0 112
danielebarchiesi@0 113 $this->drupalGet('admin/dashboard');
danielebarchiesi@0 114 $this->assertRaw($custom_block['title'], t('Block still appears on the dashboard.'));
danielebarchiesi@0 115 }
danielebarchiesi@0 116
danielebarchiesi@0 117 /**
danielebarchiesi@0 118 * Tests that administrative blocks are available for the dashboard.
danielebarchiesi@0 119 */
danielebarchiesi@0 120 function testBlockAvailability() {
danielebarchiesi@0 121 // Test "Recent comments", which should be available (defined as
danielebarchiesi@0 122 // "administrative") but not enabled.
danielebarchiesi@0 123 $this->drupalGet('admin/dashboard');
danielebarchiesi@0 124 $this->assertNoText(t('Recent comments'), t('"Recent comments" not on dashboard.'));
danielebarchiesi@0 125 $this->drupalGet('admin/dashboard/drawer');
danielebarchiesi@0 126 $this->assertText(t('Recent comments'), t('Drawer of disabled blocks includes a block defined as "administrative".'));
danielebarchiesi@0 127 $this->assertNoText(t('Syndicate'), t('Drawer of disabled blocks excludes a block not defined as "administrative".'));
danielebarchiesi@0 128 $this->drupalGet('admin/dashboard/configure');
danielebarchiesi@0 129 $elements = $this->xpath('//select[@id=:id]//option[@selected="selected"]', array(':id' => 'edit-blocks-comment-recent-region'));
danielebarchiesi@0 130 $this->assertTrue($elements[0]['value'] == 'dashboard_inactive', t('A block defined as "administrative" defaults to dashboard_inactive.'));
danielebarchiesi@0 131
danielebarchiesi@0 132 // Now enable the block on the dashboard.
danielebarchiesi@0 133 $values = array();
danielebarchiesi@0 134 $values['blocks[comment_recent][region]'] = 'dashboard_main';
danielebarchiesi@0 135 $this->drupalPost('admin/dashboard/configure', $values, t('Save blocks'));
danielebarchiesi@0 136 $this->drupalGet('admin/dashboard');
danielebarchiesi@0 137 $this->assertText(t('Recent comments'), t('"Recent comments" was placed on dashboard.'));
danielebarchiesi@0 138 $this->drupalGet('admin/dashboard/drawer');
danielebarchiesi@0 139 $this->assertNoText(t('Recent comments'), t('Drawer of disabled blocks excludes enabled blocks.'));
danielebarchiesi@0 140 }
danielebarchiesi@0 141 }