Projet

Général

Profil

Paste
Télécharger (2,76 ko) Statistiques
| Branche: | Révision:

root / htmltest / sites / all / modules / views / tests / handlers / views_handler_field_date.test @ 4543c6c7

1
<?php
2

    
3
/**
4
 * @file
5
 * Definition of ViewsHandlerFieldDateTest.
6
 */
7

    
8
/**
9
 * Tests the core views_handler_field_date handler.
10
 */
11
class ViewsHandlerFieldDateTest extends ViewsSqlTest {
12
  public static function getInfo() {
13
    return array(
14
      'name' => 'Field: Date',
15
      'description' => 'Test the core views_handler_field_date handler.',
16
      'group' => 'Views Handlers',
17
    );
18
  }
19

    
20
  function viewsData() {
21
    $data = parent::viewsData();
22
    $data['views_test']['created']['field']['handler'] = 'views_handler_field_date';
23
    return $data;
24
  }
25

    
26
  public function testFieldDate() {
27
    $view = $this->getBasicView();
28

    
29
    $view->display['default']->handler->override_option('fields', array(
30
      'created' => array(
31
        'id' => 'created',
32
        'table' => 'views_test',
33
        'field' => 'created',
34
        'relationship' => 'none',
35
        // c is iso 8601 date format @see http://php.net/manual/en/function.date.php
36
        'custom_date_format' => 'c',
37
      ),
38
    ));
39
    $time = gmmktime(0, 0, 0, 1, 1, 2000);
40

    
41
    $this->executeView($view);
42

    
43
    $timezones = array(
44
      NULL,
45
      'UTC',
46
      'America/New_York',
47
    );
48
    foreach ($timezones as $timezone) {
49
      $dates = array(
50
        'small' => format_date($time, 'small', '', $timezone),
51
        'medium' => format_date($time, 'medium', '', $timezone),
52
        'large' => format_date($time, 'large', '', $timezone),
53
        'custom' => format_date($time, 'custom', 'c', $timezone),
54
      );
55
      $this->assertRenderedDatesEqual($view, $dates, $timezone);
56
    }
57

    
58
    $intervals = array(
59
      'raw time ago' => format_interval(REQUEST_TIME - $time, 2),
60
      'time ago' => t('%time ago', array('%time' => format_interval(REQUEST_TIME - $time, 2))),
61
      // TODO write tests for them
62
//       'raw time span' => format_interval(REQUEST_TIME - $time, 2),
63
//       'time span' => t('%time hence', array('%time' => format_interval(REQUEST_TIME - $time, 2))),
64
    );
65
    $this->assertRenderedDatesEqual($view, $intervals);
66
  }
67

    
68
  protected function assertRenderedDatesEqual($view, $map, $timezone = NULL) {
69
    foreach ($map as $date_format => $expected_result) {
70
      $view->field['created']->options['date_format'] = $date_format;
71
      $t_args = array(
72
        '%value' => $expected_result,
73
        '%format' => $date_format,
74
      );
75
      if (isset($timezone)) {
76
        $t_args['%timezone'] = $timezone;
77
        $message = t('Value %value in %format format for timezone %timezone matches.', $t_args);
78
        $view->field['created']->options['timezone'] = $timezone;
79
      }
80
      else {
81
        $message = t('Value %value in %format format matches.', $t_args);
82
      }
83
      $actual_result = $view->field['created']->advanced_render($view->result[0]);
84
      $this->assertEqual($expected_result, $actual_result, $message);
85
    }
86
  }
87
}