diff --git a/app/services/auto_assignment/inbox_round_robin_service.rb b/app/services/auto_assignment/inbox_round_robin_service.rb index 7f5a5fb6c..9cffa022f 100644 --- a/app/services/auto_assignment/inbox_round_robin_service.rb +++ b/app/services/auto_assignment/inbox_round_robin_service.rb @@ -17,8 +17,9 @@ class AutoAssignment::InboxRoundRobinService end def reset_queue + user_ids = inbox.inbox_members.map(&:user_id) clear_queue - add_agent_to_queue(inbox.inbox_members.map(&:user_id)) + add_agent_to_queue(user_ids) if user_ids.any? end # end of queue management functions diff --git a/spec/services/auto_assignment/inbox_round_robin_service_spec.rb b/spec/services/auto_assignment/inbox_round_robin_service_spec.rb index abf6e42cc..de669dfdd 100644 --- a/spec/services/auto_assignment/inbox_round_robin_service_spec.rb +++ b/spec/services/auto_assignment/inbox_round_robin_service_spec.rb @@ -27,6 +27,15 @@ describe AutoAssignment::InboxRoundRobinService do expect(inbox_round_robin_service.send(:queue).map(&:to_i)).to match_array(inbox_members.map(&:user_id)) end + it 'keeps the queue empty when the inbox has no members' do + empty_inbox = create(:inbox, account: account) + service = described_class.new(inbox: empty_inbox) + service.add_agent_to_queue(-1) + + expect(service.available_agent).to be_nil + expect(service.send(:queue)).to be_empty + end + it 'validates the queue and correct it before performing round robin' do # adding some invalid ids to queue inbox_round_robin_service.add_agent_to_queue([2, 3, 5, 9])