danielebarchiesi@2
|
1 <?php
|
danielebarchiesi@2
|
2
|
danielebarchiesi@2
|
3 /**
|
danielebarchiesi@2
|
4 * @file
|
danielebarchiesi@2
|
5 * Test cases for FlexSlider
|
danielebarchiesi@2
|
6 *
|
danielebarchiesi@2
|
7 * @author Mathew Winstone <mwinstone@coldfrontlabs.ca>
|
danielebarchiesi@2
|
8 */
|
danielebarchiesi@2
|
9
|
danielebarchiesi@2
|
10
|
danielebarchiesi@2
|
11 class FlexsliderTestCase extends DrupalWebTestCase {
|
danielebarchiesi@2
|
12 protected $admin_user;
|
danielebarchiesi@2
|
13 protected $any_user;
|
danielebarchiesi@2
|
14
|
danielebarchiesi@2
|
15 public static function getInfo() {
|
danielebarchiesi@2
|
16 return array(
|
danielebarchiesi@2
|
17 'name' => t('FlexSlider tests'),
|
danielebarchiesi@2
|
18 'description' => t('Test the FlexSlider presets, configuration options and permission controls.'),
|
danielebarchiesi@2
|
19 'group' => t('FlexSlider'),
|
danielebarchiesi@2
|
20 );
|
danielebarchiesi@2
|
21 }
|
danielebarchiesi@2
|
22
|
danielebarchiesi@2
|
23 function setUp() {
|
danielebarchiesi@2
|
24 parent::setUp('libraries', 'ctools', 'flexslider');
|
danielebarchiesi@2
|
25
|
danielebarchiesi@2
|
26 // Create users
|
danielebarchiesi@2
|
27 $this->admin_user = $this->drupalCreateUser(array('administer flexslider'));
|
danielebarchiesi@2
|
28 $this->any_user = $this->drupalCreateuser(array('access administration pages'));
|
danielebarchiesi@2
|
29 }
|
danielebarchiesi@2
|
30
|
danielebarchiesi@2
|
31 function testAdminAccess() {
|
danielebarchiesi@2
|
32
|
danielebarchiesi@2
|
33 // Login as the admin user
|
danielebarchiesi@2
|
34 $this->drupalLogin($this->admin_user);
|
danielebarchiesi@2
|
35
|
danielebarchiesi@2
|
36 // Load admin page
|
danielebarchiesi@2
|
37 $this->drupalGet('admin/config/media/flexslider');
|
danielebarchiesi@2
|
38 $this->assertResponse(200, t('Administrative permission allows access to administration page.'));
|
danielebarchiesi@2
|
39
|
danielebarchiesi@2
|
40 // Logout as admin user
|
danielebarchiesi@2
|
41 $this->drupalLogout();
|
danielebarchiesi@2
|
42
|
danielebarchiesi@2
|
43 // Login as any user
|
danielebarchiesi@2
|
44 $this->drupalLogin($this->any_user);
|
danielebarchiesi@2
|
45
|
danielebarchiesi@2
|
46 // Attempt to load admin page
|
danielebarchiesi@2
|
47 $this->drupalGet('admin/config/media/flexslider');
|
danielebarchiesi@2
|
48 $this->assertResponse(403, t('Regular users do not have access to administrative pages.'));
|
danielebarchiesi@2
|
49 }
|
danielebarchiesi@2
|
50
|
danielebarchiesi@2
|
51 function testOptionSetCrud() {
|
danielebarchiesi@2
|
52 // Login as the admin user
|
danielebarchiesi@2
|
53 $this->drupalLogin($this->admin_user);
|
danielebarchiesi@2
|
54 $testsets = array('testset', 'testset2');
|
danielebarchiesi@2
|
55
|
danielebarchiesi@2
|
56 foreach ($testsets as $name) {
|
danielebarchiesi@2
|
57 // Create a new optionset with default settings
|
danielebarchiesi@2
|
58 $optionset = flexslider_optionset_create(array('name' => $name));
|
danielebarchiesi@2
|
59 $this->assertTrue($optionset->name == $name, t('Optionset object created: @name', array('@name' => $optionset->name)));
|
danielebarchiesi@2
|
60 $this->assertFalse(empty($optionset->options), t('Create optionset works.'));
|
danielebarchiesi@2
|
61
|
danielebarchiesi@2
|
62 // Save the optionset to the database
|
danielebarchiesi@2
|
63 $optionset = flexslider_optionset_save($optionset, TRUE);
|
danielebarchiesi@2
|
64 $this->assertFalse(FALSE === $optionset, t('Optionset saved to database.'));
|
danielebarchiesi@2
|
65
|
danielebarchiesi@2
|
66 // Read the values from the database
|
danielebarchiesi@2
|
67 $optionset = flexslider_optionset_load($name);
|
danielebarchiesi@2
|
68
|
danielebarchiesi@2
|
69 $this->assertTrue(is_object($optionset), t('Loaded option set.'));
|
danielebarchiesi@2
|
70 $this->assertEqual($name, $optionset->name, t('Loaded name matches: @name', array('@name' => $optionset->name)));
|
danielebarchiesi@2
|
71
|
danielebarchiesi@2
|
72 $default_optionset = flexslider_optionset_create();
|
danielebarchiesi@2
|
73 foreach ($default_optionset->options as $key => $value) {
|
danielebarchiesi@2
|
74 $this->assertEqual($value, $optionset->options[$key], t('Option @option matches saved value.', array('@option' => $key)));
|
danielebarchiesi@2
|
75 }
|
danielebarchiesi@2
|
76
|
danielebarchiesi@2
|
77 }
|
danielebarchiesi@2
|
78
|
danielebarchiesi@2
|
79 // Load all optionsets
|
danielebarchiesi@2
|
80 $optionsets = flexslider_optionset_load_all();
|
danielebarchiesi@2
|
81 $this->assertTrue(is_array($optionsets), t('Array of optionsets loaded'));
|
danielebarchiesi@2
|
82 $this->assertTrue(count($optionsets) == 3, t('Proper number of optionsets loaded (two created, one default): 3'));
|
danielebarchiesi@2
|
83
|
danielebarchiesi@2
|
84 // Ensure they all loaded correctly
|
danielebarchiesi@2
|
85 foreach ($optionsets as $optionset) {
|
danielebarchiesi@2
|
86 $this->assertTrue(isset($optionset->name), t('Loaded optionsets have a defined machine name'));
|
danielebarchiesi@2
|
87 $this->assertTrue(isset($optionset->title), t('Loaded optionsets have a defined human readable name (title)'));
|
danielebarchiesi@2
|
88 $this->assertTrue(isset($optionset->options), t('Loaded optionsets have a defined array of options'));
|
danielebarchiesi@2
|
89 }
|
danielebarchiesi@2
|
90
|
danielebarchiesi@2
|
91 // Update the optionset
|
danielebarchiesi@2
|
92 $test_options = _flexslider_test_options();
|
danielebarchiesi@2
|
93 $test_options = $test_options['valid'];
|
danielebarchiesi@2
|
94
|
danielebarchiesi@2
|
95 // Load one of the test option sets
|
danielebarchiesi@2
|
96 $optionset = flexslider_optionset_load($testsets[0]);
|
danielebarchiesi@2
|
97
|
danielebarchiesi@2
|
98 // Change the settings
|
danielebarchiesi@2
|
99 $optionset->options += $test_options['set2'];
|
danielebarchiesi@2
|
100
|
danielebarchiesi@2
|
101 // Save the updated values
|
danielebarchiesi@2
|
102 $optionset = flexslider_optionset_save($optionset);
|
danielebarchiesi@2
|
103 $this->assertFalse(FALSE == $optionset, t('Saved updates to optionset to database.'));
|
danielebarchiesi@2
|
104
|
danielebarchiesi@2
|
105 // Load the values from the database again
|
danielebarchiesi@2
|
106 $optionset = flexslider_optionset_load($testsets[0]);
|
danielebarchiesi@2
|
107
|
danielebarchiesi@2
|
108 // Compare settings to the test options
|
danielebarchiesi@2
|
109 foreach ($test_options['set2'] as $key => $value) {
|
danielebarchiesi@2
|
110 $this->assertEqual($optionset->options[$key], $value, t('Saved value matches set value: @key', array('@key' => $key)));
|
danielebarchiesi@2
|
111 }
|
danielebarchiesi@2
|
112
|
danielebarchiesi@2
|
113 // Delete the optionset
|
danielebarchiesi@2
|
114 $this->assertTrue(flexslider_optionset_exists($optionset->name), t('Optionset exists and is ready to be deleted.'));
|
danielebarchiesi@2
|
115 flexslider_optionset_delete($optionset->name);
|
danielebarchiesi@2
|
116
|
danielebarchiesi@2
|
117 // Ensure the delete is successfull
|
danielebarchiesi@2
|
118 $this->assertFalse(flexslider_optionset_exists($optionset->name), t('Optionset successfully deleted: @name', array('@name' => $optionset->name)));
|
danielebarchiesi@2
|
119 }
|
danielebarchiesi@2
|
120
|
danielebarchiesi@2
|
121 function testOptionSetForm() {
|
danielebarchiesi@2
|
122
|
danielebarchiesi@2
|
123 // Login with admin user
|
danielebarchiesi@2
|
124 $this->drupalLogin($this->admin_user);
|
danielebarchiesi@2
|
125
|
danielebarchiesi@2
|
126 // ------------ Test Option Set Add ------------ //
|
danielebarchiesi@2
|
127 // Load create form
|
danielebarchiesi@2
|
128 $this->drupalGet('admin/config/media/flexslider/add');
|
danielebarchiesi@2
|
129 $this->assertResponse(200, t('Administrative user can reach the "Add" form.'));
|
danielebarchiesi@2
|
130
|
danielebarchiesi@2
|
131 // Save new optionset
|
danielebarchiesi@2
|
132 $optionset = array();
|
danielebarchiesi@2
|
133 $optionset['title'] = 'testset';
|
danielebarchiesi@2
|
134 $optionset['name'] = 'testset';
|
danielebarchiesi@2
|
135 $this->drupalPost('admin/config/media/flexslider/add', $optionset, t('Save'));
|
danielebarchiesi@2
|
136 $this->assertResponse(200);
|
danielebarchiesi@2
|
137 $this->assertText('testset has been created.', t('Successfully saved the new optionset "testset"'));
|
danielebarchiesi@2
|
138
|
danielebarchiesi@2
|
139 // Attempt to save option set of the same name again
|
danielebarchiesi@2
|
140 $this->drupalPost('admin/config/media/flexslider/add', $optionset, t('Save'));
|
danielebarchiesi@2
|
141 $this->assertResponse(200);
|
danielebarchiesi@2
|
142 $this->assertText("The machine-readable name is already in use. It must be unique.", t("Blocked the creation of duplicate named optionset."));
|
danielebarchiesi@2
|
143
|
danielebarchiesi@2
|
144 // ------------ Test Option Set Edit ------------ //
|
danielebarchiesi@2
|
145 // Attempt to save each option value
|
danielebarchiesi@2
|
146 $options = _flexslider_test_options();
|
danielebarchiesi@2
|
147
|
danielebarchiesi@2
|
148 foreach ($options['valid'] as $testset) {
|
danielebarchiesi@2
|
149 $this->drupalPost('admin/config/media/flexslider/list/default/edit', $testset, t('Save'));
|
danielebarchiesi@2
|
150 $this->assertResponse(200);
|
danielebarchiesi@2
|
151
|
danielebarchiesi@2
|
152 // Test saved values loaded into form
|
danielebarchiesi@2
|
153 $this->drupalGet('admin/config/media/flexslider/list/default/edit');
|
danielebarchiesi@2
|
154 $this->assertResponse(200, t('Default optionset reloaded.'));
|
danielebarchiesi@2
|
155 foreach ($testset as $key => $option) {
|
danielebarchiesi@2
|
156 $this->assertFieldByName($key, $option, t('Value for @key appears in form correctly.', array('@key' => $key)));
|
danielebarchiesi@2
|
157 }
|
danielebarchiesi@2
|
158 }
|
danielebarchiesi@2
|
159
|
danielebarchiesi@2
|
160 // ------------ Test Option Set Delete ------------ //
|
danielebarchiesi@2
|
161 $testset = flexslider_optionset_load('testset');
|
danielebarchiesi@2
|
162
|
danielebarchiesi@2
|
163 // Test the delete workflow
|
danielebarchiesi@2
|
164 $this->drupalGet("admin/config/media/flexslider/list/$testset->name/delete");
|
danielebarchiesi@2
|
165 $this->assertResponse(200);
|
danielebarchiesi@2
|
166 $this->assertText("Are you sure you want to delete $testset->name?", t('Delete confirmation form loaded.'));
|
danielebarchiesi@2
|
167 $this->drupalPost("admin/config/media/flexslider/list/$testset->name/delete", '', 'Delete');
|
danielebarchiesi@2
|
168 $this->assertResponse(200);
|
danielebarchiesi@2
|
169 $this->assertText("The item has been deleted.", t('Deleted test set using form.'));
|
danielebarchiesi@2
|
170 }
|
danielebarchiesi@2
|
171
|
danielebarchiesi@2
|
172 }
|
danielebarchiesi@2
|
173
|
danielebarchiesi@2
|
174 /**
|
danielebarchiesi@2
|
175 * Test configuration options
|
danielebarchiesi@2
|
176 *
|
danielebarchiesi@2
|
177 * @return array
|
danielebarchiesi@2
|
178 * Returns an array of options to test saving.
|
danielebarchiesi@2
|
179 */
|
danielebarchiesi@2
|
180 function _flexslider_test_options() {
|
danielebarchiesi@2
|
181 // Valid option set data
|
danielebarchiesi@2
|
182 $valid = array(
|
danielebarchiesi@2
|
183 'set1' => _flexslider_optionset_defaults(),
|
danielebarchiesi@2
|
184 'set2' => array(
|
danielebarchiesi@2
|
185 'animation' => 'slide',
|
danielebarchiesi@2
|
186 'startAt' => 4,
|
danielebarchiesi@2
|
187 // @todo add more option tests
|
danielebarchiesi@2
|
188 ),
|
danielebarchiesi@2
|
189 );
|
danielebarchiesi@2
|
190
|
danielebarchiesi@2
|
191 // Invalid edge cases
|
danielebarchiesi@2
|
192 $error = array();
|
danielebarchiesi@2
|
193
|
danielebarchiesi@2
|
194 return array('valid' => $valid, 'error' => $error);
|
danielebarchiesi@2
|
195 } |