'Reaction: block', 'description' => 'Test block reaction.', 'group' => 'Context', ); } function setUp() { parent::setUp('context', 'ctools', 'block'); $admin_user = $this->drupalCreateUser(array( 'administer site configuration', 'administer blocks' )); $this->drupalLogin($admin_user); } function test() { ctools_include('export'); $context = ctools_export_new_object('context'); $context->name = 'testcontext'; $context->conditions = array('sitewide' => array('values' => array(1))); $context->reactions = array('block' => array('blocks' => array( 'user-online' => array( 'module' => 'user', 'delta' => 'online', 'region' => 'sidebar_first', 'weight' => 0, ), ))); $saved = context_save($context); $this->assertTrue($saved, "Context 'testcontext' saved."); theme_enable(array('bartik')); variable_set('theme_default', 'bartik'); $this->refreshVariables(); $this->drupalGet('node'); $this->assertText('Who\'s online'); // Test title override of code provided block $edit = array('title' => 'Context Online Block'); $this->drupalPost('admin/structure/block/manage/user/online/configure', $edit, t('Save block')); $this->drupalPost('admin/config/development/performance', array(), t('Clear all caches')); $this->drupalGet('node'); $this->assertText('Context Online Block'); // Test title of custom block $edit = array( 'info' => 'Context Custom Block Info', 'title' => 'Context Custom Block Title', 'body[value]' => $this->randomName(32), ); $this->drupalPost('admin/structure/block/add', $edit, t('Save block')); $bid = db_query("SELECT bid FROM {block_custom} WHERE info = :info", array(':info' => $edit['info']))->fetchField(); $context->reactions['block']['blocks']["block-{$bid}"] = array( 'module' => 'block', 'delta' => $bid, 'region' => 'sidebar_first', 'weight' => 2, ); $saved = context_save($context); $this->assertTrue($saved, "Context 'testcontext' saved."); $this->drupalGet('node'); $this->assertText('Context Custom Block Title'); // Cleanup context_delete($context); } } class ContextReactionBlockAjaxTest extends DrupalWebTestCase { protected $profile = 'testing'; public static function getInfo() { return array( 'name' => 'Reaction: block ajax', 'description' => 'Test block reaction ajax behavior.', 'group' => 'Context', ); } function setUp() { parent::setUp('context', 'context_ui', 'ctools'); $admin_user = $this->drupalCreateUser(array('context ajax block access')); $this->drupalLogin($admin_user); } function test() { $this->drupalGet('node', array( 'query' => array('context_block' => 'user-online,testcontext') )); $this->assertText('"status":1', 'Successful return status.'); $this->assertText('Who\\u0027s online', 'Expected text in block data.'); } } class ContextReactionBlockAjaxAccessTest extends DrupalWebTestCase { protected $profile = 'testing'; public static function getInfo() { return array( 'name' => 'Reaction: block ajax access', 'description' => 'Test block reaction ajax access behavior.', 'group' => 'Context', ); } function setUp() { parent::setUp('context', 'ctools'); $admin_user = $this->drupalCreateUser(); $this->drupalLogin($admin_user); } function test() { $this->drupalGet('node', array( 'query' => array('context_block' => 'user-online,testcontext') )); $this->assertText('"status":0', 'Failed return status.'); } } class ContextReactionMenuTest extends DrupalWebTestCase { protected $profile = 'testing'; public static function getInfo() { return array( 'name' => 'Reaction: menu', 'description' => 'Test menu reaction.', 'group' => 'Context', ); } function setUp() { parent::setUp('context', 'ctools', 'menu', 'blog'); $admin_user = $this->drupalCreateUser(array( 'administer menu', 'administer nodes', 'administer site configuration', 'create blog content', )); $this->drupalLogin($admin_user); } function test() { ctools_include('export'); $context = ctools_export_new_object('context'); $context->name = 'testcontext'; $context->conditions = array('sitewide' => array('values' => array(1))); $context->reactions = array('menu' => 'node/add'); $saved = context_save($context); $this->assertTrue($saved, "Context 'testcontext' saved."); $this->drupalPost('admin/structure/menu/settings', array('menu_main_links_source' => 'navigation'), 'Save configuration'); theme_enable(array('bartik')); variable_set('theme_default', 'bartik'); $this->refreshVariables(); $output = $this->drupalGet('user'); $url = url('node/add'); $active = $this->xpath('//li[contains(@class, "active")]/a[@href="' . $url . '"]'); $this->assertTrue(!empty($active), t('Active menu item found.')); // Cleanup context_delete($context); } } class ContextReactionBreadcrumbTest extends DrupalWebTestCase { protected $profile = 'testing'; public static function getInfo() { return array( 'name' => 'Reaction: breadcrumb', 'description' => 'Test breadcrumb reaction.', 'group' => 'Context', ); } function setUp() { parent::setUp('context', 'ctools'); $admin_user = $this->drupalCreateUser(array( 'access administration pages', 'administer nodes', 'administer site configuration' )); $this->drupalLogin($admin_user); } function test() { ctools_include('export'); $context = ctools_export_new_object('context'); $context->name = 'testcontext'; $context->conditions = array('path' => array('values' => array('node'))); $context->reactions = array('breadcrumb' => 'admin/structure'); $saved = context_save($context); $this->assertTrue($saved, "Context 'testcontext' saved."); theme_enable(array('bartik')); variable_set('theme_default', 'bartik'); $this->refreshVariables(); $output = $this->drupalGet('node'); $this->assertText('Home » Administration » Structure'); $output = $this->drupalGet('user'); $this->assertNoText('Home » Administration » Structure'); // Cleanup context_delete($context); } } class ContextReactionThemeHtmlTest extends DrupalWebTestCase { protected $profile = 'testing'; public static function getInfo() { return array( 'name' => 'Reaction: theme html', 'description' => 'Test theme html reaction.', 'group' => 'Context', ); } function setUp() { parent::setUp('context', 'ctools'); $admin_user = $this->drupalCreateUser(array( 'access administration pages', 'administer nodes', 'administer site configuration' )); $this->drupalLogin($admin_user); } function test() { ctools_include('export'); $context = ctools_export_new_object('context'); $context->name = 'testcontext'; $context->conditions = array('sitewide' => array('values' => array(1))); $context->reactions = array('theme_html' => array('class' => 'context-test-class')); $saved = context_save($context); $this->assertTrue($saved, "Context 'testcontext' saved."); $output = $this->drupalGet('node'); $this->assertRaw('context-test-class'); // Cleanup context_delete($context); } } class ContextReactionRegionTest extends DrupalWebTestCase { protected $profile = 'testing'; public static function getInfo() { return array( 'name' => 'Reaction: Region', 'description' => 'Test Region disable reaction.', 'group' => 'Context', ); } function setUp() { parent::setUp('context', 'ctools'); $admin_user = $this->drupalCreateUser(array( 'access administration pages', 'administer nodes', 'administer site configuration' )); $this->drupalLogin($admin_user); } function test() { ctools_include('export'); theme_enable(array('bartik')); variable_set('theme_default', 'bartik'); global $theme; $context = ctools_export_new_object('context'); $context->name = 'testcontext'; $context->conditions = array('sitewide' => array('values' => array(1))); $context->reactions = array( 'block' => array( 'blocks' => array( 'user-online' => array( 'module' => 'user', 'delta' => 'online', 'region' => 'sidebar_first', 'weight' => '-10', ), ), ), 'region' => array('bartik' => array('disable' => array('sidebar_first' => 'sidebar_first'))) ); $saved = context_save($context); $this->assertTrue($saved, "Context 'testcontext' saved."); $output = $this->drupalGet('node'); $this->assertNoText("Who's online"); // Cleanup context_delete($context); } }