From ffa9e45d70a2ec5253b370b98d09bb8f26e95721 Mon Sep 17 00:00:00 2001 From: Sojan Jose Date: Fri, 26 Jun 2026 14:41:43 -0700 Subject: [PATCH] fix: preserve status on human reassignment --- app/services/conversations/assignment_service.rb | 3 ++- .../accounts/conversations/assignments_controller_spec.rb | 2 +- spec/services/conversations/assignment_service_spec.rb | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/services/conversations/assignment_service.rb b/app/services/conversations/assignment_service.rb index 54084fb40..aa2c944d7 100644 --- a/app/services/conversations/assignment_service.rb +++ b/app/services/conversations/assignment_service.rb @@ -14,9 +14,10 @@ class Conversations::AssignmentService attr_reader :conversation, :assignee_id, :assignee_type def assign_agent + agent_bot_owned = conversation.assignee_agent_bot_id.present? conversation.assignee = assignee conversation.assignee_agent_bot = nil - conversation.status = :open if assignee + conversation.status = :open if assignee && agent_bot_owned && conversation.pending? conversation.save! assignee end diff --git a/spec/controllers/api/v1/accounts/conversations/assignments_controller_spec.rb b/spec/controllers/api/v1/accounts/conversations/assignments_controller_spec.rb index 260e1ab46..e7aee9c49 100644 --- a/spec/controllers/api/v1/accounts/conversations/assignments_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/conversations/assignments_controller_spec.rb @@ -44,7 +44,7 @@ RSpec.describe 'Conversation Assignment API', type: :request do end it 'assigns a user to the conversation' do - conversation.update!(status: :pending) + conversation.update!(assignee_agent_bot: agent_bot, status: :pending) params = { assignee_id: agent.id } post api_v1_account_conversation_assignments_url(account_id: account.id, conversation_id: conversation.display_id), diff --git a/spec/services/conversations/assignment_service_spec.rb b/spec/services/conversations/assignment_service_spec.rb index 0cb3cda7e..6377b8fa5 100644 --- a/spec/services/conversations/assignment_service_spec.rb +++ b/spec/services/conversations/assignment_service_spec.rb @@ -35,6 +35,14 @@ describe Conversations::AssignmentService do expect(conversation.assignee_agent_bot_id).to be_nil expect(conversation.status).to eq('open') end + + it 'preserves status for ordinary human assignment changes' do + conversation.update!(assignee_agent_bot: nil, status: :resolved) + + described_class.new(conversation: conversation, assignee_id: agent.id).perform + + expect(conversation.reload.status).to eq('resolved') + end end context 'when assigning an agent bot' do