summaryrefslogtreecommitdiff
path: root/kolab.org/www/drupal-7.26/modules/dashboard/dashboard.test
diff options
context:
space:
mode:
Diffstat (limited to 'kolab.org/www/drupal-7.26/modules/dashboard/dashboard.test')
-rw-r--r--kolab.org/www/drupal-7.26/modules/dashboard/dashboard.test141
1 files changed, 141 insertions, 0 deletions
diff --git a/kolab.org/www/drupal-7.26/modules/dashboard/dashboard.test b/kolab.org/www/drupal-7.26/modules/dashboard/dashboard.test
new file mode 100644
index 0000000..06344fc
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/modules/dashboard/dashboard.test
@@ -0,0 +1,141 @@
+<?php
+
+/**
+ * @file
+ * Tests for dashboard.module.
+ */
+
+/**
+ * Tests the Dashboard module blocks.
+ */
+class DashboardBlocksTestCase extends DrupalWebTestCase {
+ public static function getInfo() {
+ return array(
+ 'name' => 'Dashboard blocks',
+ 'description' => 'Test blocks as used by the dashboard.',
+ 'group' => 'Dashboard',
+ );
+ }
+
+ function setUp() {
+ parent::setUp();
+
+ // Create and log in an administrative user having access to the dashboard.
+ $admin_user = $this->drupalCreateUser(array('access dashboard', 'administer blocks', 'access administration pages', 'administer modules'));
+ $this->drupalLogin($admin_user);
+
+ // Make sure that the dashboard is using the same theme as the rest of the
+ // site (and in particular, the same theme used on 403 pages). This forces
+ // the dashboard blocks to be the same for an administrator as for a
+ // regular user, and therefore lets us test that the dashboard blocks
+ // themselves are specifically removed for a user who does not have access
+ // to the dashboard page.
+ theme_enable(array('stark'));
+ variable_set('theme_default', 'stark');
+ variable_set('admin_theme', 'stark');
+ }
+
+ /**
+ * Tests adding a block to the dashboard and checking access to it.
+ */
+ function testDashboardAccess() {
+ // Add a new custom block to a dashboard region.
+ $custom_block = array();
+ $custom_block['info'] = $this->randomName(8);
+ $custom_block['title'] = $this->randomName(8);
+ $custom_block['body[value]'] = $this->randomName(32);
+ $custom_block['regions[stark]'] = 'dashboard_main';
+ $this->drupalPost('admin/structure/block/add', $custom_block, t('Save block'));
+
+ // Ensure admin access.
+ $this->drupalGet('admin/dashboard');
+ $this->assertResponse(200, 'Admin has access to the dashboard.');
+ $this->assertRaw($custom_block['title'], 'Admin has access to a dashboard block.');
+
+ // Ensure non-admin access is denied.
+ $normal_user = $this->drupalCreateUser();
+ $this->drupalLogin($normal_user);
+ $this->drupalGet('admin/dashboard');
+ $this->assertResponse(403, 'Non-admin has no access to the dashboard.');
+ $this->assertNoText($custom_block['title'], 'Non-admin has no access to a dashboard block.');
+ }
+
+ /**
+ * Tests that dashboard regions are displayed or hidden properly.
+ */
+ function testDashboardRegions() {
+ $dashboard_regions = dashboard_region_descriptions();
+
+ // Ensure blocks can be placed in dashboard regions.
+ $this->drupalGet('admin/dashboard/configure');
+ foreach ($dashboard_regions as $region => $description) {
+ $elements = $this->xpath('//option[@value=:region]', array(':region' => $region));
+ $this->assertTrue(!empty($elements), format_string('%region is an available choice on the dashboard block configuration page.', array('%region' => $region)));
+ }
+
+ // Ensure blocks cannot be placed in dashboard regions on the standard
+ // blocks configuration page.
+ $this->drupalGet('admin/structure/block');
+ foreach ($dashboard_regions as $region => $description) {
+ $elements = $this->xpath('//option[@value=:region]', array(':region' => $region));
+ $this->assertTrue(empty($elements), format_string('%region is not an available choice on the block configuration page.', array('%region' => $region)));
+ }
+ }
+
+ /**
+ * Tests that the dashboard module can be re-enabled, retaining its blocks.
+ */
+ function testDisableEnable() {
+ // Add a new custom block to a dashboard region.
+ $custom_block = array();
+ $custom_block['info'] = $this->randomName(8);
+ $custom_block['title'] = $this->randomName(8);
+ $custom_block['body[value]'] = $this->randomName(32);
+ $custom_block['regions[stark]'] = 'dashboard_main';
+ $this->drupalPost('admin/structure/block/add', $custom_block, t('Save block'));
+ $this->drupalGet('admin/dashboard');
+ $this->assertRaw($custom_block['title'], 'Block appears on the dashboard.');
+
+ $edit = array();
+ $edit['modules[Core][dashboard][enable]'] = FALSE;
+ $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+ $this->assertText(t('The configuration options have been saved.'), 'Modules status has been updated.');
+ $this->assertNoRaw('assigned to the invalid region', 'Dashboard blocks gracefully disabled.');
+ module_list(TRUE);
+ $this->assertFalse(module_exists('dashboard'), 'Dashboard disabled.');
+
+ $edit['modules[Core][dashboard][enable]'] = 'dashboard';
+ $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+ $this->assertText(t('The configuration options have been saved.'), 'Modules status has been updated.');
+ module_list(TRUE);
+ $this->assertTrue(module_exists('dashboard'), 'Dashboard enabled.');
+
+ $this->drupalGet('admin/dashboard');
+ $this->assertRaw($custom_block['title'], 'Block still appears on the dashboard.');
+ }
+
+ /**
+ * Tests that administrative blocks are available for the dashboard.
+ */
+ function testBlockAvailability() {
+ // Test "Recent comments", which should be available (defined as
+ // "administrative") but not enabled.
+ $this->drupalGet('admin/dashboard');
+ $this->assertNoText(t('Recent comments'), '"Recent comments" not on dashboard.');
+ $this->drupalGet('admin/dashboard/drawer');
+ $this->assertText(t('Recent comments'), 'Drawer of disabled blocks includes a block defined as "administrative".');
+ $this->assertNoText(t('Syndicate'), 'Drawer of disabled blocks excludes a block not defined as "administrative".');
+ $this->drupalGet('admin/dashboard/configure');
+ $elements = $this->xpath('//select[@id=:id]//option[@selected="selected"]', array(':id' => 'edit-blocks-comment-recent-region'));
+ $this->assertTrue($elements[0]['value'] == 'dashboard_inactive', 'A block defined as "administrative" defaults to dashboard_inactive.');
+
+ // Now enable the block on the dashboard.
+ $values = array();
+ $values['blocks[comment_recent][region]'] = 'dashboard_main';
+ $this->drupalPost('admin/dashboard/configure', $values, t('Save blocks'));
+ $this->drupalGet('admin/dashboard');
+ $this->assertText(t('Recent comments'), '"Recent comments" was placed on dashboard.');
+ $this->drupalGet('admin/dashboard/drawer');
+ $this->assertNoText(t('Recent comments'), 'Drawer of disabled blocks excludes enabled blocks.');
+ }
+}