Newer
Older
<?php
/**
* @file
* Tests for the AddThis-module.
*/
class AddThisFunctionalityTestCase extends DrupalWebTestCase {
parent::setUp(AddThis::MODULE_NAME);
public function getInfo() {
return array(
'name' => 'AddThis: Functionality tests',
'description' => 'Functionality tests for the AddThis-module.',
'group' => 'AddThis',
);
}
Jani Palsamäki
committed
$this->addThisShouldProvideHelp();
Jani Palsamäki
committed
$this->addThisShouldDefineField();
Jani Palsamäki
committed
$this->addThisShouldDefineBlock();
Jani Palsamäki
committed
$this->addThisSystemSettingsShouldBeAbleToBeSaved();
Jani Palsamäki
committed
private function addThisShouldProvideHelp() {
$helpText = module_invoke(AddThis::MODULE_NAME, 'help', 'admin/help#addthis', NULL);
$this->assertTrue(TestHelper::stringContains($helpText, t('About')), 'AddThis-module should provide help.');
Jani Palsamäki
committed
private function addThisShouldDefineField() {
$fieldInfo = module_invoke(AddThis::MODULE_NAME, 'field_info');
$this->assertTrue(is_array($fieldInfo), t('AddThis-module should define a field.'));
Jani Palsamäki
committed
private function addThisShouldDefineBlock() {
$blockInfo = module_invoke(AddThis::MODULE_NAME, 'block_info');
$this->assertTrue(is_array($blockInfo), t('AddThis-module should define a block.'));
private function addThisShouldBeAbleToBeUsedAsField() {
$edit = array();
$edit["fields[_add_new_field][label]"] = $label;
$edit["fields[_add_new_field][field_name]"] = $label;
$edit["fields[_add_new_field][type]"] = 'addthis';
$edit["fields[_add_new_field][widget_type]"] = 'addthis_button';
$this->drupalPost('admin/structure/types/manage/article/fields', $edit, t('Save'));
$this->assertText($label, 'AddThis-module should be able to be added as a field.');
Jani Palsamäki
committed
$this->addThisShouldProvideWidgetTypeCompactButton();
Jani Palsamäki
committed
$this->addThisShouldProvideWidgetTypeDisabled();
Jani Palsamäki
committed
$this->addThisShouldProvideWidgetTypeLargeButton();
Jani Palsamäki
committed
$this->addThisShouldProvideWidgetTypeSharecount();
Jani Palsamäki
committed
$this->addThisShouldProvideWidgetTypeToolbox();
$this->addThisFieldSettingsShouldBeAbleToBeSaved($label);
Jani Palsamäki
committed
private function addThisShouldProvideWidgetTypeCompactButton() {
$this->assertText('Compact button', 'AddThis-module should provide widget type "Compact button"');
Jani Palsamäki
committed
private function addThisShouldProvideWidgetTypeDisabled() {
$this->assertText('Disabled', 'AddThis-module should provide widget type "Disabled"');
Jani Palsamäki
committed
private function addThisShouldProvideWidgetTypeLargeButton() {
$this->assertText('Large button', 'AddThis-module should provide widget type "Large button"');
Jani Palsamäki
committed
private function addThisShouldProvideWidgetTypeSharecount() {
$this->assertText('Sharecount', 'AddThis-module should provide widget type "Sharecount"');
Jani Palsamäki
committed
private function addThisShouldProvideWidgetTypeToolbox() {
$this->assertText('Toolbox', 'AddThis-module should provide widget type "Toolbox"');
private function addThisFieldSettingsShouldBeAbleToBeSaved($label) {
$edit = array();
Jani Palsamäki
committed
$edit["field[settings][addthis_style]"] = AddThis::WIDGET_TYPE_LARGE_BUTTON;
$this->drupalPost(NULL, $edit, t('Save field settings'));
$this->assertText(t("Updated field @name field settings.", array('@name' => $label)),
'AddThis-module field settings should be able to be saved.');
}
$this->drupalGet('admin/structure/block');
$this->assertRaw(t('An AddThis-block.'));
Jani Palsamäki
committed
$this->addThisBlockSettingsShouldBeAbleToBeSaved();
}
private function addThisBlockSettingsShouldBeAbleToBeSaved() {
$edit = array();
$edit[AddThis::BLOCK_WIDGET_TYPE_KEY] = AddThis::WIDGET_TYPE_COMPACT_BUTTON;
Jani Palsamäki
committed
$this->drupalPost('admin/structure/block/manage/addthis/addthis_block/configure', $edit, t('Save block'));
$this->assertText(t('The block configuration has been saved.'));
}
private function addThisSystemSettingsShouldBeAbleToBeSaved() {
$edit = array();
$profileId = TestHelper::generateRandomLowercaseString();
Jani Palsamäki
committed
$edit[AddThis::PROFILE_ID_KEY] = $profileId;
$serviceName = '2linkme';
$edit["addthis_enabled_services[$serviceName]"] = $serviceName;
Jani Palsamäki
committed
$this->drupalPost('admin/config/system/addthis', $edit, t('Save configuration'));
$this->assertText(t('The configuration options have been saved.'), 'AddThis system settings should be able to be saved.');
$this->addThisProfileIdShouldBeAbleToBeSaved($profileId);
$this->addThisEnabledServicesShouldBeAbleToBeSaved($serviceName);
}
private function addThisProfileIdShouldBeAbleToBeSaved($profileId) {
$this->assertFieldByName(AddThis::PROFILE_ID_KEY, $profileId, 'AddThis profile ID should be able to be saved.');
}
private function addThisEnabledServicesShouldBeAbleToBeSaved($serviceName) {
$this->assertFieldChecked('edit-addthis-enabled-services-' . $serviceName, 'AddThis enabled services should be able to be saved.');
}
private function createAndLoginUser() {
$this->user = $this->createAdminUser();
$this->drupalLogin($this->user);
}
private function createAdminUser() {
return $this->drupalCreateUser(
array(
'administer addthis',
'administer blocks',
'administer content types',
'administer nodes'
)
);
}
class AddThisPermissionsTestCase extends DrupalWebTestCase {
private $user;
public function setUp() {
parent::setUp(AddThis::MODULE_NAME);
$this->createAndLoginUser();
}
public function getInfo() {
return array(
'description' => 'Permission tests for the AddThis-module.',
'group' => 'AddThis',
);
}
public function testUserWithoutAdministerAddThisPermissionShouldNotBeAllowedToAccessAddThisSystemSettings() {
$this->drupalGet('admin/config/system/addthis');
$this->assertRaw(t('Access denied'));
}
private function createAdminUserWithoutAddThisAdministrationPermission() {
return $this->drupalCreateUser(array('administer content types'));
}
private function createAndLoginUser() {
$this->user = $this->createAdminUserWithoutAddThisAdministrationPermission();
$this->drupalLogin($this->user);
}
public static function stringContains($string, $contains) {
return strpos($string, $contains) !== FALSE;
}
public static function generateRandomLowercaseString() {
return drupal_strtolower(DrupalWebTestCase::randomName());
}