diff --git a/modules/system/system.test b/modules/system/system.test index fc144dc6e68c08db48217b121737483454f2da83..7aec7a235874a59384e8dcf144cbf0f4a7f2165e 100644 --- a/modules/system/system.test +++ b/modules/system/system.test @@ -123,7 +123,7 @@ class EnableDisableCoreTestCase extends DrupalWebTestCase { } } -class IPAddressBlocking extends DrupalWebTestCase { +class IPAddressBlockingTestCase extends DrupalWebTestCase { protected $blocking_user; /** @@ -194,7 +194,7 @@ class IPAddressBlocking extends DrupalWebTestCase { } } -class CronRun extends DrupalWebTestCase { +class CronRunTestCase extends DrupalWebTestCase { /** * Implementation of getInfo(). */ @@ -227,4 +227,71 @@ class CronRun extends DrupalWebTestCase { // Execute cron directly. $this->assertTrue(drupal_cron_run(), t('Cron ran successfully.')); } -} \ No newline at end of file +} + +class AdminOverviewTestCase extends DrupalWebTestCase { + /** + * Implementation of getInfo(). + */ + function getInfo() { + return array( + 'name' => t('Admin overview'), + 'description' => t('Confirm that the admin overview page appears as expected.'), + 'group' => t('System') + ); + } + + /** + * Test the overview page by task. + */ + function testAdminOverview() { + $admin_user1 = $this->drupalCreateUser(array('access administration pages')); + $this->drupalLogin($admin_user1); + + $this->drupalGet('admin'); + $this->checkOverview(); + + $this->drupalGet('admin/by-module'); + $this->checkOverview(); + + // Comments on permissions follow the format: [task], [module] that the permission relates to. + $permissions = array(); + $permissions[] = 'access administration pages'; + $permissions[] = 'administer comments'; // Content management, Comment. + $permissions[] = 'administer blocks'; // Site building, Block. + $permissions[] = 'administer filters'; // Site configuration, Filter. + $permissions[] = 'administer users'; // User management, User. + $permissions[] = 'access site reports'; // Reports, Database logging. + $admin_user2 = $this->drupalCreateUser($permissions); + $this->drupalLogin($admin_user2); + + $this->drupalGet('admin'); + $this->checkOverview(array(t('Content management'), t('User management'), t('Reports'), t('Site building'), t('Site configuration'))); + + $this->drupalGet('admin/by-module'); + $this->checkOverview(array(t('Comment'), t('Block'), t('Filter'), t('User'), t('Database logging'))); + } + + /** + * Check the overview page panels. + * + * @param array $panels List of panels to be found. + */ + function checkOverview(array $panels = array()) { + if ($this->parse()) { + $found = 0; + $extra = 0; + $divs = $this->elements->xpath("//div[@class='admin-panel']"); + foreach ($divs as $panel) { + if (in_array(trim($panel->h3), $panels)) { + $found++; + } + else { + $extra++; + } + } + $this->assertTrue(count($panels) == $found, t('Required panels found.')); + $this->assertFalse($extra, t('No extra panels found.')); + } + } +}