3 use RT::Test tests => 40;
5 my $user_a = RT::Test->load_or_create_user(
7 Password => 'password',
10 ok( $user_a && $user_a->id, 'created user_a' );
15 Right => [qw/SeeQueue CreateTicket ShowTicket OwnTicket/]
18 'add basic rights for user_a'
25 Right => [qw/ModifyTicket/],
28 'add basic rights for owner'
31 my $ticket = RT::Test->create_ticket(
32 Subject => 'test reminder permission',
36 ok( $ticket->id, 'created a ticket' );
38 my ( $baseurl, $m ) = RT::Test->started_ok;
41 my ( $root_reminder_id, $user_a_reminder_id );
42 diag "create two reminders, with owner root and user_a, respectively";
44 $m->goto_ticket( $ticket->id );
45 $m->text_contains( 'New reminder:', 'can create a new reminder' );
46 $m->form_name('UpdateReminders');
47 $m->field( 'NewReminder-Subject' => "root reminder" );
49 $m->text_contains( "Reminder 'root reminder': Created",
50 'created root reminder' );
52 $m->form_name('UpdateReminders');
53 $m->field( 'NewReminder-Subject' => "user_a reminder", );
54 $m->field( 'NewReminder-Owner' => $user_a->id, );
56 $m->text_contains( "Reminder 'user_a reminder': Created",
57 'created user_a reminder' );
59 my $reminders = RT::Reminders->new($user_a);
60 $reminders->Ticket( $ticket->id );
61 my $col = $reminders->Collection;
62 while ( my $c = $col->Next ) {
63 if ( $c->Subject eq 'root reminder' ) {
64 $root_reminder_id = $c->id;
66 elsif ( $c->Subject eq 'user_a reminder' ) {
67 $user_a_reminder_id = $c->id;
72 diag "check root_a can update user_a reminder but not root reminder";
73 my $m_a = RT::Test::Web->new;
75 ok( $m_a->login( user_a => 'password' ), 'logged in as user_a' );
76 $m_a->goto_ticket( $ticket->id );
77 $m_a->content_lacks( 'New reminder:', 'can not create a new reminder' );
78 $m_a->content_contains( 'root reminder', 'can see root reminder' );
79 $m_a->content_contains( 'user_a reminder', 'can see user_a reminder' );
81 qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
82 "root reminder checkbox is disabled"
85 $m_a->form_name('UpdateReminders');
86 $m_a->tick( "Complete-Reminder-$user_a_reminder_id" => 1 );
89 "Reminder 'user_a reminder': Status changed from 'open' to 'resolved'",
90 'complete user_a reminder' );
92 $m_a->follow_link_ok( { id => 'page-reminders' } );
93 $m_a->title_is( "Reminders for ticket #" . $ticket->id );
94 $m_a->content_contains( 'root reminder', 'can see root reminder' );
95 $m_a->content_contains( 'user_a reminder', 'can see user_a reminder' );
96 $m_a->content_lacks( 'New reminder:', 'can not create a new reminder' );
98 qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
99 "root reminder checkbox is disabled"
102 $m_a->form_name('UpdateReminders');
103 $m_a->untick( "Complete-Reminder-$user_a_reminder_id", 1 );
106 "Reminder 'user_a reminder': Status changed from 'resolved' to 'open'",
107 'reopen user_a reminder'
112 diag "set ticket owner to user_a to let user_a grant modify ticket right";
114 $ticket->SetOwner( $user_a->id );
116 $m_a->goto_ticket( $ticket->id );
117 $m_a->content_contains( 'New reminder:', 'can create a new reminder' );
119 qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
120 "root reminder checkbox is still disabled"
122 $m_a->form_name('UpdateReminders');
123 $m_a->field( 'NewReminder-Subject' => "user_a from display reminder" );
125 $m_a->text_contains( "Reminder 'user_a from display reminder': Created",
126 'created user_a from display reminder' );
128 $m_a->follow_link_ok( { id => 'page-reminders' } );
129 $m_a->title_is( "Reminders for ticket #" . $ticket->id );
130 $m_a->content_contains( 'New reminder:', 'can create a new reminder' );
132 qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
133 "root reminder checkbox is still disabled"
135 $m_a->form_name('UpdateReminders');
136 $m_a->field( 'NewReminder-Subject' => "user_a from reminders reminder" );
138 $m_a->text_contains( "Reminder 'user_a from reminders reminder': Created",
139 'created user_a from reminders reminder' );
142 diag "grant user_a with ModifyTicket globally";
145 RT::Test->add_rights(
147 Principal => $user_a,
148 Right => [qw/ModifyTicket/],
151 'add ModifyTicket rights to user_a'
154 $m_a->goto_ticket( $ticket->id );
155 $m_a->content_unlike(
156 qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
157 "root reminder checkbox is enabled"
159 $m_a->form_name('UpdateReminders');
160 $m_a->tick( "Complete-Reminder-$root_reminder_id" => 1 );
163 "Reminder 'root reminder': Status changed from 'open' to 'resolved'",
164 'complete root reminder' );
166 $m_a->follow_link_ok( { id => 'page-reminders' } );
167 $m_a->content_unlike(
168 qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
169 "root reminder checkbox is enabled"
171 $m_a->form_name('UpdateReminders');
172 $m_a->untick( "Complete-Reminder-$root_reminder_id" => 1 );
175 "Reminder 'root reminder': Status changed from 'resolved' to 'open'",
176 'reopen root reminder' );