# frozen_string_literal: true require 'spec_helper' RSpec.describe TwilioBase::Protocols::Voice::Base do describe '#action_url' do it 'returns params[:action_url]' do action_url = 'https://url.com' params = { action_url: action_url } to = '+1234567890' protocol = described_class.new(params: params, to: to) expect(protocol.action_url).to eq(action_url) end end describe '#action_url_attributes' do it 'returns failover_contact_uri param' do to = '+1234567890' protocol = described_class.new(params: {}, to: to) expected_result = { endpoint: to } expect(protocol.action_url_attributes).to eq(expected_result) end end describe '#caller_uuid' do it 'returns caller uuid param' do caller_uuid = '+447777777777' params = { caller_uuid: caller_uuid } protocol = described_class.new( params: params, to: '+1234567890' ) caller_uuid = protocol.caller_uuid expect(caller_uuid).to eq(caller_uuid) end it 'returns caller uuid param from sip_address' do params = { caller_uuid: 'sip:+447777777777@somedomain.com' } protocol = described_class.new( params: params, to: '+1234567890' ) caller_uuid = protocol.caller_uuid expect(caller_uuid).to eq('+447777777777') end context 'caller uuid is blank' do it 'returns anonymous number' do protocol = described_class.new( params: {}, to: '+1234567890' ) caller_uuid = protocol.caller_uuid expected = TwilioBase::Protocols::Voice::Base::ANONYMOUS_NUMBER expect(caller_uuid).to eq(expected) end end end describe '#endpoint' do it 'returns "to" attribute' do to = '+1234567890' protocol = described_class.new(to: to) expect(protocol.endpoint).to eq(to) end end describe '#name' do it 'returns :number' do protocol = described_class.new(to: '+1234567890') expect(protocol.name).to eq(:number) end end describe '#status_callback_events' do it 'returns STATUS_CALLBACK_EVENTS' do protocol = described_class.new(to: '+1234567890') expected = TwilioBase::Protocols::Voice::Base::STATUS_CALLBACK_EVENTS.join(' ') expect(protocol.status_callback_events).to eq(expected) end end describe '#status_callback_url' do it 'returns the status callback url param' do status_callback_url = 'abc.com' params = { status_callback_url: status_callback_url } protocol = described_class.new(to: '+1234567890', params: params) expect(protocol.status_callback_url).to eq(status_callback_url) end end describe '#timeout' do it 'returns the timeout params' do timeout = 50 params = { timeout: timeout } protocol = described_class.new(to: '+1234567890', params: params) expect(protocol.timeout).to eq(timeout) end end describe '#wait_url' do it 'returns wait_url params' do wait_url = 'http://abc.com' params = { wait_url: wait_url } protocol = described_class.new(to: '+1234567890', params: params) expect(protocol.wait_url).to eq(wait_url) end end end