Merge branch 'master' of https://github.com/jgoodman/Freeside
[freeside.git] / rt / t / web / reminders.t
1 use strict;
2 use warnings;
3 use RT::Test tests => 45;
4
5 my ($baseurl, $m) = RT::Test->started_ok;
6
7 ok($m->login, 'logged in');
8 my $user = RT::CurrentUser->new('root');
9
10 my $ticket = RT::Ticket->new($user);
11 $ticket->Create(Subject => 'testing reminders!', Queue => 'General');
12 ok($ticket->id, 'created a ticket');
13
14 $m->goto_ticket($ticket->id);
15 $m->text_contains('New reminder:', 'can create a new reminder');
16 $m->content_unlike(qr{Check box to complete}, "we don't display this text when there are no reminders");
17 $m->content_unlike(qr{<th[^>]*>Reminders?</th>}, "no reminder titlebar");
18
19 $m->follow_link_ok({id => 'page-reminders'});
20 $m->title_is("Reminders for ticket #" . $ticket->id);
21 $m->text_contains('New reminder:', 'can create a new reminder');
22 $m->content_unlike(qr{Check box to complete}, "we don't display this text when there are no reminders");
23 $m->content_unlike(qr{<th[^>]*>Reminders?</th>}, "no reminder titlebar");
24
25 $m->goto_ticket($ticket->id);
26 $m->form_name('UpdateReminders');
27 $m->field( 'NewReminder-Subject' => "baby's first reminder" );
28 $m->submit;
29 $m->content_contains("Reminder &#39;baby&#39;s first reminder&#39; added");
30
31 $ticket->SetStatus('deleted');
32 is( $ticket->Status, 'deleted', 'deleted ticket' );
33 $m->form_name('UpdateReminders');
34 $m->field( 'NewReminder-Subject' => "link to a deleted ticket" );
35 $m->submit;
36 $m->content_contains("Can&#39;t link to a deleted ticket");
37 $m->get_ok('/Tools/MyReminders.html');
38 $m->content_contains( "baby&#39;s first reminder",
39     'got the reminder even the ticket is deleted' );
40
41 $m->goto_ticket( $ticket->id );
42 $m->content_lacks('New reminder:', "can't create a new reminder");
43 $m->text_contains('Check box to complete', "we DO display this text when there are reminders");
44 $m->content_like(qr{<th[^>]*>Reminders?</th>}, "now we have a reminder titlebar");
45 $m->text_contains("baby's first reminder", "display the reminder's subject");
46
47 my $reminders = RT::Reminders->new($user);
48 $reminders->Ticket($ticket->id);
49 my $col = $reminders->Collection;
50 is($col->Count, 1, 'got a reminder');
51 my $reminder = $col->First;
52 is($reminder->Subject, "baby's first reminder");
53 my $reminder_id = $reminder->id;
54 is($reminder->Status, 'open');
55
56 $ticket->SetStatus('open');
57 is( $ticket->Status, 'open', 'changed back to new' );
58
59 $m->goto_ticket($ticket->id);
60 $m->text_contains('New reminder:', "can create a new reminder");
61 $m->text_contains('Check box to complete', "we DO display this text when there are reminders");
62 $m->content_like(qr{<th[^>]*>Reminders?</th>}, "now we have a reminder titlebar");
63 $m->text_contains("baby's first reminder", "display the reminder's subject");
64
65 $m->follow_link_ok({id => 'page-reminders'});
66 $m->title_is("Reminders for ticket #" . $ticket->id);
67 $m->form_name('UpdateReminders');
68 $m->field("Reminder-Subject-$reminder_id" => "changed the subject");
69 $m->submit;
70
71 DBIx::SearchBuilder::Record::Cachable->FlushCache;
72 $reminder = RT::Ticket->new($user);
73 $reminder->Load($reminder_id);
74 is($reminder->Subject, 'changed the subject');
75 is($reminder->Status, 'open');
76
77 $m->goto_ticket($ticket->id);
78 $m->form_name('UpdateReminders');
79 $m->tick("Complete-Reminder-$reminder_id" => 1);
80 $m->submit;
81
82 DBIx::SearchBuilder::Record::Cachable->FlushCache;
83 $reminder = RT::Ticket->new($user);
84 $reminder->Load($reminder_id);
85 is($reminder->Status, 'resolved');
86
87 $m->text_contains('New reminder:', 'can create a new reminder');
88 $m->content_unlike(qr{Check box to complete}, "we don't display this text when there are open reminders");
89 $m->content_unlike(qr{<th[^>]*>Reminders?</th>}, "no reminder titlebar");
90 $m->content_unlike(qr{baby's first reminder}, "we don't display resolved reminders");
91
92 $m->follow_link_ok({id => 'page-reminders'});
93 $m->title_is("Reminders for ticket #" . $ticket->id);
94 $m->text_contains('New reminder:', 'can create a new reminder');
95 $m->text_contains('Check box to complete', "we DO display this text when there are reminders");
96 $m->content_contains("changed the subject", "display the resolved reminder's subject");
97
98 # make sure that when we submit the form, it doesn't accidentally reopen
99 # resolved reminders
100 $m->goto_ticket($ticket->id);
101 $m->form_name('UpdateReminders');
102 $m->submit;
103
104 DBIx::SearchBuilder::Record::Cachable->FlushCache;
105 $reminder = RT::Ticket->new($user);
106 $reminder->Load($reminder_id);
107 is($reminder->Status, 'resolved');
108