From 696db4d90a1b44ce4ed0c8a4ab9d53bfa3c9836e Mon Sep 17 00:00:00 2001
From: Zoran Ilibasic <zilibasic@S7designcreative.com>
Date: Mon, 7 Oct 2019 15:20:23 +0200
Subject: [PATCH] Improved filters in ticket overview screens.

---
 Kernel/Modules/AgentTicketLockedView.pm       |   8 +-
 Kernel/Modules/AgentTicketResponsibleView.pm  |   8 +-
 Kernel/Modules/AgentTicketWatchView.pm        |   8 +-
 Kernel/Output/HTML/ToolBar/TicketLocked.pm    |   6 +-
 .../Output/HTML/ToolBar/TicketResponsible.pm  |   6 +-
 Kernel/Output/HTML/ToolBar/TicketWatcher.pm   |   6 +-
 .../Selenium/Output/ToolBar/TicketLocked.t    | 234 ++++++++++++++----
 7 files changed, 202 insertions(+), 74 deletions(-)

--- a/Kernel/Modules/AgentTicketLockedView.pm
+++ b/Kernel/Modules/AgentTicketLockedView.pm
@@ -180,7 +180,7 @@ sub Run {
                 OwnerIDs   => [ $Self->{UserID} ],
                 OrderBy    => $OrderBy,
                 SortBy     => $SortByS,
-                UserID     => 1,
+                UserID     => $Self->{UserID},
                 Permission => 'ro',
             },
         },
@@ -196,7 +196,7 @@ sub Run {
                 TicketFlagUserID => $Self->{UserID},
                 OrderBy          => $OrderBy,
                 SortBy           => $SortByS,
-                UserID           => 1,
+                UserID           => $Self->{UserID},
                 Permission       => 'ro',
             },
         },
@@ -209,7 +209,7 @@ sub Run {
                 OwnerIDs   => [ $Self->{UserID} ],
                 OrderBy    => $OrderBy,
                 SortBy     => $SortByS,
-                UserID     => 1,
+                UserID     => $Self->{UserID},
                 Permission => 'ro',
             },
         },
@@ -223,7 +223,7 @@ sub Run {
                 OwnerIDs                      => [ $Self->{UserID} ],
                 OrderBy                       => $OrderBy,
                 SortBy                        => $SortByS,
-                UserID                        => 1,
+                UserID                        => $Self->{UserID},
                 Permission                    => 'ro',
             },
         },
--- a/Kernel/Modules/AgentTicketResponsibleView.pm
+++ b/Kernel/Modules/AgentTicketResponsibleView.pm
@@ -175,7 +175,7 @@ sub Run {
                 ResponsibleIDs => [ $Self->{UserID} ],
                 OrderBy        => $OrderBy,
                 SortBy         => $SortByS,
-                UserID         => 1,
+                UserID         => $Self->{UserID},
                 Permission     => 'ro',
             },
         },
@@ -191,7 +191,7 @@ sub Run {
                 TicketFlagUserID => $Self->{UserID},
                 OrderBy          => $OrderBy,
                 SortBy           => $SortByS,
-                UserID           => 1,
+                UserID           => $Self->{UserID},
                 Permission       => 'ro',
             },
         },
@@ -203,7 +203,7 @@ sub Run {
                 ResponsibleIDs => [ $Self->{UserID} ],
                 OrderBy        => $OrderBy,
                 SortBy         => $SortByS,
-                UserID         => 1,
+                UserID         => $Self->{UserID},
                 Permission     => 'ro',
             },
         },
@@ -216,7 +216,7 @@ sub Run {
                 ResponsibleIDs                => [ $Self->{UserID} ],
                 OrderBy                       => $OrderBy,
                 SortBy                        => $SortByS,
-                UserID                        => 1,
+                UserID                        => $Self->{UserID},
                 Permission                    => 'ro',
             },
         },
--- a/Kernel/Modules/AgentTicketWatchView.pm
+++ b/Kernel/Modules/AgentTicketWatchView.pm
@@ -210,7 +210,7 @@ sub Run {
                 OrderBy      => $OrderBy,
                 SortBy       => $SortByS,
                 WatchUserIDs => [ $Self->{UserID} ],
-                UserID       => 1,
+                UserID       => $Self->{UserID},
                 Permission   => 'ro',
             },
         },
@@ -225,7 +225,7 @@ sub Run {
                 TicketFlagUserID => $Self->{UserID},
                 OrderBy          => $OrderBy,
                 SortBy           => $SortByS,
-                UserID           => 1,
+                UserID           => $Self->{UserID},
                 Permission       => 'ro',
             },
         },
