[Rt-commit] rt branch, 4.4/recently-viewed-bogus-tickets, updated. rt-4.4.4-15-gb0a6ca663

Michel Rodriguez michel at bestpractical.com
Fri Apr 12 10:52:01 EDT 2019


The branch, 4.4/recently-viewed-bogus-tickets has been updated
       via  b0a6ca663319b47cd7368022d462f6478651bfb3 (commit)
      from  f06ee2882efd363213d9f9dd6746a3c28e8883d5 (commit)

Summary of changes:
 t/api/user_recently_visited.t | 77 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)
 create mode 100644 t/api/user_recently_visited.t

- Log -----------------------------------------------------------------
commit b0a6ca663319b47cd7368022d462f6478651bfb3
Author: michel <michel at bestpractical.com>
Date:   Fri Apr 12 16:51:27 2019 +0200

    Added test to the fix

diff --git a/t/api/user_recently_visited.t b/t/api/user_recently_visited.t
new file mode 100644
index 000000000..e72f60cb0
--- /dev/null
+++ b/t/api/user_recently_visited.t
@@ -0,0 +1,77 @@
+use strict;
+use warnings;
+
+# test the RecentlyViewedTickets method
+
+use Test::Deep;
+use RT::Test::Shredder tests => undef;
+my $test = "RT::Test::Shredder";
+
+{   
+    my $user = RT::Test->load_or_create_user( Name => 'tester');
+    ok( $user && $user->Id, 'created user');
+
+    # need ShowTicket to visit, ModifyTicket to merge
+    ok( RT::Test->add_rights( { Principal => $user, Right => [qw(SeeQueue CreateTicket ShowTicket ModifyTicket )] }), 'granting rights');
+
+    is( $user->_visited_nb, 0, 'init: empty RecentlyViewedTickets');
+
+    my %ticket;
+    foreach my $ticket_code ('a'..'t') {
+        my $new_ticket = RT::Test->create_ticket( Subject => $ticket_code, Queue => 'General' );
+        my $id= $new_ticket->id;  
+        ok( $new_ticket, "ticket '$ticket_code' created");
+        $ticket{$ticket_code} = { ticket => $new_ticket, id => $id, subject => $ticket_code };
+        $new_ticket->ApplyTransactionBatch; # needed for the tests with shredder to work
+    }
+
+    is( $user->_visited_nb, 0, 'tickets created: empty RecentlyViewedTickets');
+
+    # using reverse on the list so it's easier to read later (last visited is first in RecentlyViewedTicket)
+    foreach my $viewed ( reverse qw( c q p b e d c b a ) ) {
+      $user->AddRecentlyViewedTicket( $ticket{$viewed}->{ticket} );
+    }
+
+    is( $user->_visited, 'c,q,p,b,e,d,a', 'visited tickets after inital visits');
+
+    my $shredder = $test->shredder_new();
+
+    $shredder->PutObjects( Objects => $ticket{m}->{ticket} );
+    $shredder->WipeoutAll;
+    is( $user->_visited, 'c,q,p,b,e,d,a', 'visited tickets after shredding an unvisited ticket');
+
+    $shredder->PutObjects( Objects => $ticket{p}->{ticket} );
+    $shredder->PutObjects( Objects => $ticket{d}->{ticket}  );
+    $shredder->WipeoutAll;
+    is( $user->_visited, 'c,q,b,e,a', 'visited tickets after shredding 2 visited tickets');
+
+    my( $ok, $msg) = $ticket{b}->{ticket}->MergeInto( $ticket{j}->{id} ); 
+    if( ! $ok) { die "error merging: $msg\n"; }
+    is( $user->_visited, 'c,q,j,e,a', 'visited tickets after merging into a ticket that was NOT on the list');
+    
+    $ticket{c}->{ticket}->MergeInto( $ticket{a}->{id} ); 
+    is( $user->_visited, 'a,q,j,e', 'visited tickets after merging into a ticket that was on the list');
+    
+    $ticket{e}->{ticket}->MergeInto( $ticket{j}->{id} ); 
+    is( $user->_visited, 'a,q,j', 'visited tickets after merging into a ticket that was on the list (merged)');
+
+    foreach my $viewed ( reverse qw( r j a h k a q a k i s t f g d) ) {
+      $user->AddRecentlyViewedTicket( $ticket{$viewed}->{ticket} );
+    }
+
+    is( $user->_visited, 'r,j,a,h,k,q,i,s,t,f,g', 'visited more than 11 tickets');
+
+}    
+
+done_testing();
+
+# monkey patching not strictly necessary, but makes for a nicer syntax in the tests
+package RT::User;
+
+sub _visited_nb { 
+    return scalar shift->RecentlyViewedTickets; 
+}
+
+sub _visited { 
+    return join ',', map { $_->{subject} } shift->RecentlyViewedTickets; 
+}

-----------------------------------------------------------------------


More information about the rt-commit mailing list