iachat/spec/services/whatsapp/zapi_handlers/connected_callback_spec.rb
Gabriel Jablonski 8ff5834ee8
fix(zapi): support for LID-only conversations (#123)
* fix: ignore action events

* feat(zapi): allow updating instance ID

* feat: handle `chatLid` field

* test: break down handler specs into separate files

* feat: update send_message method to use recipient_id logic for zapi provider

* fix: use identifier instead of source_id for zapi

* test: fix specs

* feat: prioritize senderName over chatName for contact naming in received callback
2025-10-23 10:12:38 -03:00

45 lines
1.5 KiB
Ruby

require 'rails_helper'
describe Whatsapp::ZapiHandlers::ConnectedCallback do
let!(:whatsapp_channel) do
create(:channel_whatsapp, provider: 'zapi', validate_provider_config: false)
end
let(:inbox) { whatsapp_channel.inbox }
let(:service) { Whatsapp::IncomingMessageZapiService.new(inbox: inbox, params: params) }
describe '#process_connected_callback' do
let(:params) do
{
type: 'ConnectedCallback',
phone: whatsapp_channel.phone_number.delete('+')
}
end
it 'updates provider connection to open when phone numbers match' do
service.perform
expect(whatsapp_channel.reload.provider_connection['connection']).to eq('open')
end
it 'updates provider connection to close when phone numbers do not match' do
params[:phone] = '5511123456789'
allow(whatsapp_channel).to receive(:disconnect_channel_provider)
service.perform
expect(whatsapp_channel.reload.provider_connection['connection']).to eq('close')
expect(whatsapp_channel.provider_connection['error']).to eq(I18n.t('errors.inboxes.channel.provider_connection.wrong_phone_number'))
expect(whatsapp_channel).to have_received(:disconnect_channel_provider)
end
it 'handles Brazil mobile number normalization' do
whatsapp_channel.update!(phone_number: '+5511987654321')
params[:phone] = '551187654321' # Without leading digit '9'
service.perform
expect(whatsapp_channel.reload.provider_connection['connection']).to eq('open')
end
end
end