From 14d7df5e509f4ebc1f31d54cd6c5d54e9f53e6e5 Mon Sep 17 00:00:00 2001 From: Sojan Jose Date: Thu, 2 Jul 2026 21:15:18 -0700 Subject: [PATCH] fix: open bot handled conversations on team takeover --- app/models/concerns/assignment_handler.rb | 4 ++++ .../accounts/conversations/assignments_controller_spec.rb | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/assignment_handler.rb b/app/models/concerns/assignment_handler.rb index a9f529f65..a6b1422b7 100644 --- a/app/models/concerns/assignment_handler.rb +++ b/app/models/concerns/assignment_handler.rb @@ -14,6 +14,10 @@ module AssignmentHandler validate_current_assignee_team self.assignee ||= find_assignee_from_team + return if assignee_id.blank? + + self.status = :open if assignee_agent_bot_id.present? && pending? + self.assignee_agent_bot = nil end def validate_current_assignee_team 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 e7aee9c49..096b6d294 100644 --- a/spec/controllers/api/v1/accounts/conversations/assignments_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/conversations/assignments_controller_spec.rb @@ -83,6 +83,7 @@ RSpec.describe 'Conversation Assignment API', type: :request do team_member = create(:user, account: account, role: :agent, auto_offline: false) create(:inbox_member, inbox: conversation.inbox, user: team_member) create(:team_member, team: team, user: team_member) + conversation.update!(assignee_agent_bot: agent_bot, status: :pending) params = { team_id: team.id } post api_v1_account_conversation_assignments_url(account_id: account.id, conversation_id: conversation.display_id), @@ -93,7 +94,10 @@ RSpec.describe 'Conversation Assignment API', type: :request do expect(response).to have_http_status(:success) expect(conversation.reload.team).to eq(team) # assignee will be from team - expect(conversation.reload.assignee).to eq(team_member) + conversation.reload + expect(conversation.assignee).to eq(team_member) + expect(conversation.assignee_agent_bot).to be_nil + expect(conversation.status).to eq('open') end end