annotate sites/all/modules/views/tests/styles/views_plugin_style_mapping.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 ViewsPluginStyleMappingTest.
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 /**
danielebarchiesi@0 9 * Tests the default/mapping row style.
danielebarchiesi@0 10 */
danielebarchiesi@0 11 class ViewsPluginStyleMappingTest extends ViewsPluginStyleTestBase {
danielebarchiesi@0 12
danielebarchiesi@0 13 public static function getInfo() {
danielebarchiesi@0 14 return array(
danielebarchiesi@0 15 'name' => 'Style: Mapping',
danielebarchiesi@0 16 'description' => 'Test mapping style functionality.',
danielebarchiesi@0 17 'group' => 'Views Plugins',
danielebarchiesi@0 18 );
danielebarchiesi@0 19 }
danielebarchiesi@0 20
danielebarchiesi@0 21 public function setUp() {
danielebarchiesi@0 22 parent::setUp();
danielebarchiesi@0 23
danielebarchiesi@0 24 // Reset the plugin data.
danielebarchiesi@0 25 views_fetch_plugin_data(NULL, NULL, TRUE);
danielebarchiesi@0 26 }
danielebarchiesi@0 27
danielebarchiesi@0 28 protected function viewsPlugins() {
danielebarchiesi@0 29 return array(
danielebarchiesi@0 30 'style' => array(
danielebarchiesi@0 31 'test_mapping' => array(
danielebarchiesi@0 32 'title' => t('Field mapping'),
danielebarchiesi@0 33 'help' => t('Maps specific fields to specific purposes.'),
danielebarchiesi@0 34 'handler' => 'views_test_plugin_style_test_mapping',
danielebarchiesi@0 35 'path' => drupal_get_path('module', 'views_test') . '/test_plugins',
danielebarchiesi@0 36 'theme' => 'views_view_mapping_test',
danielebarchiesi@0 37 'theme path' => drupal_get_path('module', 'views_test'),
danielebarchiesi@0 38 'theme file' => 'views_test.module',
danielebarchiesi@0 39 'uses row plugin' => FALSE,
danielebarchiesi@0 40 'uses fields' => TRUE,
danielebarchiesi@0 41 'uses options' => TRUE,
danielebarchiesi@0 42 'uses grouping' => FALSE,
danielebarchiesi@0 43 'type' => 'normal',
danielebarchiesi@0 44 ),
danielebarchiesi@0 45 ),
danielebarchiesi@0 46 );
danielebarchiesi@0 47 }
danielebarchiesi@0 48
danielebarchiesi@0 49 /**
danielebarchiesi@0 50 * Overrides ViewsTestCase::getBasicView().
danielebarchiesi@0 51 */
danielebarchiesi@0 52 protected function getBasicView() {
danielebarchiesi@0 53 $view = parent::getBasicView();
danielebarchiesi@0 54 $view->display['default']->handler->override_option('style_plugin', 'test_mapping');
danielebarchiesi@0 55 $view->display['default']->handler->override_option('style_options', array(
danielebarchiesi@0 56 'mapping' => array(
danielebarchiesi@0 57 'name_field' => 'name',
danielebarchiesi@0 58 'numeric_field' => array(
danielebarchiesi@0 59 'age',
danielebarchiesi@0 60 ),
danielebarchiesi@0 61 'title_field' => 'name',
danielebarchiesi@0 62 'toggle_numeric_field' => TRUE,
danielebarchiesi@0 63 'toggle_title_field' => TRUE,
danielebarchiesi@0 64 ),
danielebarchiesi@0 65 ));
danielebarchiesi@0 66 $view->display['default']->handler->override_option('fields', array(
danielebarchiesi@0 67 'age' => array(
danielebarchiesi@0 68 'id' => 'age',
danielebarchiesi@0 69 'table' => 'views_test',
danielebarchiesi@0 70 'field' => 'age',
danielebarchiesi@0 71 'relationship' => 'none',
danielebarchiesi@0 72 ),
danielebarchiesi@0 73 'name' => array(
danielebarchiesi@0 74 'id' => 'name',
danielebarchiesi@0 75 'table' => 'views_test',
danielebarchiesi@0 76 'field' => 'name',
danielebarchiesi@0 77 'relationship' => 'none',
danielebarchiesi@0 78 ),
danielebarchiesi@0 79 'job' => array(
danielebarchiesi@0 80 'id' => 'job',
danielebarchiesi@0 81 'table' => 'views_test',
danielebarchiesi@0 82 'field' => 'job',
danielebarchiesi@0 83 'relationship' => 'none',
danielebarchiesi@0 84 ),
danielebarchiesi@0 85 ));
danielebarchiesi@0 86 return $view;
danielebarchiesi@0 87 }
danielebarchiesi@0 88
danielebarchiesi@0 89 /**
danielebarchiesi@0 90 * Verifies that the fields were mapped correctly.
danielebarchiesi@0 91 */
danielebarchiesi@0 92 public function testMappedOutput() {
danielebarchiesi@0 93 $view = $this->getBasicView();
danielebarchiesi@0 94 $output = $this->mappedOutputHelper($view);
danielebarchiesi@0 95 $this->assertTrue(strpos($output, 'job') === FALSE, 'The job field is added to the view but not in the mapping.');
danielebarchiesi@0 96
danielebarchiesi@0 97 $view = $this->getBasicView();
danielebarchiesi@0 98 $view->display['default']->display_options['style_options']['mapping']['name_field'] = 'job';
danielebarchiesi@0 99 $output = $this->mappedOutputHelper($view);
danielebarchiesi@0 100 $this->assertTrue(strpos($output, 'job') !== FALSE, 'The job field is added to the view and is in the mapping.');
danielebarchiesi@0 101 }
danielebarchiesi@0 102
danielebarchiesi@0 103 /**
danielebarchiesi@0 104 * Tests the mapping of fields.
danielebarchiesi@0 105 *
danielebarchiesi@0 106 * @param view $view
danielebarchiesi@0 107 * The view to test.
danielebarchiesi@0 108 *
danielebarchiesi@0 109 * @return string
danielebarchiesi@0 110 * The view rendered as HTML.
danielebarchiesi@0 111 */
danielebarchiesi@0 112 protected function mappedOutputHelper($view) {
danielebarchiesi@0 113 $rendered_output = $view->preview();
danielebarchiesi@0 114 $this->storeViewPreview($rendered_output);
danielebarchiesi@0 115 $rows = $this->elements->body->div->div->div;
danielebarchiesi@0 116 $data_set = $this->dataSet();
danielebarchiesi@0 117
danielebarchiesi@0 118 $count = 0;
danielebarchiesi@0 119 foreach ($rows as $row) {
danielebarchiesi@0 120 $attributes = $row->attributes();
danielebarchiesi@0 121 $class = (string) $attributes['class'][0];
danielebarchiesi@0 122 $this->assertTrue(strpos($class, 'views-row-mapping-test') !== FALSE, 'Make sure that each row has the correct CSS class.');
danielebarchiesi@0 123
danielebarchiesi@0 124 foreach ($row->div as $field) {
danielebarchiesi@0 125 // Split up the field-level class, the first part is the mapping name
danielebarchiesi@0 126 // and the second is the field ID.
danielebarchiesi@0 127 $field_attributes = $field->attributes();
danielebarchiesi@0 128 $name = strtok((string) $field_attributes['class'][0], '-');
danielebarchiesi@0 129 $field_id = strtok('-');
danielebarchiesi@0 130
danielebarchiesi@0 131 // The expected result is the mapping name and the field value,
danielebarchiesi@0 132 // separated by ':'.
danielebarchiesi@0 133 $expected_result = $name . ':' . $data_set[$count][$field_id];
danielebarchiesi@0 134 $actual_result = (string) $field;
danielebarchiesi@0 135 $this->assertIdentical($expected_result, $actual_result, format_string('The fields were mapped successfully: %name => %field_id', array('%name' => $name, '%field_id' => $field_id)));
danielebarchiesi@0 136 }
danielebarchiesi@0 137
danielebarchiesi@0 138 $count++;
danielebarchiesi@0 139 }
danielebarchiesi@0 140
danielebarchiesi@0 141 return $rendered_output;
danielebarchiesi@0 142 }
danielebarchiesi@0 143
danielebarchiesi@0 144 }