popsu-d7/sites/all/modules/context/tests/context.reactions.test
2015-04-26 18:38:56 +02:00

312 lines
9.0 KiB
Plaintext

<?php
class ContextReactionBlockTest extends DrupalWebTestCase {
protected $profile = 'testing';
public static function getInfo() {
return array(
'name' => '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);
}
}