diff sites/all/modules/views/tests/handlers/views_handler_field_date.test @ 0:ff03f76ab3fe

initial version
author danieleb <danielebarchiesi@me.com>
date Wed, 21 Aug 2013 18:51:11 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sites/all/modules/views/tests/handlers/views_handler_field_date.test	Wed Aug 21 18:51:11 2013 +0100
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * @file
+ * Definition of ViewsHandlerFieldDateTest.
+ */
+
+/**
+ * Tests the core views_handler_field_date handler.
+ */
+class ViewsHandlerFieldDateTest extends ViewsSqlTest {
+  public static function getInfo() {
+    return array(
+      'name' => 'Field: Date',
+      'description' => 'Test the core views_handler_field_date handler.',
+      'group' => 'Views Handlers',
+    );
+  }
+
+  function viewsData() {
+    $data = parent::viewsData();
+    $data['views_test']['created']['field']['handler'] = 'views_handler_field_date';
+    return $data;
+  }
+
+  public function testFieldDate() {
+    $view = $this->getBasicView();
+
+    $view->display['default']->handler->override_option('fields', array(
+      'created' => array(
+        'id' => 'created',
+        'table' => 'views_test',
+        'field' => 'created',
+        'relationship' => 'none',
+        // c is iso 8601 date format @see http://php.net/manual/en/function.date.php
+        'custom_date_format' => 'c',
+      ),
+    ));
+    $time = gmmktime(0, 0, 0, 1, 1, 2000);
+
+    $this->executeView($view);
+
+    $timezones = array(
+      NULL,
+      'UTC',
+      'America/New_York',
+    );
+    foreach ($timezones as $timezone) {
+      $dates = array(
+        'small' => format_date($time, 'small', '', $timezone),
+        'medium' => format_date($time, 'medium', '', $timezone),
+        'large' => format_date($time, 'large', '', $timezone),
+        'custom' => format_date($time, 'custom', 'c', $timezone),
+      );
+      $this->assertRenderedDatesEqual($view, $dates, $timezone);
+    }
+
+    $intervals = array(
+      'raw time ago' => format_interval(REQUEST_TIME - $time, 2),
+      'time ago' => t('%time ago', array('%time' => format_interval(REQUEST_TIME - $time, 2))),
+      // TODO write tests for them
+//       'raw time span' => format_interval(REQUEST_TIME - $time, 2),
+//       'time span' => t('%time hence', array('%time' => format_interval(REQUEST_TIME - $time, 2))),
+    );
+    $this->assertRenderedDatesEqual($view, $intervals);
+  }
+
+  protected function assertRenderedDatesEqual($view, $map, $timezone = NULL) {
+    foreach ($map as $date_format => $expected_result) {
+      $view->field['created']->options['date_format'] = $date_format;
+      $t_args = array(
+        '%value' => $expected_result,
+        '%format' => $date_format,
+      );
+      if (isset($timezone)) {
+        $t_args['%timezone'] = $timezone;
+        $message = t('Value %value in %format format for timezone %timezone matches.', $t_args);
+        $view->field['created']->options['timezone'] = $timezone;
+      }
+      else {
+        $message = t('Value %value in %format format matches.', $t_args);
+      }
+      $actual_result = $view->field['created']->advanced_render($view->result[0]);
+      $this->assertEqual($expected_result, $actual_result, $message);
+    }
+  }
+}