1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe 'Caller log', authenticated_as: :authenticate, type: :system do
- let(:agent_phone) { '0190111' }
- let(:customer_phone) { '0190333' }
- let(:agent) { create(:agent, phone: agent_phone) }
- let(:customer) { create(:customer, phone: customer_phone) }
- let(:sipgate_on) { true }
- let(:params) do
- {
- direction: 'in',
- from: customer.phone,
- to: agent_phone,
- callId: '111',
- cause: 'busy',
- }
- end
- let(:first_params) { params.merge(event: 'newCall') }
- let(:second_params) { params.merge(event: 'hangup') }
- let(:place_call) do
- token = Setting.get('sipgate_token')
- post "#{Capybara.app_host}/api/v1/sipgate/#{token}/in", params: first_params
- post "#{Capybara.app_host}/api/v1/sipgate/#{token}/in", params: second_params
- end
- def authenticate
- Setting.set('sipgate_integration', sipgate_on)
- agent
- end
- context 'when sipgate integration is on' do
- it 'shows the phone menu in nav bar' do
- visit '/'
- within '#navigation .menu' do
- expect(page).to have_link('Phone', href: '#cti')
- end
- end
- end
- context 'when sipgate integration is not on' do
- let(:sipgate_on) { false }
- it 'does not show the phone menu in nav bar' do
- visit '/'
- within '#navigation .menu' do
- expect(page).to have_no_link('Phone', href: '#cti')
- end
- end
- end
- context 'with incoming call' do
- before do
- visit 'cti'
- place_call
- end
- it 'increments the call counter notification badge' do
- within '[href="#cti"].js-phoneMenuItem' do
- counter = find('.counter')
- expect(counter).to have_content 1
- end
- end
- end
- context 'when incoming call is checked' do
- before do
- visit 'cti'
- place_call
- end
- it 'clears the call counter notification badge' do
- within :active_content do
- find('.table-checkbox input.js-check', visible: :all).check allow_label_click: true
- end
- within '[href="#cti"].js-phoneMenuItem' do
- expect(page).to have_no_selector('.counter')
- end
- end
- end
- end
|