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