danielebarchiesi@2: danielebarchiesi@2: */ danielebarchiesi@2: danielebarchiesi@2: danielebarchiesi@2: class FlexsliderTestCase extends DrupalWebTestCase { danielebarchiesi@2: protected $admin_user; danielebarchiesi@2: protected $any_user; danielebarchiesi@2: danielebarchiesi@2: public static function getInfo() { danielebarchiesi@2: return array( danielebarchiesi@2: 'name' => t('FlexSlider tests'), danielebarchiesi@2: 'description' => t('Test the FlexSlider presets, configuration options and permission controls.'), danielebarchiesi@2: 'group' => t('FlexSlider'), danielebarchiesi@2: ); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: function setUp() { danielebarchiesi@2: parent::setUp('libraries', 'ctools', 'flexslider'); danielebarchiesi@2: danielebarchiesi@2: // Create users danielebarchiesi@2: $this->admin_user = $this->drupalCreateUser(array('administer flexslider')); danielebarchiesi@2: $this->any_user = $this->drupalCreateuser(array('access administration pages')); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: function testAdminAccess() { danielebarchiesi@2: danielebarchiesi@2: // Login as the admin user danielebarchiesi@2: $this->drupalLogin($this->admin_user); danielebarchiesi@2: danielebarchiesi@2: // Load admin page danielebarchiesi@2: $this->drupalGet('admin/config/media/flexslider'); danielebarchiesi@2: $this->assertResponse(200, t('Administrative permission allows access to administration page.')); danielebarchiesi@2: danielebarchiesi@2: // Logout as admin user danielebarchiesi@2: $this->drupalLogout(); danielebarchiesi@2: danielebarchiesi@2: // Login as any user danielebarchiesi@2: $this->drupalLogin($this->any_user); danielebarchiesi@2: danielebarchiesi@2: // Attempt to load admin page danielebarchiesi@2: $this->drupalGet('admin/config/media/flexslider'); danielebarchiesi@2: $this->assertResponse(403, t('Regular users do not have access to administrative pages.')); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: function testOptionSetCrud() { danielebarchiesi@2: // Login as the admin user danielebarchiesi@2: $this->drupalLogin($this->admin_user); danielebarchiesi@2: $testsets = array('testset', 'testset2'); danielebarchiesi@2: danielebarchiesi@2: foreach ($testsets as $name) { danielebarchiesi@2: // Create a new optionset with default settings danielebarchiesi@2: $optionset = flexslider_optionset_create(array('name' => $name)); danielebarchiesi@2: $this->assertTrue($optionset->name == $name, t('Optionset object created: @name', array('@name' => $optionset->name))); danielebarchiesi@2: $this->assertFalse(empty($optionset->options), t('Create optionset works.')); danielebarchiesi@2: danielebarchiesi@2: // Save the optionset to the database danielebarchiesi@2: $optionset = flexslider_optionset_save($optionset, TRUE); danielebarchiesi@2: $this->assertFalse(FALSE === $optionset, t('Optionset saved to database.')); danielebarchiesi@2: danielebarchiesi@2: // Read the values from the database danielebarchiesi@2: $optionset = flexslider_optionset_load($name); danielebarchiesi@2: danielebarchiesi@2: $this->assertTrue(is_object($optionset), t('Loaded option set.')); danielebarchiesi@2: $this->assertEqual($name, $optionset->name, t('Loaded name matches: @name', array('@name' => $optionset->name))); danielebarchiesi@2: danielebarchiesi@2: $default_optionset = flexslider_optionset_create(); danielebarchiesi@2: foreach ($default_optionset->options as $key => $value) { danielebarchiesi@2: $this->assertEqual($value, $optionset->options[$key], t('Option @option matches saved value.', array('@option' => $key))); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Load all optionsets danielebarchiesi@2: $optionsets = flexslider_optionset_load_all(); danielebarchiesi@2: $this->assertTrue(is_array($optionsets), t('Array of optionsets loaded')); danielebarchiesi@2: $this->assertTrue(count($optionsets) == 3, t('Proper number of optionsets loaded (two created, one default): 3')); danielebarchiesi@2: danielebarchiesi@2: // Ensure they all loaded correctly danielebarchiesi@2: foreach ($optionsets as $optionset) { danielebarchiesi@2: $this->assertTrue(isset($optionset->name), t('Loaded optionsets have a defined machine name')); danielebarchiesi@2: $this->assertTrue(isset($optionset->title), t('Loaded optionsets have a defined human readable name (title)')); danielebarchiesi@2: $this->assertTrue(isset($optionset->options), t('Loaded optionsets have a defined array of options')); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Update the optionset danielebarchiesi@2: $test_options = _flexslider_test_options(); danielebarchiesi@2: $test_options = $test_options['valid']; danielebarchiesi@2: danielebarchiesi@2: // Load one of the test option sets danielebarchiesi@2: $optionset = flexslider_optionset_load($testsets[0]); danielebarchiesi@2: danielebarchiesi@2: // Change the settings danielebarchiesi@2: $optionset->options += $test_options['set2']; danielebarchiesi@2: danielebarchiesi@2: // Save the updated values danielebarchiesi@2: $optionset = flexslider_optionset_save($optionset); danielebarchiesi@2: $this->assertFalse(FALSE == $optionset, t('Saved updates to optionset to database.')); danielebarchiesi@2: danielebarchiesi@2: // Load the values from the database again danielebarchiesi@2: $optionset = flexslider_optionset_load($testsets[0]); danielebarchiesi@2: danielebarchiesi@2: // Compare settings to the test options danielebarchiesi@2: foreach ($test_options['set2'] as $key => $value) { danielebarchiesi@2: $this->assertEqual($optionset->options[$key], $value, t('Saved value matches set value: @key', array('@key' => $key))); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Delete the optionset danielebarchiesi@2: $this->assertTrue(flexslider_optionset_exists($optionset->name), t('Optionset exists and is ready to be deleted.')); danielebarchiesi@2: flexslider_optionset_delete($optionset->name); danielebarchiesi@2: danielebarchiesi@2: // Ensure the delete is successfull danielebarchiesi@2: $this->assertFalse(flexslider_optionset_exists($optionset->name), t('Optionset successfully deleted: @name', array('@name' => $optionset->name))); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: function testOptionSetForm() { danielebarchiesi@2: danielebarchiesi@2: // Login with admin user danielebarchiesi@2: $this->drupalLogin($this->admin_user); danielebarchiesi@2: danielebarchiesi@2: // ------------ Test Option Set Add ------------ // danielebarchiesi@2: // Load create form danielebarchiesi@2: $this->drupalGet('admin/config/media/flexslider/add'); danielebarchiesi@2: $this->assertResponse(200, t('Administrative user can reach the "Add" form.')); danielebarchiesi@2: danielebarchiesi@2: // Save new optionset danielebarchiesi@2: $optionset = array(); danielebarchiesi@2: $optionset['title'] = 'testset'; danielebarchiesi@2: $optionset['name'] = 'testset'; danielebarchiesi@2: $this->drupalPost('admin/config/media/flexslider/add', $optionset, t('Save')); danielebarchiesi@2: $this->assertResponse(200); danielebarchiesi@2: $this->assertText('testset has been created.', t('Successfully saved the new optionset "testset"')); danielebarchiesi@2: danielebarchiesi@2: // Attempt to save option set of the same name again danielebarchiesi@2: $this->drupalPost('admin/config/media/flexslider/add', $optionset, t('Save')); danielebarchiesi@2: $this->assertResponse(200); danielebarchiesi@2: $this->assertText("The machine-readable name is already in use. It must be unique.", t("Blocked the creation of duplicate named optionset.")); danielebarchiesi@2: danielebarchiesi@2: // ------------ Test Option Set Edit ------------ // danielebarchiesi@2: // Attempt to save each option value danielebarchiesi@2: $options = _flexslider_test_options(); danielebarchiesi@2: danielebarchiesi@2: foreach ($options['valid'] as $testset) { danielebarchiesi@2: $this->drupalPost('admin/config/media/flexslider/list/default/edit', $testset, t('Save')); danielebarchiesi@2: $this->assertResponse(200); danielebarchiesi@2: danielebarchiesi@2: // Test saved values loaded into form danielebarchiesi@2: $this->drupalGet('admin/config/media/flexslider/list/default/edit'); danielebarchiesi@2: $this->assertResponse(200, t('Default optionset reloaded.')); danielebarchiesi@2: foreach ($testset as $key => $option) { danielebarchiesi@2: $this->assertFieldByName($key, $option, t('Value for @key appears in form correctly.', array('@key' => $key))); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // ------------ Test Option Set Delete ------------ // danielebarchiesi@2: $testset = flexslider_optionset_load('testset'); danielebarchiesi@2: danielebarchiesi@2: // Test the delete workflow danielebarchiesi@2: $this->drupalGet("admin/config/media/flexslider/list/$testset->name/delete"); danielebarchiesi@2: $this->assertResponse(200); danielebarchiesi@2: $this->assertText("Are you sure you want to delete $testset->name?", t('Delete confirmation form loaded.')); danielebarchiesi@2: $this->drupalPost("admin/config/media/flexslider/list/$testset->name/delete", '', 'Delete'); danielebarchiesi@2: $this->assertResponse(200); danielebarchiesi@2: $this->assertText("The item has been deleted.", t('Deleted test set using form.')); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Test configuration options danielebarchiesi@2: * danielebarchiesi@2: * @return array danielebarchiesi@2: * Returns an array of options to test saving. danielebarchiesi@2: */ danielebarchiesi@2: function _flexslider_test_options() { danielebarchiesi@2: // Valid option set data danielebarchiesi@2: $valid = array( danielebarchiesi@2: 'set1' => _flexslider_optionset_defaults(), danielebarchiesi@2: 'set2' => array( danielebarchiesi@2: 'animation' => 'slide', danielebarchiesi@2: 'startAt' => 4, danielebarchiesi@2: // @todo add more option tests danielebarchiesi@2: ), danielebarchiesi@2: ); danielebarchiesi@2: danielebarchiesi@2: // Invalid edge cases danielebarchiesi@2: $error = array(); danielebarchiesi@2: danielebarchiesi@2: return array('valid' => $valid, 'error' => $error); danielebarchiesi@2: }