Improve auto assignment for inactive agents or agents in inactive groups to default "-" user for issue #1816
This commit is contained in:
parent
4bd9dcf518
commit
09caba6aed
4 changed files with 228 additions and 2 deletions
|
@ -23,7 +23,7 @@ class Ticket < ApplicationModel
|
||||||
store :preferences
|
store :preferences
|
||||||
before_create :check_generate, :check_defaults, :check_title, :set_default_state, :set_default_priority
|
before_create :check_generate, :check_defaults, :check_title, :set_default_state, :set_default_priority
|
||||||
after_create :check_escalation_update
|
after_create :check_escalation_update
|
||||||
before_update :check_defaults, :check_title, :reset_pending_time
|
before_update :check_defaults, :check_title, :reset_pending_time, :check_owner_active
|
||||||
after_update :check_escalation_update
|
after_update :check_escalation_update
|
||||||
|
|
||||||
validates :group_id, presence: true
|
validates :group_id, presence: true
|
||||||
|
@ -1207,4 +1207,11 @@ result
|
||||||
self.priority_id = default_ticket_priority.id
|
self.priority_id = default_ticket_priority.id
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def check_owner_active
|
||||||
|
return true if owner.login == '-' # return when ticket is unassigned
|
||||||
|
return true if owner.groups.any?(&:active?) && owner.active? # return if user in any groups assigned is active and user account is active
|
||||||
|
self.owner = User.find_by(login: '-') # else set the owner of the ticket to the default user as unassigned
|
||||||
|
true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -122,7 +122,7 @@ class HistoryTest < ActiveSupport::TestCase
|
||||||
value_to: 'Unit Test 2 (äöüß) - update!',
|
value_to: 'Unit Test 2 (äöüß) - update!',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
result: true,
|
result: false,
|
||||||
history_object: 'Ticket',
|
history_object: 'Ticket',
|
||||||
history_type: 'updated',
|
history_type: 'updated',
|
||||||
history_attribute: 'owner',
|
history_attribute: 'owner',
|
||||||
|
|
|
@ -877,6 +877,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
agent1 = User.create_or_update(
|
agent1 = User.create_or_update(
|
||||||
login: 'agent-has-changed@example.com',
|
login: 'agent-has-changed@example.com',
|
||||||
|
@ -886,6 +887,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_at: '2015-02-05 16:37:00',
|
updated_at: '2015-02-05 16:37:00',
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
|
@ -1190,6 +1192,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
agent = User.create_or_update(
|
agent = User.create_or_update(
|
||||||
login: 'agent@example.com',
|
login: 'agent@example.com',
|
||||||
|
@ -1199,6 +1202,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -1325,6 +1329,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
agent = User.create_or_update(
|
agent = User.create_or_update(
|
||||||
login: 'agent@example.com',
|
login: 'agent@example.com',
|
||||||
|
@ -1334,6 +1339,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -1438,6 +1444,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
agent = User.create_or_update(
|
agent = User.create_or_update(
|
||||||
login: 'agent@example.com',
|
login: 'agent@example.com',
|
||||||
firstname: 'Trigger',
|
firstname: 'Trigger',
|
||||||
|
@ -1446,6 +1453,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -1548,6 +1556,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
agent = User.create_or_update(
|
agent = User.create_or_update(
|
||||||
login: 'agent@example.com',
|
login: 'agent@example.com',
|
||||||
|
@ -1557,6 +1566,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -1663,6 +1673,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
agent1 = User.create_or_update(
|
agent1 = User.create_or_update(
|
||||||
login: 'agent@example.com',
|
login: 'agent@example.com',
|
||||||
|
@ -1672,6 +1683,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -1683,6 +1695,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -1855,6 +1868,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
agent = User.create_or_update(
|
agent = User.create_or_update(
|
||||||
login: 'agent@example.com',
|
login: 'agent@example.com',
|
||||||
|
@ -1864,6 +1878,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -1989,6 +2004,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
agent = User.create_or_update(
|
agent = User.create_or_update(
|
||||||
login: 'agent@example.com',
|
login: 'agent@example.com',
|
||||||
|
@ -1998,6 +2014,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -2129,6 +2146,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
agent1 = User.create_or_update(
|
agent1 = User.create_or_update(
|
||||||
login: 'agent1@example.com',
|
login: 'agent1@example.com',
|
||||||
|
@ -2138,6 +2156,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -2149,6 +2168,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -2261,6 +2281,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
agent = User.create_or_update(
|
agent = User.create_or_update(
|
||||||
login: 'agent@example.com',
|
login: 'agent@example.com',
|
||||||
|
@ -2270,6 +2291,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -2544,6 +2566,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
agent = User.create_or_update(
|
agent = User.create_or_update(
|
||||||
login: 'agent@example.com',
|
login: 'agent@example.com',
|
||||||
|
@ -2553,6 +2576,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -2972,6 +2996,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'adminpw',
|
password: 'adminpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: Role.where(name: %w[Admin Agent]),
|
roles: Role.where(name: %w[Admin Agent]),
|
||||||
|
groups: Group.where(name: 'Users'),
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
@ -3907,6 +3932,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
test 'change owner' do
|
test 'change owner' do
|
||||||
roles = Role.where(name: 'Agent')
|
roles = Role.where(name: 'Agent')
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
agent1 = User.create_or_update(
|
agent1 = User.create_or_update(
|
||||||
login: 'agent-has-changed@example.com',
|
login: 'agent-has-changed@example.com',
|
||||||
firstname: 'Has Changed',
|
firstname: 'Has Changed',
|
||||||
|
@ -3915,6 +3941,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_at: '2015-02-05 16:37:00',
|
updated_at: '2015-02-05 16:37:00',
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
|
@ -3928,6 +3955,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
password: 'agentpw',
|
password: 'agentpw',
|
||||||
active: true,
|
active: true,
|
||||||
roles: roles,
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
updated_at: '2015-02-05 16:37:00',
|
updated_at: '2015-02-05 16:37:00',
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
|
|
191
test/unit/ticket_update_test.rb
Normal file
191
test/unit/ticket_update_test.rb
Normal file
|
@ -0,0 +1,191 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class TicketUpdateTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
|
setup do
|
||||||
|
UserInfo.current_user_id = 1
|
||||||
|
Group.create_or_update(
|
||||||
|
name: 'Disabled Group',
|
||||||
|
follow_up_possible: 'yes',
|
||||||
|
follow_up_assignment: true,
|
||||||
|
active: false,
|
||||||
|
)
|
||||||
|
groups = Group.where(name: 'Users')
|
||||||
|
roles = Role.where(name: 'Agent')
|
||||||
|
@agent1 = User.create_or_update(
|
||||||
|
login: 'ticket-customer-organization-update-agent1@example.com',
|
||||||
|
firstname: 'FollowUpCheck',
|
||||||
|
lastname: 'Agent1',
|
||||||
|
email: 'ticket-customer-organization-update-agent1@example.com',
|
||||||
|
password: 'agentpw',
|
||||||
|
active: true,
|
||||||
|
roles: roles,
|
||||||
|
groups: groups,
|
||||||
|
)
|
||||||
|
roles = Role.where(name: 'Customer')
|
||||||
|
@organization1 = Organization.create_if_not_exists(
|
||||||
|
name: 'Customer Organization Update',
|
||||||
|
)
|
||||||
|
@customer1 = User.create_or_update(
|
||||||
|
login: 'ticket-customer-organization-update-customer1@example.com',
|
||||||
|
firstname: 'FollowUpCheck',
|
||||||
|
lastname: 'Customer1',
|
||||||
|
email: 'ticket-customer-organization-update-customer1@example.com',
|
||||||
|
password: 'customerpw',
|
||||||
|
active: true,
|
||||||
|
organization_id: @organization1.id,
|
||||||
|
roles: roles,
|
||||||
|
)
|
||||||
|
UserInfo.current_user_id = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'create ticket, update owner to user with disabled group' do
|
||||||
|
|
||||||
|
ticket = Ticket.create!(
|
||||||
|
title: "some title1\n äöüß",
|
||||||
|
group: Group.lookup(name: 'Users'),
|
||||||
|
customer_id: @customer1.id,
|
||||||
|
owner_id: @agent1.id,
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
assert(ticket, 'ticket created')
|
||||||
|
assert_equal(@customer1.id, ticket.customer.id)
|
||||||
|
assert_equal(@organization1.id, ticket.organization.id)
|
||||||
|
|
||||||
|
@agent1.groups = Group.where(name: 'Disabled Group')
|
||||||
|
@agent1.save!
|
||||||
|
|
||||||
|
ticket.owner = @agent1
|
||||||
|
ticket.save!
|
||||||
|
|
||||||
|
ticket.reload
|
||||||
|
assert_equal('-', ticket.owner.login) # reassigned to default agent
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'create ticket, update owner to user which is inactive' do
|
||||||
|
|
||||||
|
ticket = Ticket.create!(
|
||||||
|
title: "some title1\n äöüß",
|
||||||
|
group: Group.lookup(name: 'Users'),
|
||||||
|
customer_id: @customer1.id,
|
||||||
|
owner_id: @agent1.id,
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
assert(ticket, 'ticket created')
|
||||||
|
assert_equal(@customer1.id, ticket.customer.id)
|
||||||
|
assert_equal(@organization1.id, ticket.organization.id)
|
||||||
|
|
||||||
|
@agent1.active = false
|
||||||
|
@agent1.save!
|
||||||
|
|
||||||
|
ticket.owner = @agent1
|
||||||
|
ticket.save!
|
||||||
|
|
||||||
|
ticket.reload
|
||||||
|
assert_equal('-', ticket.owner.login) # reassigned to default agent
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'create ticket, update owner to user which active and is in active group' do
|
||||||
|
|
||||||
|
ticket = Ticket.create!(
|
||||||
|
title: "some title1\n äöüß",
|
||||||
|
group: Group.lookup(name: 'Users'),
|
||||||
|
customer_id: @customer1.id,
|
||||||
|
owner_id: @agent1.id,
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
assert(ticket, 'ticket created')
|
||||||
|
assert_equal(@customer1.id, ticket.customer.id)
|
||||||
|
assert_equal(@organization1.id, ticket.organization.id)
|
||||||
|
|
||||||
|
ticket.owner = @agent1
|
||||||
|
ticket.save!
|
||||||
|
|
||||||
|
ticket.reload
|
||||||
|
assert_equal(ticket.owner.login, 'ticket-customer-organization-update-agent1@example.com') # should not be reassigned
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'check if ticket is unassigned on follow up via model if owner in a group is inactive' do
|
||||||
|
ticket = Ticket.create!(
|
||||||
|
title: 'follow up check for invalid owner',
|
||||||
|
group: Group.lookup(name: 'Users'),
|
||||||
|
customer: @customer1,
|
||||||
|
owner: @agent1,
|
||||||
|
state: Ticket::State.lookup(name: 'closed'),
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
article = Ticket::Article.create!(
|
||||||
|
ticket_id: ticket.id,
|
||||||
|
from: 'some_sender@example.com',
|
||||||
|
to: 'some_recipient@example.com',
|
||||||
|
subject: 'follow up check',
|
||||||
|
body: 'some message article',
|
||||||
|
internal: false,
|
||||||
|
sender: Ticket::Article::Sender.lookup(name: 'Agent'),
|
||||||
|
type: Ticket::Article::Type.lookup(name: 'email'),
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
|
||||||
|
@agent1.groups = Group.where(name: 'Disabled Group')
|
||||||
|
@agent1.save!
|
||||||
|
|
||||||
|
email_raw = "From: me@example.com
|
||||||
|
To: customer@example.com
|
||||||
|
Subject: #{ticket.subject_build('some new subject')}
|
||||||
|
|
||||||
|
Some Text"
|
||||||
|
|
||||||
|
ticket_p, article_p, user_p = Channel::EmailParser.new.process({}, email_raw)
|
||||||
|
assert_equal(ticket.id, ticket_p.id)
|
||||||
|
|
||||||
|
assert_equal('open', ticket_p.state.name)
|
||||||
|
assert_equal('-', ticket_p.owner.login)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'check if ticket is unassigned on follow up via email if current owner is inactive' do
|
||||||
|
|
||||||
|
ticket = Ticket.create!(
|
||||||
|
title: 'follow up check for invalid owner',
|
||||||
|
group: Group.lookup(name: 'Users'),
|
||||||
|
customer: @customer1,
|
||||||
|
owner: @agent1,
|
||||||
|
state: Ticket::State.lookup(name: 'closed'),
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
article = Ticket::Article.create!(
|
||||||
|
ticket_id: ticket.id,
|
||||||
|
from: 'some_sender@example.com',
|
||||||
|
to: 'some_recipient@example.com',
|
||||||
|
subject: 'follow up check',
|
||||||
|
body: 'some message article',
|
||||||
|
internal: false,
|
||||||
|
sender: Ticket::Article::Sender.lookup(name: 'Agent'),
|
||||||
|
type: Ticket::Article::Type.lookup(name: 'email'),
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
|
||||||
|
@agent1.active = false
|
||||||
|
@agent1.save!
|
||||||
|
|
||||||
|
email_raw = "From: me@example.com
|
||||||
|
To: customer@example.com
|
||||||
|
Subject: #{ticket.subject_build('some new subject')}
|
||||||
|
|
||||||
|
Some Text"
|
||||||
|
|
||||||
|
ticket_p, article_p, user_p = Channel::EmailParser.new.process({}, email_raw)
|
||||||
|
assert_equal(ticket.id, ticket_p.id)
|
||||||
|
|
||||||
|
assert_equal('open', ticket_p.state.name)
|
||||||
|
assert_equal('-', ticket_p.owner.login)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in a new issue