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