annotate sites/all/modules/views/tests/styles/views_plugin_style.test @ 2:b74b41bb73f0

-- Google analytics module
author danieleb <danielebarchiesi@me.com>
date Thu, 22 Aug 2013 17:22:54 +0100
parents ff03f76ab3fe
children
rev   line source
danielebarchiesi@0 1 <?php
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * @file
danielebarchiesi@0 5 * Definition of ViewsPluginStyleTestCase.
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 /**
danielebarchiesi@0 9 * Tests some general style plugin related functionality.
danielebarchiesi@0 10 */
danielebarchiesi@0 11 class ViewsPluginStyleTestCase extends ViewsPluginStyleTestBase {
danielebarchiesi@0 12 public static function getInfo() {
danielebarchiesi@0 13 return array(
danielebarchiesi@0 14 'name' => 'Styles',
danielebarchiesi@0 15 'description' => 'Test general style functionality.',
danielebarchiesi@0 16 'group' => 'Views Plugins',
danielebarchiesi@0 17 );
danielebarchiesi@0 18 }
danielebarchiesi@0 19
danielebarchiesi@0 20 /**
danielebarchiesi@0 21 * Tests the grouping legacy features of styles.
danielebarchiesi@0 22 */
danielebarchiesi@0 23 function testGroupingLegacy() {
danielebarchiesi@0 24 $view = $this->getBasicView();
danielebarchiesi@0 25 // Setup grouping by the job.
danielebarchiesi@0 26 $view->init_display();
danielebarchiesi@0 27 $view->init_style();
danielebarchiesi@0 28 $view->style_plugin->options['grouping'] = 'job';
danielebarchiesi@0 29
danielebarchiesi@0 30 // Reduce the amount of items to make the test a bit easier.
danielebarchiesi@0 31 // Set up the pager.
danielebarchiesi@0 32 $view->display['default']->handler->override_option('pager', array(
danielebarchiesi@0 33 'type' => 'some',
danielebarchiesi@0 34 'options' => array('items_per_page' => 3),
danielebarchiesi@0 35 ));
danielebarchiesi@0 36
danielebarchiesi@0 37 // Add the job field .
danielebarchiesi@0 38 $view->display['default']->handler->override_option('fields', array(
danielebarchiesi@0 39 'name' => array(
danielebarchiesi@0 40 'id' => 'name',
danielebarchiesi@0 41 'table' => 'views_test',
danielebarchiesi@0 42 'field' => 'name',
danielebarchiesi@0 43 'relationship' => 'none',
danielebarchiesi@0 44 ),
danielebarchiesi@0 45 'job' => array(
danielebarchiesi@0 46 'id' => 'job',
danielebarchiesi@0 47 'table' => 'views_test',
danielebarchiesi@0 48 'field' => 'job',
danielebarchiesi@0 49 'relationship' => 'none',
danielebarchiesi@0 50 ),
danielebarchiesi@0 51 ));
danielebarchiesi@0 52
danielebarchiesi@0 53 // Now run the query and groupby the result.
danielebarchiesi@0 54 $this->executeView($view);
danielebarchiesi@0 55
danielebarchiesi@0 56 // This is the old way to call it.
danielebarchiesi@0 57 $sets = $view->style_plugin->render_grouping($view->result, $view->style_plugin->options['grouping']);
danielebarchiesi@0 58
danielebarchiesi@0 59 $expected = array();
danielebarchiesi@0 60 // Use Job: as label, so be sure that the label is used for groupby as well.
danielebarchiesi@0 61 $expected['Job: Singer'] = array();
danielebarchiesi@0 62 $expected['Job: Singer'][0] = new StdClass();
danielebarchiesi@0 63 $expected['Job: Singer'][0]->views_test_name = 'John';
danielebarchiesi@0 64 $expected['Job: Singer'][0]->views_test_job = 'Singer';
danielebarchiesi@0 65 $expected['Job: Singer'][0]->views_test_id = '1';
danielebarchiesi@0 66 $expected['Job: Singer'][1] = new StdClass();
danielebarchiesi@0 67 $expected['Job: Singer'][1]->views_test_name = 'George';
danielebarchiesi@0 68 $expected['Job: Singer'][1]->views_test_job = 'Singer';
danielebarchiesi@0 69 $expected['Job: Singer'][1]->views_test_id = '2';
danielebarchiesi@0 70 $expected['Job: Drummer'] = array();
danielebarchiesi@0 71 $expected['Job: Drummer'][2] = new StdClass();
danielebarchiesi@0 72 $expected['Job: Drummer'][2]->views_test_name = 'Ringo';
danielebarchiesi@0 73 $expected['Job: Drummer'][2]->views_test_job = 'Drummer';
danielebarchiesi@0 74 $expected['Job: Drummer'][2]->views_test_id = '3';
danielebarchiesi@0 75
danielebarchiesi@0 76 $this->assertEqual($sets, $expected, t('The style plugin should proper group the results with grouping by the rendered output.'));
danielebarchiesi@0 77
danielebarchiesi@0 78 $expected = array();
danielebarchiesi@0 79 $expected['Job: Singer'] = array();
danielebarchiesi@0 80 $expected['Job: Singer']['group'] = 'Job: Singer';
danielebarchiesi@0 81 $expected['Job: Singer']['rows'][0] = new StdClass();
danielebarchiesi@0 82 $expected['Job: Singer']['rows'][0]->views_test_name = 'John';
danielebarchiesi@0 83 $expected['Job: Singer']['rows'][0]->views_test_job = 'Singer';
danielebarchiesi@0 84 $expected['Job: Singer']['rows'][0]->views_test_id = '1';
danielebarchiesi@0 85 $expected['Job: Singer']['rows'][1] = new StdClass();
danielebarchiesi@0 86 $expected['Job: Singer']['rows'][1]->views_test_name = 'George';
danielebarchiesi@0 87 $expected['Job: Singer']['rows'][1]->views_test_job = 'Singer';
danielebarchiesi@0 88 $expected['Job: Singer']['rows'][1]->views_test_id = '2';
danielebarchiesi@0 89 $expected['Job: Drummer'] = array();
danielebarchiesi@0 90 $expected['Job: Drummer']['group'] = 'Job: Drummer';
danielebarchiesi@0 91 $expected['Job: Drummer']['rows'][2] = new StdClass();
danielebarchiesi@0 92 $expected['Job: Drummer']['rows'][2]->views_test_name = 'Ringo';
danielebarchiesi@0 93 $expected['Job: Drummer']['rows'][2]->views_test_job = 'Drummer';
danielebarchiesi@0 94 $expected['Job: Drummer']['rows'][2]->views_test_id = '3';
danielebarchiesi@0 95
danielebarchiesi@0 96 // The newer api passes the value of the grouping as well.
danielebarchiesi@0 97 $sets_new_rendered = $view->style_plugin->render_grouping($view->result, $view->style_plugin->options['grouping'], TRUE);
danielebarchiesi@0 98 $sets_new_value = $view->style_plugin->render_grouping($view->result, $view->style_plugin->options['grouping'], FALSE);
danielebarchiesi@0 99
danielebarchiesi@0 100 $this->assertEqual($sets_new_rendered, $expected, t('The style plugins should proper group the results with grouping by the rendered output.'));
danielebarchiesi@0 101
danielebarchiesi@0 102 // Reorder the group structure to group by value.
danielebarchiesi@0 103 $expected['Singer'] = $expected['Job: Singer'];
danielebarchiesi@0 104 $expected['Drummer'] = $expected['Job: Drummer'];
danielebarchiesi@0 105 unset($expected['Job: Singer']);
danielebarchiesi@0 106 unset($expected['Job: Drummer']);
danielebarchiesi@0 107
danielebarchiesi@0 108 $this->assertEqual($sets_new_value, $expected, t('The style plugins should proper group the results with grouping by the value.'));
danielebarchiesi@0 109 }
danielebarchiesi@0 110
danielebarchiesi@0 111 function testGrouping() {
danielebarchiesi@0 112 $this->_testGrouping(FALSE);
danielebarchiesi@0 113 $this->_testGrouping(TRUE);
danielebarchiesi@0 114 }
danielebarchiesi@0 115
danielebarchiesi@0 116 /**
danielebarchiesi@0 117 * Tests the grouping features of styles.
danielebarchiesi@0 118 */
danielebarchiesi@0 119 function _testGrouping($stripped = FALSE) {
danielebarchiesi@0 120 $view = $this->getBasicView();
danielebarchiesi@0 121 // Setup grouping by the job and the age field.
danielebarchiesi@0 122 $view->init_display();
danielebarchiesi@0 123 $view->init_style();
danielebarchiesi@0 124 $view->style_plugin->options['grouping'] = array(
danielebarchiesi@0 125 array('field' => 'job'),
danielebarchiesi@0 126 array('field' => 'age'),
danielebarchiesi@0 127 );
danielebarchiesi@0 128
danielebarchiesi@0 129 // Reduce the amount of items to make the test a bit easier.
danielebarchiesi@0 130 // Set up the pager.
danielebarchiesi@0 131 $view->display['default']->handler->override_option('pager', array(
danielebarchiesi@0 132 'type' => 'some',
danielebarchiesi@0 133 'options' => array('items_per_page' => 3),
danielebarchiesi@0 134 ));
danielebarchiesi@0 135
danielebarchiesi@0 136 // Add the job and age field.
danielebarchiesi@0 137 $view->display['default']->handler->override_option('fields', array(
danielebarchiesi@0 138 'name' => array(
danielebarchiesi@0 139 'id' => 'name',
danielebarchiesi@0 140 'table' => 'views_test',
danielebarchiesi@0 141 'field' => 'name',
danielebarchiesi@0 142 'relationship' => 'none',
danielebarchiesi@0 143 ),
danielebarchiesi@0 144 'job' => array(
danielebarchiesi@0 145 'id' => 'job',
danielebarchiesi@0 146 'table' => 'views_test',
danielebarchiesi@0 147 'field' => 'job',
danielebarchiesi@0 148 'relationship' => 'none',
danielebarchiesi@0 149 ),
danielebarchiesi@0 150 'age' => array(
danielebarchiesi@0 151 'id' => 'age',
danielebarchiesi@0 152 'table' => 'views_test',
danielebarchiesi@0 153 'field' => 'age',
danielebarchiesi@0 154 'relationship' => 'none',
danielebarchiesi@0 155 ),
danielebarchiesi@0 156 ));
danielebarchiesi@0 157
danielebarchiesi@0 158 // Now run the query and groupby the result.
danielebarchiesi@0 159 $this->executeView($view);
danielebarchiesi@0 160
danielebarchiesi@0 161 $expected = array();
danielebarchiesi@0 162 $expected['Job: Singer'] = array();
danielebarchiesi@0 163 $expected['Job: Singer']['group'] = 'Job: Singer';
danielebarchiesi@0 164 $expected['Job: Singer']['rows']['Age: 25'] = array();
danielebarchiesi@0 165 $expected['Job: Singer']['rows']['Age: 25']['group'] = 'Age: 25';
danielebarchiesi@0 166 $expected['Job: Singer']['rows']['Age: 25']['rows'][0] = new StdClass();
danielebarchiesi@0 167 $expected['Job: Singer']['rows']['Age: 25']['rows'][0]->views_test_name = 'John';
danielebarchiesi@0 168 $expected['Job: Singer']['rows']['Age: 25']['rows'][0]->views_test_job = 'Singer';
danielebarchiesi@0 169 $expected['Job: Singer']['rows']['Age: 25']['rows'][0]->views_test_age = '25';
danielebarchiesi@0 170 $expected['Job: Singer']['rows']['Age: 25']['rows'][0]->views_test_id = '1';
danielebarchiesi@0 171 $expected['Job: Singer']['rows']['Age: 27'] = array();
danielebarchiesi@0 172 $expected['Job: Singer']['rows']['Age: 27']['group'] = 'Age: 27';
danielebarchiesi@0 173 $expected['Job: Singer']['rows']['Age: 27']['rows'][1] = new StdClass();
danielebarchiesi@0 174 $expected['Job: Singer']['rows']['Age: 27']['rows'][1]->views_test_name = 'George';
danielebarchiesi@0 175 $expected['Job: Singer']['rows']['Age: 27']['rows'][1]->views_test_job = 'Singer';
danielebarchiesi@0 176 $expected['Job: Singer']['rows']['Age: 27']['rows'][1]->views_test_age = '27';
danielebarchiesi@0 177 $expected['Job: Singer']['rows']['Age: 27']['rows'][1]->views_test_id = '2';
danielebarchiesi@0 178 $expected['Job: Drummer'] = array();
danielebarchiesi@0 179 $expected['Job: Drummer']['group'] = 'Job: Drummer';
danielebarchiesi@0 180 $expected['Job: Drummer']['rows']['Age: 28'] = array();
danielebarchiesi@0 181 $expected['Job: Drummer']['rows']['Age: 28']['group'] = 'Age: 28';
danielebarchiesi@0 182 $expected['Job: Drummer']['rows']['Age: 28']['rows'][2] = new StdClass();
danielebarchiesi@0 183 $expected['Job: Drummer']['rows']['Age: 28']['rows'][2]->views_test_name = 'Ringo';
danielebarchiesi@0 184 $expected['Job: Drummer']['rows']['Age: 28']['rows'][2]->views_test_job = 'Drummer';
danielebarchiesi@0 185 $expected['Job: Drummer']['rows']['Age: 28']['rows'][2]->views_test_age = '28';
danielebarchiesi@0 186 $expected['Job: Drummer']['rows']['Age: 28']['rows'][2]->views_test_id = '3';
danielebarchiesi@0 187
danielebarchiesi@0 188
danielebarchiesi@0 189 // Alter the results to support the stripped case.
danielebarchiesi@0 190 if ($stripped) {
danielebarchiesi@0 191
danielebarchiesi@0 192 // Add some html to the result and expected value.
danielebarchiesi@0 193 $rand = '<a data="' . $this->randomName() . '" />';
danielebarchiesi@0 194 $view->result[0]->views_test_job .= $rand;
danielebarchiesi@0 195 $expected['Job: Singer']['rows']['Age: 25']['rows'][0]->views_test_job = 'Singer' . $rand;
danielebarchiesi@0 196 $expected['Job: Singer']['group'] = 'Job: Singer';
danielebarchiesi@0 197 $rand = '<a data="' . $this->randomName() . '" />';
danielebarchiesi@0 198 $view->result[1]->views_test_job .= $rand;
danielebarchiesi@0 199 $expected['Job: Singer']['rows']['Age: 27']['rows'][1]->views_test_job = 'Singer' . $rand;
danielebarchiesi@0 200 $rand = '<a data="' . $this->randomName() . '" />';
danielebarchiesi@0 201 $view->result[2]->views_test_job .= $rand;
danielebarchiesi@0 202 $expected['Job: Drummer']['rows']['Age: 28']['rows'][2]->views_test_job = 'Drummer' . $rand;
danielebarchiesi@0 203 $expected['Job: Drummer']['group'] = 'Job: Drummer';
danielebarchiesi@0 204
danielebarchiesi@0 205 $view->style_plugin->options['grouping'][0] = array('field' => 'job', 'rendered' => TRUE, 'rendered_strip' => TRUE);
danielebarchiesi@0 206 $view->style_plugin->options['grouping'][1] = array('field' => 'age', 'rendered' => TRUE, 'rendered_strip' => TRUE);
danielebarchiesi@0 207 }
danielebarchiesi@0 208
danielebarchiesi@0 209
danielebarchiesi@0 210 // The newer api passes the value of the grouping as well.
danielebarchiesi@0 211 $sets_new_rendered = $view->style_plugin->render_grouping($view->result, $view->style_plugin->options['grouping'], TRUE);
danielebarchiesi@0 212
danielebarchiesi@0 213 $this->assertEqual($sets_new_rendered, $expected, t('The style plugins should proper group the results with grouping by the rendered output.'));
danielebarchiesi@0 214
danielebarchiesi@0 215 // Don't test stripped case, because the actual value is not stripped.
danielebarchiesi@0 216 if (!$stripped) {
danielebarchiesi@0 217 $sets_new_value = $view->style_plugin->render_grouping($view->result, $view->style_plugin->options['grouping'], FALSE);
danielebarchiesi@0 218
danielebarchiesi@0 219 // Reorder the group structure to grouping by value.
danielebarchiesi@0 220 $expected['Singer'] = $expected['Job: Singer'];
danielebarchiesi@0 221 $expected['Singer']['rows']['25'] = $expected['Job: Singer']['rows']['Age: 25'];
danielebarchiesi@0 222 $expected['Singer']['rows']['27'] = $expected['Job: Singer']['rows']['Age: 27'];
danielebarchiesi@0 223 $expected['Drummer'] = $expected['Job: Drummer'];
danielebarchiesi@0 224 $expected['Drummer']['rows']['28'] = $expected['Job: Drummer']['rows']['Age: 28'];
danielebarchiesi@0 225 unset($expected['Job: Singer']);
danielebarchiesi@0 226 unset($expected['Singer']['rows']['Age: 25']);
danielebarchiesi@0 227 unset($expected['Singer']['rows']['Age: 27']);
danielebarchiesi@0 228 unset($expected['Job: Drummer']);
danielebarchiesi@0 229 unset($expected['Drummer']['rows']['Age: 28']);
danielebarchiesi@0 230
danielebarchiesi@0 231 $this->assertEqual($sets_new_value, $expected, t('The style plugins should proper group the results with grouping by the value.'));
danielebarchiesi@0 232 }
danielebarchiesi@0 233 }
danielebarchiesi@0 234
danielebarchiesi@0 235 /**
danielebarchiesi@0 236 * Tests custom css classes.
danielebarchiesi@0 237 */
danielebarchiesi@0 238 function testCustomRowClasses() {
danielebarchiesi@0 239 $view = $this->getBasicView();
danielebarchiesi@0 240
danielebarchiesi@0 241 // Setup some random css class.
danielebarchiesi@0 242 $view->init_display();
danielebarchiesi@0 243 $view->init_style();
danielebarchiesi@0 244 $random_name = $this->randomName();
danielebarchiesi@0 245 $view->style_plugin->options['row_class'] = $random_name . " test-token-[name]";
danielebarchiesi@0 246
danielebarchiesi@0 247 $rendered_output = $view->preview();
danielebarchiesi@0 248 $this->storeViewPreview($rendered_output);
danielebarchiesi@0 249
danielebarchiesi@0 250 $rows = $this->elements->body->div->div->div;
danielebarchiesi@0 251 $count = 0;
danielebarchiesi@0 252 foreach ($rows as $row) {
danielebarchiesi@0 253 $attributes = $row->attributes();
danielebarchiesi@0 254 $class = (string) $attributes['class'][0];
danielebarchiesi@0 255 $this->assertTrue(strpos($class, $random_name) !== FALSE, 'Take sure that a custom css class is added to the output.');
danielebarchiesi@0 256
danielebarchiesi@0 257 // Check token replacement.
danielebarchiesi@0 258 $name = $view->field['name']->get_value($view->result[$count]);
danielebarchiesi@0 259 $this->assertTrue(strpos($class, "test-token-$name") !== FALSE, 'Take sure that a token in custom css class is replaced.');
danielebarchiesi@0 260
danielebarchiesi@0 261 $count++;
danielebarchiesi@0 262 }
danielebarchiesi@0 263 }
danielebarchiesi@0 264 }