@@ -237,7 +237,7 @@ sub Run {
                 WatchUserIDs => [ $Self->{UserID} ],
                 OrderBy      => $OrderBy,
                 SortBy       => $SortByS,
-                UserID       => 1,
+                UserID       => $Self->{UserID},
                 Permission   => 'ro',
             },
         },
@@ -250,7 +250,7 @@ sub Run {
                 WatchUserIDs                  => [ $Self->{UserID} ],
                 OrderBy                       => $OrderBy,
                 SortBy                        => $SortByS,
-                UserID                        => 1,
+                UserID                        => $Self->{UserID},
                 Permission                    => 'ro',
             },
         },
--- a/Kernel/Output/HTML/ToolBar/TicketLocked.pm
+++ b/Kernel/Output/HTML/ToolBar/TicketLocked.pm
@@ -54,7 +54,7 @@ sub Run {
         Result     => 'COUNT',
         Locks      => [ 'lock', 'tmp_lock' ],
         OwnerIDs   => [ $Self->{UserID} ],
-        UserID     => 1,
+        UserID     => $Self->{UserID},
         Permission => 'ro',
     );
     my $CountNew = $TicketObject->TicketSearch(
@@ -65,7 +65,7 @@ sub Run {
             Seen => 1,
         },
         TicketFlagUserID => $Self->{UserID},
-        UserID           => 1,
+        UserID           => $Self->{UserID},
         Permission       => 'ro',
     );
     $CountNew = $Count - $CountNew;
@@ -75,7 +75,7 @@ sub Run {
         StateType                     => ['pending reminder'],
         TicketPendingTimeOlderMinutes => 1,
         OwnerIDs                      => [ $Self->{UserID} ],
-        UserID                        => 1,
+        UserID                        => $Self->{UserID},
         Permission                    => 'ro',
     );
 
--- a/Kernel/Output/HTML/ToolBar/TicketResponsible.pm
+++ b/Kernel/Output/HTML/ToolBar/TicketResponsible.pm
@@ -57,7 +57,7 @@ sub Run {
         Result         => 'COUNT',
         StateType      => 'Open',
         ResponsibleIDs => [ $Self->{UserID} ],
-        UserID         => 1,
+        UserID         => $Self->{UserID},
         Permission     => 'ro',
     );
     my $CountNew = $TicketObject->TicketSearch(
@@ -68,7 +68,7 @@ sub Run {
             Seen => 1,
         },
         TicketFlagUserID => $Self->{UserID},
-        UserID           => 1,
+        UserID           => $Self->{UserID},
         Permission       => 'ro',
     );
     $CountNew = $Count - $CountNew;
@@ -78,7 +78,7 @@ sub Run {
         StateType                     => ['pending reminder'],
         ResponsibleIDs                => [ $Self->{UserID} ],
         TicketPendingTimeOlderMinutes => 1,
-        UserID                        => 1,
+        UserID                        => $Self->{UserID},
         Permission                    => 'ro',
     );
 
--- a/Kernel/Output/HTML/ToolBar/TicketWatcher.pm
+++ b/Kernel/Output/HTML/ToolBar/TicketWatcher.pm
@@ -83,7 +83,7 @@ sub Run {
     my $Count = $TicketObject->TicketSearch(
         Result       => 'COUNT',
         WatchUserIDs => [ $Self->{UserID} ],
-        UserID       => 1,
+        UserID       => $Self->{UserID},
         Permission   => 'ro',
     );
     my $CountNew = $TicketObject->TicketSearch(
@@ -93,7 +93,7 @@ sub Run {
             Seen => 1,
         },
         TicketFlagUserID => $Self->{UserID},
-        UserID           => 1,
+        UserID           => $Self->{UserID},
         Permission       => 'ro',
     );
     $CountNew = $Count - $CountNew;
@@ -103,7 +103,7 @@ sub Run {
         StateType                     => ['pending reminder'],
         WatchUserIDs                  => [ $Self->{UserID} ],
         TicketPendingTimeOlderMinutes => 1,
-        UserID                        => 1,
+        UserID                        => $Self->{UserID},
         Permission                    => 'ro',
     );
 
--- a/scripts/test/Selenium/Output/ToolBar/TicketLocked.t
+++ b/scripts/test/Selenium/Output/ToolBar/TicketLocked.t
@@ -12,54 +12,119 @@ use utf8;
 
 use vars (qw($Self));
 
-# get selenium object
 my $Selenium = $Kernel::OM->Get('Kernel::System::UnitTest::Selenium');
 
 $Selenium->RunTest(
     sub {
 
-        # get helper object
-        my $Helper = $Kernel::OM->Get('Kernel::System::UnitTest::Helper');
+        my $Helper       = $Kernel::OM->Get('Kernel::System::UnitTest::Helper');
+        my $GroupObject  = $Kernel::OM->Get('Kernel::System::Group');
+        my $QueueObject  = $Kernel::OM->Get('Kernel::System::Queue');
+        my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
+
+        my $RandomID = $Helper->GetRandomID();
+        my @Groups;
+        my @Queues;
+        my @Users;
+        my @Tickets;
+        for my $Item ( 1 .. 2 ) {
+
+            # Create test group.
+            my $GroupName = "Group$Item-$RandomID";
+            my $GroupID   = $GroupObject->GroupAdd(
+                Name    => $GroupName,
+                ValidID => 1,
+                UserID  => 1,
+            );
+
+            $Self->True(
+                $GroupID,
+                "Test group $GroupName created",
+            );
+
+            push @Groups, {
+                GroupID   => $GroupID,
+                GroupName => $GroupName,
+            };
+
+            # Create test queue.
+            my $QueueName = "Queue$Item-$RandomID";
+            my $QueueID   = $QueueObject->QueueAdd(
+                Name                => $QueueName,
+                ValidID             => 1,
+                GroupID             => $GroupID,
+                FirstResponseTime   => 0,
+                FirstResponseNotify => 0,
+                UpdateTime          => 0,
+                UpdateNotify        => 0,
+                SolutionTime        => 0,
+                SolutionNotify      => 0,
+                SystemAddressID     => 1,
+                SalutationID        => 1,
+                SignatureID         => 1,
+                Comment             => 'Some Comment',
+                UserID              => 1,
+            );
+
+            $Self->True(
+                $QueueID,
+                "Test queue $QueueName created",
+            );
+
+            push @Queues, {
+                QueueID   => $QueueID,
+                QueueName => $QueueName,
+            };
+
+            # Create test user.
+            my $TestUserLogin = $Helper->TestUserCreate(
+                Groups => [ 'admin', 'users', $GroupName ],
+            ) || die "Did not get test user $Item";
+
+            my $TestUserID = $Kernel::OM->Get('Kernel::System::User')->UserLookup(
+                UserLogin => $TestUserLogin,
+            );
+
+            push @Users, {
+                TestUserLogin => $TestUserLogin,
+                TestUserID    => $TestUserID,
+            };
+
+            # Create test ticket.
+            my $TicketNumber = $TicketObject->TicketCreateNumber();
+            my $TicketID     = $TicketObject->TicketCreate(
+                TN            => $TicketNumber,
+                Title         => 'Selenium test ticket',
+                Queue         => $QueueName,
+                Lock          => 'lock',
+                Priority      => '3 normal',
+                State         => 'open',
+                CustomerID    => 'SeleniumCustomerID',
+                CustomerUser  => "test\@localhost.com",
+                OwnerID       => $TestUserID,
+                UserID        => 1,
+                ResponsibleID => $TestUserID,
+            );
+
+            $Self->True(
+                $TicketID,
+                "Ticket is created - ID $TicketID"
+            );
+
+            push @Tickets, {
+                TicketID     => $TicketID,
+                TicketNumber => $TicketNumber,
+            };
 
-        # create test user and login
-        my $TestUserLogin = $Helper->TestUserCreate(
-            Groups => [ 'admin', 'users' ],
-        ) || die "Did not get test user";
+        }
 
         $Selenium->Login(
             Type     => 'Agent',
-            User     => $TestUserLogin,
-            Password => $TestUserLogin,
-        );
-
-        # get test user ID
-        my $TestUserID = $Kernel::OM->Get('Kernel::System::User')->UserLookup(
-            UserLogin => $TestUserLogin,
-        );
-
-        # get ticket object
-        my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
-
-        # create test ticket
-        my $TicketID = $TicketObject->TicketCreate(
-            Title         => 'Selenium test ticket',
-            Queue         => 'Raw',
-            Lock          => 'lock',
-            Priority      => '3 normal',
-            State         => 'open',
-            CustomerID    => 'SeleniumCustomerID',
-            CustomerUser  => "test\@localhost.com",
-            OwnerID       => $TestUserID,
-            UserID        => 1,
-            ResponsibleID => $TestUserID,
-        );
-
-        $Self->True(
-            $TicketID,
-            "Ticket is created - ID $TicketID"
+            User     => $Users[0]->{TestUserLogin},
+            Password => $Users[0]->{TestUserLogin},
         );
 
-        # refresh dashboard page
+        # Refresh dashboard page.
         $Selenium->VerifiedRefresh();
 
         # click on tool bar AgentTicketLockedView
