From 5c4c41db6fb1733b2f161ae7a0ba311e16c59552 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 28 Jun 2018 12:33:07 +0200 Subject: [PATCH] Fixed follow up for issue #2090 with order/group overviews - Unable to create an overview with a new ticket file which is starting with number like "1_test". --- app/models/ticket/overviews.rb | 4 +- test/integration/object_manager_test.rb | 54 ++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/app/models/ticket/overviews.rb b/app/models/ticket/overviews.rb index 8e754b9b4..406799456 100644 --- a/app/models/ticket/overviews.rb +++ b/app/models/ticket/overviews.rb @@ -99,7 +99,7 @@ returns 'created_at' end end - order_by = "tickets.#{order_by}" + order_by = "#{ActiveRecord::Base.connection.quote_table_name('tickets')}.#{ActiveRecord::Base.connection.quote_column_name(order_by)}" # check if group by exists if overview.group_by.present? @@ -110,7 +110,7 @@ returns end end if group_by - order_by = "tickets.#{group_by}, #{order_by}" + order_by = "#{ActiveRecord::Base.connection.quote_table_name('tickets')}.#{ActiveRecord::Base.connection.quote_column_name(group_by)}, #{order_by}" end end diff --git a/test/integration/object_manager_test.rb b/test/integration/object_manager_test.rb index 55a5462d1..a5f359807 100644 --- a/test/integration/object_manager_test.rb +++ b/test/integration/object_manager_test.rb @@ -698,7 +698,7 @@ class ObjectManagerTest < ActiveSupport::TestCase assert_equal(0, ObjectManager::Attribute.migrations.count) # create example ticket - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'some attribute test3', group: Group.lookup(name: 'Users'), customer_id: 2, @@ -735,5 +735,57 @@ class ObjectManagerTest < ActiveSupport::TestCase assert_equal(ticket_count, 1) assert_equal(tickets[0].id, ticket1.id) + agent1 = User.create_or_update( + login: 'agent1@example.com', + firstname: 'Notification', + lastname: 'Agent1', + email: 'agent1@example.com', + password: 'agentpw', + active: true, + roles: Role.where(name: 'Agent'), + groups: Group.all, + updated_by_id: 1, + created_by_id: 1, + ) + + overview1 = Overview.create!( + name: 'Overview1', + link: 'my_overview', + roles: Role.all, + condition: { + 'ticket.1_a_anfrage_status' => { + operator: 'is', + value: 'some attribute text', + }, + }, + order: { + by: '1_a_anfrage_status', + direction: 'DESC', + }, + group_by: '1_a_anfrage_status', + view: { + d: %w[title customer state created_at], + s: %w[number title customer state created_at], + m: %w[number title customer state created_at], + view_mode_default: 's', + }, + prio: 1, + updated_by_id: 1, + created_by_id: 1, + ) + + result = Ticket::Overviews.index(agent1) + + overview = nil + result.each do |local_overview| + next if local_overview[:overview][:name] != 'Overview1' + overview = local_overview + break + end + assert(overview) + + assert_equal(1, overview[:tickets].count) + assert_equal(1, overview[:count]) + assert_equal(ticket1.id, overview[:tickets][0][:id]) end end