RT 4.2.11, ticket#13852
[freeside.git] / rt / t / api / tickets.t
1
2 use strict;
3 use warnings;
4 use RT;
5 use RT::Test tests => undef;
6
7 {
8
9 ok (require RT::Tickets);
10 ok( my $testtickets = RT::Tickets->new( RT->SystemUser ) );
11 ok( $testtickets->LimitStatus( VALUE => 'deleted' ) );
12 # Should be zero until 'allow_deleted_search'
13 is( $testtickets->Count , 0 );
14
15
16 }
17
18 {
19
20 # Test to make sure that you can search for tickets by requestor address and
21 # by requestor name.
22
23 my ($id,$msg);
24 my $u1 = RT::User->new(RT->SystemUser);
25 ($id, $msg) = $u1->Create( Name => 'RequestorTestOne', EmailAddress => 'rqtest1@example.com');
26 ok ($id,$msg);
27 my $u2 = RT::User->new(RT->SystemUser);
28 ($id, $msg) = $u2->Create( Name => 'RequestorTestTwo', EmailAddress => 'rqtest2@example.com');
29 ok ($id,$msg);
30
31 my $t1 = RT::Ticket->new(RT->SystemUser);
32 my ($trans);
33 ($id,$trans,$msg) =$t1->Create (Queue => 'general', Subject => 'Requestor test one', Requestor => [$u1->EmailAddress]);
34 ok ($id, $msg);
35
36 my $t2 = RT::Ticket->new(RT->SystemUser);
37 ($id,$trans,$msg) =$t2->Create (Queue => 'general', Subject => 'Requestor test one', Requestor => [$u2->EmailAddress]);
38 ok ($id, $msg);
39
40
41 my $t3 = RT::Ticket->new(RT->SystemUser);
42 ($id,$trans,$msg) =$t3->Create (Queue => 'general', Subject => 'Requestor test one', Requestor => [$u2->EmailAddress, $u1->EmailAddress]);
43 ok ($id, $msg);
44
45
46 my $tix1 = RT::Tickets->new(RT->SystemUser);
47 $tix1->FromSQL('Requestor.EmailAddress LIKE "rqtest1" OR Requestor.EmailAddress LIKE "rqtest2"');
48
49 is ($tix1->Count, 3);
50
51 my $tix2 = RT::Tickets->new(RT->SystemUser);
52 $tix2->FromSQL('Requestor.Name LIKE "TestOne" OR Requestor.Name LIKE "TestTwo"');
53
54 is ($tix2->Count, 3);
55
56
57 my $tix3 = RT::Tickets->new(RT->SystemUser);
58 $tix3->FromSQL('Requestor.EmailAddress LIKE "rqtest1"');
59
60 is ($tix3->Count, 2);
61
62 my $tix4 = RT::Tickets->new(RT->SystemUser);
63 $tix4->FromSQL('Requestor.Name LIKE "TestOne" ');
64
65 is ($tix4->Count, 2);
66
67 # Searching for tickets that have two requestors isn't supported
68 # There's no way to differentiate "one requestor name that matches foo and bar"
69 # and "two requestors, one matching foo and one matching bar"
70
71 # my $tix5 = RT::Tickets->new(RT->SystemUser);
72 # $tix5->FromSQL('Requestor.Name LIKE "TestOne" AND Requestor.Name LIKE "TestTwo"');
73
74 # is ($tix5->Count, 1);
75
76 # my $tix6 = RT::Tickets->new(RT->SystemUser);
77 # $tix6->FromSQL('Requestor.EmailAddress LIKE "rqtest1" AND Requestor.EmailAddress LIKE "rqtest2"');
78
79 # is ($tix6->Count, 1);
80
81
82
83 }
84
85 {
86
87 my $t1 = RT::Ticket->new(RT->SystemUser);
88 $t1->Create(Queue => 'general', Subject => "LimitWatchers test", Requestors => \['requestor1@example.com']);
89
90
91 }
92
93 {
94
95 # We assume that we've got some tickets hanging around from before.
96 ok( my $unlimittickets = RT::Tickets->new( RT->SystemUser ) );
97 ok( $unlimittickets->UnLimit );
98 ok( $unlimittickets->Count > 0, "UnLimited tickets object should return tickets" );
99
100
101 }
102
103
104 {
105     my $tickets = RT::Tickets->new( RT->SystemUser );
106     $tickets->Limit( FIELD => 'id', OPERATOR => '>', VALUE => 0 );
107     my $count = $tickets->Count();
108     ok $count > 1, "found more than one ticket";
109     undef $count;
110
111     $tickets->Limit( FIELD => 'id', OPERATOR => '=', VALUE => 1, ENTRYAGGREGATOR => 'none' );
112     $count = $tickets->Count();
113     ok $count == 1, "found one ticket";
114 }
115
116 {
117     my $tickets = RT::Tickets->new( RT->SystemUser );
118     my ($ret, $msg) = $tickets->FromSQL("Resolved IS NULL");
119     ok $ret, "Ran query with IS NULL: $msg";
120     my $count = $tickets->Count();
121     ok $count > 1, "Found more than one ticket";
122     undef $count;
123 }
124
125 {
126     my $ticket = RT::Ticket->new( RT->SystemUser );
127     ok $ticket->Load(1), "Loaded test ticket 1";
128     ok $ticket->SetStatus('resolved'), "Set to resolved";
129
130     my $tickets = RT::Tickets->new( RT->SystemUser );
131     my ($ret, $msg) = $tickets->FromSQL("Resolved IS NOT NULL");
132     ok $ret, "Ran query with IS NOT NULL: $msg";
133     my $count = $tickets->Count();
134     ok $count == 1, "Found one ticket";
135     undef $count;
136 }
137
138 {
139     my $tickets = RT::Tickets->new( RT->SystemUser );
140     $tickets->LimitDate( FIELD => "Resolved", OPERATOR => "IS",     VALUE => "NULL" );
141     $tickets->LimitDate( FIELD => "Resolved", OPERATOR => "IS NOT", VALUE => "NULL" );
142     my $count = $tickets->Count();
143     ok $count > 1, "Found more than one ticket";
144     undef $count;
145 }
146
147 done_testing;