VRFS-736 filling out progression steps
This commit is contained in:
parent
30f2387658
commit
4ddd699302
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue