VRFS-736 filling out progression steps

This commit is contained in:
Jonathan Kolyer 2014-05-19 04:35:25 +00:00
parent 30f2387658
commit 4ddd699302
2 changed files with 54 additions and 39 deletions

View File

@ -5,15 +5,15 @@ module JamRuby
BATCH_SIZE = 3
SINCE_WEEKS = 2
SUBTYPES = [:client_notdl, # Registered Musician Has Not Downloaded Client
:client_dl_notrun, # Registered Musician Has Downloaded Client But Not Yet Run It
:client_run_notgear, # Registered Musician Has Run Client But Not Successfully Qualified Audio Gear
:gear_notsess, # Registered Musician Has Successfully Qualified Audio Gear But Has Not Participated in a Real Session
:sess_notgood, # Registered Musician Has Participated In a "Real" Session But Has Not Had a "Good" Session
SUBTYPES = [:client_notdl, # Registered Musician Has Not Downloaded Client
:client_dl_notrun, # Registered Musician Has Downloaded Client But Not Yet Run It
:client_run_notgear, # Registered Musician Has Run Client But Not Successfully Qualified Audio Gear
:gear_notsess, # Registered Musician Has Successfully Qualified Audio Gear But Has Not Participated in a Real Session
:sess_notgood, # Registered Musician Has Participated In a "Real" Session But Has Not Had a "Good" Session
:sess_notrecord, # Registered Musician Has Participated In a "Real" Session But Has Not Made a Recording
:reg_notinvite, # Registered Musician Has Not Invited Friends to Join JamKazam
:reg_notconnect, # Registered Musician Has Not Connected with any Friends on JamKazam
:reg_notlike, # Registered Musician Has Not Liked Jamkazam
:sess_notrecord # Registered Musician Has Participated In a "Real" Session But Has Not Made a Recording
:reg_notconnect, # Registered Musician Has Not Connected with any Friends on JamKazam
:reg_notlike, # Registered Musician Has Not Liked Jamkazam
]
SUBTYPE_METADATA = {
@ -84,6 +84,22 @@ module JamRuby
case self.sub_type.to_sym
when :client_notdl
return ["users.created_at < ?", Time.now - intervals[trigger_idx].days]
when :client_dl_notrun
return ["users.first_downloaded_client_at < ?", Time.now - intervals[trigger_idx].days]
when :client_run_notgear
return ["users.first_ran_client_at < ?", Time.now - intervals[trigger_idx].days]
when :gear_notsess
return ["users.first_certified_gear_at < ?", Time.now - intervals[trigger_idx].days]
when :sess_notgood
return ["users.first_real_music_session_at < ?", Time.now - intervals[trigger_idx].days]
when :sess_notrecord
return ["users.first_real_music_session_at < ?", Time.now - intervals[trigger_idx].days]
when :reg_notconnect
return ["users.created_at < ?", Time.now - intervals[trigger_idx].days]
when :reg_notinvite
return ["users.created_at < ?", Time.now - intervals[trigger_idx].days]
when :reg_notlike
return ["users.created_at < ?", Time.now - intervals[trigger_idx].days]
end
end
@ -91,6 +107,22 @@ module JamRuby
case self.sub_type.to_sym
when :client_notdl
return "first_downloaded_client_at IS NULL"
when :client_dl_notrun
return "first_downloaded_client_at IS NOT NULL AND first_ran_client_at IS NULL"
when :client_run_notgear
return "first_ran_client_at IS NOT NULL AND first_certified_gear_at IS NULL"
when :gear_notsess
return "first_certified_gear_at IS NOT NULL AND first_real_music_session_at IS NULL"
when :sess_notgood
return "first_real_music_session_at IS NOT NULL AND first_good_music_session_at IS NULL"
when :sess_notrecord
return "first_real_music_session_at IS NOT NULL AND first_recording_at IS NULL"
when :reg_notinvite
return "first_invited_at IS NOT NULL"
when :reg_notconnect
return "first_friended_at IS NOT NULL"
when :reg_notlike
return "first_social_promoted_at IS NOT NULL"
end
''
end

View File

@ -59,6 +59,8 @@ describe EmailBatch do
context 'user progress' do
describe 'client not downloaded' do
before { pending }
let(:batchp) {
FactoryGirl.create(:email_batch_progression, :sub_type => :client_notdl)
}
@ -77,7 +79,7 @@ describe EmailBatch do
}
let(:user_existing) {
FactoryGirl.create(:user,
:created_at => Time.now - (2*batchp.days_past_for_trigger_index(2)).days)
:created_at => Time.now - (2 * batchp.days_past_for_trigger_index(2)).days)
}
after(:each) do
@ -85,13 +87,11 @@ describe EmailBatch do
end
it 'returns no users' do
pending
user_
expect(batchp.fetch_recipients.count).to eq(0)
end
it 'returns user first trigger' do
pending
user_
user_trigger2
expect(batchp.fetch_recipients.count).to eq(1)
@ -99,33 +99,7 @@ describe EmailBatch do
expect(batchp.fetch_recipients(0).count).to eq(0)
end
it 'progressively returns expected count' do
pending
user_; user_trigger0; user_trigger1
Timecop.travel(user_trigger2.created_at + batchp.days_past_for_trigger_index(0).days)
expect(batchp.fetch_recipients(0).count).to eq(1)
batchp.make_set(user_trigger2, 0)
Timecop.travel(user_trigger2.created_at + batchp.days_past_for_trigger_index(1).days)
expect(batchp.fetch_recipients(1).count).to eq(1)
batchp.make_set(user_trigger2, 1)
Timecop.travel(user_trigger2.created_at + batchp.days_past_for_trigger_index(2).days)
expect(batchp.fetch_recipients(2).count).to eq(1)
end
it 'handles skips properly' do
pending
Timecop.travel(user_trigger2.created_at + batchp.days_past_for_trigger_index(0).days)
expect(batchp.fetch_recipients(0).count).to eq(1)
batchp.make_set(user_trigger2, 0)
Timecop.travel(user_trigger2.created_at + batchp.days_past_for_trigger_index(2).days)
expect(batchp.fetch_recipients(1).count).to eq(1)
batchp.make_set(user_trigger2, 1)
Timecop.travel(user_trigger2.created_at + batchp.days_past_for_trigger_index(1).days)
expect(batchp.fetch_recipients(1).count).to eq(0)
end
it 'handles each trigger index' do
pending
user_
expect(batchp.fetch_recipients(0).count).to eq(0)
Timecop.travel(user_.created_at + batchp.days_past_for_trigger_index(0).days)
@ -141,8 +115,18 @@ describe EmailBatch do
expect(batchp.fetch_recipients(2).count).to eq(0)
end
it 'handles skips properly' do
Timecop.travel(user_trigger2.created_at + batchp.days_past_for_trigger_index(0).days)
expect(batchp.fetch_recipients(0).count).to eq(1)
batchp.make_set(user_trigger2, 0)
Timecop.travel(user_trigger2.created_at + batchp.days_past_for_trigger_index(2).days)
expect(batchp.fetch_recipients(1).count).to eq(1)
batchp.make_set(user_trigger2, 1)
Timecop.travel(user_trigger2.created_at + batchp.days_past_for_trigger_index(1).days)
expect(batchp.fetch_recipients(1).count).to eq(0)
end
it 'skips a day' do
pending
dd = user_.created_at
Timecop.travel(dd)
expect(batchp.fetch_recipients(0).count).to eq(0)
@ -184,5 +168,4 @@ describe EmailBatch do
end
end
end