Test availability of main content.

File

modules/system/system.test, line 1846
Tests for system.module.

Class

SystemMainContentFallback
Test main content rendering fallback provided by system module.

Code

function testMainContentFallback() {
  $edit = array();

  // Disable the dashboard module, which depends on the block module.
  $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.');

  // Disable the block module.
  $edit['modules[Core][block][enable]'] = FALSE;
  $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
    ->assertFalse(module_exists('block'), 'Block module disabled.');

  // At this point, no region is filled and fallback should be triggered.
  $this
    ->drupalGet('admin/config/system/site-information');
  $this
    ->assertField('site_name', 'Admin interface still available.');

  // Fallback should not trigger when another module is handling content.
  $this
    ->drupalGet('system-test/main-content-handling');
  $this
    ->assertRaw('id="system-test-content"', 'Content handled by another module');
  $this
    ->assertText(t('Content to test main content fallback'), 'Main content still displayed.');

  // Fallback should trigger when another module
  // indicates that it is not handling the content.
  $this
    ->drupalGet('system-test/main-content-fallback');
  $this
    ->assertText(t('Content to test main content fallback'), 'Main content fallback properly triggers.');

  // Fallback should not trigger when another module is handling content.
  // Note that this test ensures that no duplicate
  // content gets created by the fallback.
  $this
    ->drupalGet('system-test/main-content-duplication');
  $this
    ->assertNoText(t('Content to test main content fallback'), 'Main content not duplicated.');

  // Request a user* page and see if it is displayed.
  $this
    ->drupalLogin($this->web_user);
  $this
    ->drupalGet('user/' . $this->web_user->uid . '/edit');
  $this
    ->assertField('mail', 'User interface still available.');

  // Enable the block module again.
  $this
    ->drupalLogin($this->admin_user);
  $edit = array();
  $edit['modules[Core][block][enable]'] = 'block';
  $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('block'), 'Block module re-enabled.');
}