[Rt-commit] rt 02/03: Add tests for HasUnreadMessages and HasNoUnreadMessages searches
sunnavy
sunnavy at bestpractical.com
Mon Aug 9 19:18:02 UTC 2021
This is an automated email from the git hooks/post-receive script.
sunnavy pushed a commit to branch 4.4/ticket-search-unread-messages
in repository rt.
commit 979114d7327099550310ae467fe5f6d49e7c2c41
Author: sunnavy <sunnavy at bestpractical.com>
AuthorDate: Wed Jul 28 02:09:00 2021 +0800
Add tests for HasUnreadMessages and HasNoUnreadMessages searches
---
t/ticket/search_by_unread_messages.t | 114 +++++++++++++++++++++++++++++++++++
1 file changed, 114 insertions(+)
diff --git a/t/ticket/search_by_unread_messages.t b/t/ticket/search_by_unread_messages.t
new file mode 100644
index 0000000000..feaf491aab
--- /dev/null
+++ b/t/ticket/search_by_unread_messages.t
@@ -0,0 +1,114 @@
+use strict;
+use warnings;
+
+use RT::Test tests => undef;
+
+my $root = RT::Test->load_or_create_user( Name => 'root' );
+my $alice = RT::Test->load_or_create_user( Name => 'alice' );
+ok( RT::Test->add_rights(
+ { Principal => 'Privileged',
+ Right => [qw(ShowTicket OwnTicket ReplyToTicket CommentOnTicket ModifyTicket)]
+ }
+ ),
+ 'Add ticket rights to Alice'
+);
+
+my $current_root = RT::CurrentUser->new( RT->SystemUser );
+$current_root->Load( $root->Id );
+my $current_alice = RT::CurrentUser->new( RT->SystemUser );
+$current_alice->Load( $alice->Id );
+
+RT::Test->create_tickets(
+ { Queue => 'General' },
+ { Subject => 'ticket 1', Owner => $root->Id },
+ { Subject => 'ticket 2', Owner => $alice->Id },
+);
+
+for my $id ( 1 .. 2 ) {
+ my $ticket = RT::Ticket->new($current_root);
+ $ticket->Load($id);
+ my ( $ret, $msg ) = $ticket->Correspond( Content => 'updated by root' );
+ ok( $ret, $msg );
+}
+
+for my $id ( 3, 4, 5 ) {
+ my $ticket = RT::Ticket->new($current_root);
+ my ( $ret, undef, $msg ) = $ticket->Create( Queue => 'General', Subject => "ticket $id" );
+ ok( $ret, $msg );
+}
+
+my $ticket = RT::Ticket->new($current_alice);
+$ticket->Load(1);
+my ( $ret, $msg ) = $ticket->SetAttribute(
+ Name => 'User-' . $alice->id . '-SeenUpTo',
+ Content => $ticket->LastUpdated,
+);
+ok( $ret, $msg );
+
+$ticket = RT::Ticket->new($current_alice);
+$ticket->Load(3);
+( $ret, $msg ) = $ticket->Correspond( Content => 'corresponded by alice' );
+ok( $ret, $msg );
+
+$ticket = RT::Ticket->new($current_alice);
+$ticket->Load(4);
+( $ret, $msg ) = $ticket->Correspond( Content => 'commented by alice' );
+ok( $ret, $msg );
+
+for my $user ( '__CurrentUser__', q{'root'} ) {
+ my $tickets = RT::Tickets->new($current_root);
+ $tickets->FromSQL("HasUnreadMessages = $user");
+ is( $tickets->Count, 4, "HasUnreadMessages = $user" );
+ is_deeply(
+ [ sort map { $_->Id } @{ $tickets->ItemsArrayRef } ],
+ [ 1, 2, 3, 4 ],
+ 'Root has not read ticket 1, 2, 3, 4'
+ );
+
+ $tickets = RT::Tickets->new($current_root);
+ $tickets->FromSQL("HasNoUnreadMessages = $user");
+ is( $tickets->Count, 1, "HasNoUnreadMessages = $user" );
+ is( $tickets->First->Id, 5, 'Root has read ticket 5' );
+}
+
+for my $user ( '__CurrentUser__', q{'alice'} ) {
+ my $tickets = RT::Tickets->new($current_alice);
+ $tickets->FromSQL("HasUnreadMessages = $user");
+ is( $tickets->Count, 4, "HasUnreadMessages = $user" );
+ is_deeply(
+ [ sort map { $_->Id } @{ $tickets->ItemsArrayRef } ],
+ [ 2, 3, 4, 5 ],
+ 'Alice has not read ticket 2, 3, 4, 5'
+ );
+
+ $tickets = RT::Tickets->new($current_alice);
+ $tickets->FromSQL("HasNoUnreadMessages = $user");
+ is( $tickets->Count, 1, "HasNoUnreadMessages = $user" );
+ is( $tickets->First->id, 1, 'Alice has read ticket 1' );
+}
+
+my $tickets = RT::Tickets->new($current_root);
+$tickets->FromSQL('HasUnreadMessages = "Owner"');
+is( $tickets->Count, 5, 'HasUnreadMessages = "Owner"' );
+
+$tickets->FromSQL('HasNoUnreadMessages = "Owner"');
+is( $tickets->Count, 0, 'HasNoUnreadMessages = "Owner"' );
+
+$ticket = RT::Ticket->new($current_alice);
+$ticket->Load(1);
+( $ret, $msg ) = $ticket->Steal;
+ok( $ret, $msg );
+
+$tickets->FromSQL('HasUnreadMessages = "Owner"');
+is( $tickets->Count, 4, 'HasUnreadMessages = "Owner"' );
+is_deeply(
+ [ sort map { $_->Id } @{ $tickets->ItemsArrayRef } ],
+ [ 2, 3, 4, 5 ],
+ 'Owner has not read ticket 2, 3, 4, 5'
+);
+
+$tickets->FromSQL('HasNoUnreadMessages = "Owner"');
+is( $tickets->Count, 1, "HasNoUnreadMessages = 'Owner'" );
+is( $tickets->First->id, 1, 'Owner has read ticket 1' );
+
+done_testing;
--
To stop receiving notification emails like this one, please contact
sysadmin at bestpractical.com.
More information about the rt-commit
mailing list