first import
This commit is contained in:
106
sites/all/modules/features_extra/tests/fe_block.test
Normal file
106
sites/all/modules/features_extra/tests/fe_block.test
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Tests for the Features Extra Block module.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the custom block functionality.
|
||||
*/
|
||||
class FeaturesExtraBlockTestCase extends DrupalWebTestCase {
|
||||
// The installation profile that will be used to run the tests.
|
||||
protected $profile = 'testing';
|
||||
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Install, revert and override',
|
||||
'description' => 'Tests if a feature containing blocks and block settings can be installed, reverted and detected as being overridden.',
|
||||
'group' => 'Features Extra',
|
||||
);
|
||||
}
|
||||
|
||||
public function setUp() {
|
||||
parent::setUp(array(
|
||||
'features_extra_test',
|
||||
));
|
||||
|
||||
$admin_user = $this->drupalCreateUser(array('administer features'));
|
||||
$this->drupalLogin($admin_user);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check that all modules that are required for the test suite are available.
|
||||
*/
|
||||
public function testRequiredModules() {
|
||||
$required_modules = array(
|
||||
'block',
|
||||
'ctools',
|
||||
'features',
|
||||
'fe_block',
|
||||
'features_extra_test',
|
||||
);
|
||||
|
||||
foreach ($required_modules as $module) {
|
||||
$this->assertTrue(module_exists($module), format_string('The required module @module exists.', array('@module' => $module)));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if custom blocks can be reverted and that overrides are detected.
|
||||
*/
|
||||
public function testBlockRevert() {
|
||||
module_load_include('inc', 'features', 'features.export');
|
||||
|
||||
// Ensure that the exported custom block is properly available.
|
||||
$bid = fe_block_get_bid('features_extra_test_block');
|
||||
$block = block_load('block', $bid);
|
||||
$this->assertTrue(!empty($block), 'The reverted block is present.');
|
||||
|
||||
$components = array(
|
||||
'fe_block_boxes',
|
||||
'fe_block_settings',
|
||||
);
|
||||
|
||||
foreach ($components as $component) {
|
||||
// Ensure that the component is in its default state initially.
|
||||
$states = features_get_component_states(array('features_extra_test'), FALSE, TRUE);
|
||||
$this->assertTrue($states['features_extra_test'][$component] === FEATURES_DEFAULT, t('@component state: Default.', array('@component' => $component)));
|
||||
|
||||
// Override component and test that Features detects the override.
|
||||
$callback = "override_{$component}";
|
||||
$this->$callback($block);
|
||||
$states = features_get_component_states(array('features_extra_test'), FALSE, TRUE);
|
||||
$this->assertTrue($states['features_extra_test'][$component] === FEATURES_OVERRIDDEN, t('@component state: Overridden.', array('@component' => $component)));
|
||||
}
|
||||
|
||||
// Revert component and ensure that component has reverted.
|
||||
features_revert(array('features_extra_test' => $components));
|
||||
drupal_flush_all_caches();
|
||||
foreach ($components as $component) {
|
||||
$states = features_get_component_states(array('features_extra_test'), FALSE, TRUE);
|
||||
$this->assertTrue($states['features_extra_test'][$component] === FEATURES_DEFAULT, t('@component reverted successfully.', array('@component' => $component)));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the content of the test block so the component becomes overridden.
|
||||
*/
|
||||
protected function override_fe_block_boxes($block) {
|
||||
db_update('block_custom')
|
||||
->fields(array('body' => 'overridden'))
|
||||
->condition('bid', $block->bid)
|
||||
->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Change a setting of the test block so the component becomes overridden.
|
||||
*/
|
||||
protected function override_fe_block_settings($block) {
|
||||
db_update('block')
|
||||
->fields(array('region' => 'footer'))
|
||||
->condition('bid', $block->bid)
|
||||
->condition('theme', 'bartik')
|
||||
->execute();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user