110 lines
5.0 KiB
Ruby
110 lines
5.0 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe GoogleAnalyticsEvent do
|
|
|
|
let(:ga) { GoogleAnalyticsEvent.new }
|
|
|
|
after(:each) do
|
|
Timecop.return
|
|
end
|
|
|
|
describe "track band analytics" do
|
|
it 'reports first recording' do
|
|
ResqueSpec.reset!
|
|
user = FactoryGirl.create(:user)
|
|
band = FactoryGirl.create(:band)
|
|
music_session = FactoryGirl.create(:music_session,
|
|
:creator => user,
|
|
:musician_access => true,
|
|
:band => band)
|
|
recording = Recording.start(music_session, user)
|
|
expect(Recording.where(:band_id => band.id).count).to eq(1)
|
|
|
|
GoogleAnalyticsEvent.should have_queued(GoogleAnalyticsEvent::CAT_BAND,
|
|
GoogleAnalyticsEvent::ACTION_BAND_REC,
|
|
nil)
|
|
end
|
|
|
|
it 'reports first real session' do
|
|
ResqueSpec.reset!
|
|
JamRuby::GoogleAnalyticsEvent::BandSessionTracker.should have_schedule_size_of(0)
|
|
user = FactoryGirl.create(:user)
|
|
user1 = FactoryGirl.create(:user)
|
|
band = FactoryGirl.create(:band)
|
|
band.users << user
|
|
band.users << user1
|
|
band.reload
|
|
music_session = FactoryGirl.create(:music_session, :creator => user,
|
|
:musician_access => true, :band => band)
|
|
expect(band.band_musicians.count).to eq(2)
|
|
expect(band.did_real_session).to eq(false)
|
|
connection = FactoryGirl.create(:connection, :user => user, :as_musician => true,
|
|
:aasm_state => Connection::CONNECT_STATE.to_s,
|
|
:music_session => music_session)
|
|
connection = FactoryGirl.create(:connection, :user => user1, :as_musician => true,
|
|
:aasm_state => Connection::CONNECT_STATE.to_s,
|
|
:music_session => music_session)
|
|
music_session.reload
|
|
expect(music_session.connected_participant_count).to eq(2)
|
|
expect(band.did_real_session).to eq(false)
|
|
|
|
ResqueSpec.queues["#{GoogleAnalyticsEvent::QUEUE_BAND_TRACKER}_scheduled"].select do |qq|
|
|
qq[:class] == GoogleAnalyticsEvent::BandSessionTracker.name
|
|
end.count.should eq(1)
|
|
# GoogleAnalyticsEvent::BandSessionTracker.should have_schedule_size_of_at_least(1)
|
|
GoogleAnalyticsEvent.should_not have_queued(GoogleAnalyticsEvent::CAT_BAND, GoogleAnalyticsEvent::ACTION_BAND_SESS, nil)
|
|
Timecop.freeze((GoogleAnalyticsEvent::BAND_SESSION_MIN_DURATION + 1).minutes.from_now)
|
|
|
|
qname = "#{ResqueSpec.queue_name(JamRuby::GoogleAnalyticsEvent::BandSessionTracker)}_scheduled"
|
|
expect(ResqueSpec.peek(qname).present?).to eq(true)
|
|
ResqueSpec.perform_next(qname)
|
|
GoogleAnalyticsEvent.should have_queued(GoogleAnalyticsEvent::CAT_BAND,
|
|
GoogleAnalyticsEvent::ACTION_BAND_SESS,
|
|
nil)
|
|
band.reload
|
|
expect(band.did_real_session).to eq(true)
|
|
end
|
|
|
|
end
|
|
|
|
describe "track session analytics" do
|
|
before :each do
|
|
ResqueSpec.reset!
|
|
end
|
|
it 'reports size increment' do
|
|
user = FactoryGirl.create(:user)
|
|
music_session = FactoryGirl.create(:music_session,
|
|
:creator => user,
|
|
:musician_access => true)
|
|
connection = FactoryGirl.create(:connection, :user => user,
|
|
:as_musician => true,
|
|
:aasm_state => Connection::CONNECT_STATE.to_s,
|
|
:music_session => music_session)
|
|
GoogleAnalyticsEvent.should have_queued(GoogleAnalyticsEvent::CAT_SESS_SIZE,
|
|
GoogleAnalyticsEvent::ACTION_SESS_SIZE,
|
|
music_session.connected_participant_count)
|
|
end
|
|
|
|
it 'reports duration' do
|
|
user = FactoryGirl.create(:user)
|
|
JamRuby::GoogleAnalyticsEvent::SessionDurationTracker.should have_schedule_size_of(0)
|
|
music_session = FactoryGirl.create(:music_session,
|
|
:creator => user,
|
|
:musician_access => true)
|
|
GoogleAnalyticsEvent::SessionDurationTracker.should have_schedule_size_of(1)
|
|
|
|
GoogleAnalyticsEvent::SESSION_INTERVALS.each do |interval|
|
|
Timecop.travel((interval + 1).minutes.from_now)
|
|
qname = "#{ResqueSpec.queue_name(JamRuby::GoogleAnalyticsEvent::SessionDurationTracker)}_scheduled"
|
|
next unless ResqueSpec.peek(qname).present?
|
|
ResqueSpec.perform_next(qname)
|
|
GoogleAnalyticsEvent.should have_queued(GoogleAnalyticsEvent::CAT_SESS_DUR,
|
|
GoogleAnalyticsEvent::ACTION_SESS_DUR,
|
|
interval)
|
|
end
|
|
GoogleAnalyticsEvent.should have_queue_size_of(GoogleAnalyticsEvent::SESSION_INTERVALS.count - 1)
|
|
end
|
|
end
|
|
|
|
end
|