demarches-normaliennes/spec/lib/helpscout/user_conversations_adapter_spec.rb
Pierre de La Morinerie 503c393a87 helpscout: use replies_sent to compute contact rate
The `conversations_count` we previously used counts replies, but also
all conversations that were tagged or re-tagged during the month – with
made counting the actual work spent on user support brittle.

Counting the replies is a better estimation of what we get.

Unfortunately this also removes the filtering-by-tag feature. To
mitigate this, the reports are now scoped to a specific mailbox. This
allows to create extra mailboxes for conversations that should't be
counted in the stats.
2019-09-11 17:26:10 +02:00

53 lines
1.6 KiB
Ruby

require 'spec_helper'
describe Helpscout::UserConversationsAdapter do
let(:from) { Date.new(2017, 11) }
let(:to) { Date.new(2017, 12) }
describe '#can_fetch_reports?' do
context 'when a required secret is missing' do
before do
Rails.application.secrets.helpscout[:mailbox_id] = nil
end
it { expect(described_class.new(from, to).can_fetch_reports?).to be false }
end
context 'when all required secrets are present' do
before do
mock_helpscout_secrets
end
it { expect(described_class.new(from, to).can_fetch_reports?).to be true }
end
end
describe '#reports', vcr: { cassette_name: 'helpscout_conversations_reports' } do
before do
mock_helpscout_secrets
Rails.cache.clear
end
subject { described_class.new(from, to) }
it 'returns one report result per month' do
expect(subject.reports.count).to eq 2
end
it 'populates each report with data' do
expect(subject.reports.first[:replies_sent]).to be > 0
expect(subject.reports.first[:start_date]).to eq Time.utc(2017, 11)
expect(subject.reports.first[:end_date]).to eq Time.utc(2017, 12)
expect(subject.reports.last[:replies_sent]).to be > 0
expect(subject.reports.last[:start_date]).to eq Time.utc(2017, 12)
expect(subject.reports.last[:end_date]).to eq Time.utc(2018, 01)
end
end
def mock_helpscout_secrets
Rails.application.secrets.helpscout[:mailbox_id] = '9999'
Rails.application.secrets.helpscout[:client_id] = '1234'
Rails.application.secrets.helpscout[:client_secret] = '5678'
end
end