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 }
|