RT 4.0.22
[freeside.git] / rt / t / customfields / date.t
1 use Test::MockTime qw(set_fixed_time restore_time);
2
3 use warnings;
4 use strict;
5
6 use RT::Test tests => undef;
7
8 RT::Test->set_rights(
9     { Principal => 'Everyone', Right => [qw(
10         SeeQueue ShowTicket CreateTicket SeeCustomField ModifyCustomField
11     )] },
12 );
13
14 my $q = RT::Test->load_or_create_queue( Name => 'General' );
15 ok $q && $q->id, 'loaded or created a queue';
16
17 my $user_m = RT::Test->load_or_create_user( Name => 'moscow', Timezone => 'Europe/Moscow' );
18 ok $user_m && $user_m->id;
19
20 my $user_b = RT::Test->load_or_create_user( Name => 'boston', Timezone => 'America/New_York' );
21 ok $user_b && $user_b->id;
22
23
24 my $cf_name = 'A Date';
25 my $cf;
26 {
27     $cf = RT::CustomField->new(RT->SystemUser);
28     ok(
29         $cf->Create(
30             Name       => $cf_name,
31             Type       => 'Date',
32             MaxValues  => 1,
33             LookupType => RT::Ticket->CustomFieldLookupType,
34         ),
35         'create cf date'
36     );
37     ok( $cf->AddToObject($q), 'date cf apply to queue' );
38 }
39
40 {
41     my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user_m ) );
42     my ($id) = $ticket->Create(
43         Queue                   => $q->id,
44         Subject                 => 'Test',
45         'CustomField-'. $cf->id => '2013-02-11',
46     );
47     my $cf_value = $ticket->CustomFieldValues($cf_name)->First;
48     is( $cf_value->Content, '2013-02-11', 'correct value' );
49
50     $ticket = RT::Ticket->new( RT::CurrentUser->new( $user_b ) );
51     $ticket->Load($id);
52     is( $ticket->FirstCustomFieldValue($cf_name), '2013-02-11', 'correct value' );
53 }
54
55 {
56     my $ticket = RT::Ticket->new(RT->SystemUser);
57     ok(
58         $ticket->Create(
59             Queue                    => $q->id,
60             Subject                  => 'Test',
61             'CustomField-' . $cf->id => '2010-05-04 11:34:56',
62         ),
63         'create ticket with cf set to 2010-05-04 11:34:56'
64     );
65     is( $ticket->CustomFieldValues->First->Content,
66         '2010-05-04', 'date in db only has date' );
67 }
68
69 # in moscow it's already Feb 11, so tomorrow is Feb 12
70 set_fixed_time("2013-02-10T23:10:00Z");
71 {
72     my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user_m ) );
73     my ($id) = $ticket->Create(
74         Queue                   => $q->id,
75         Subject                 => 'Test',
76         'CustomField-'. $cf->id => 'tomorrow',
77     );
78     my $cf_value = $ticket->CustomFieldValues($cf_name)->First;
79     is( $cf_value->Content, '2013-02-12', 'correct value' );
80
81     $ticket = RT::Ticket->new( RT::CurrentUser->new( $user_b ) );
82     $ticket->Load($id);
83     is( $ticket->FirstCustomFieldValue($cf_name), '2013-02-12', 'correct value' );
84 }
85
86 done_testing();