From 9ad0badff179c562e6ac2d6c211541d742e95f03 Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Wed, 21 May 2014 06:20:15 +0000 Subject: [PATCH] VRFS-736 filling out remaining subtypes --- .../models/email_batch_progression.rb | 6 +- ruby/spec/jam_ruby/models/email_batch_spec.rb | 250 ++++++++++++++++++ 2 files changed, 253 insertions(+), 3 deletions(-) diff --git a/ruby/lib/jam_ruby/models/email_batch_progression.rb b/ruby/lib/jam_ruby/models/email_batch_progression.rb index 16548eca7..68c7ac9b8 100644 --- a/ruby/lib/jam_ruby/models/email_batch_progression.rb +++ b/ruby/lib/jam_ruby/models/email_batch_progression.rb @@ -118,11 +118,11 @@ module JamRuby when :sess_notrecord return "#{tbl}.first_real_music_session_at IS NOT NULL AND #{tbl}.first_recording_at IS NULL" when :reg_notinvite - return "#{tbl}.first_invited_at IS NOT NULL" + return "#{tbl}.first_invited_at IS NULL" when :reg_notconnect - return "#{tbl}.first_friended_at IS NOT NULL" + return "#{tbl}.first_friended_at IS NULL" when :reg_notlike - return "#{tbl}.first_social_promoted_at IS NOT NULL" + return "#{tbl}.first_social_promoted_at IS NULL" end '' end diff --git a/ruby/spec/jam_ruby/models/email_batch_spec.rb b/ruby/spec/jam_ruby/models/email_batch_spec.rb index 2229aa5e6..33727803b 100644 --- a/ruby/spec/jam_ruby/models/email_batch_spec.rb +++ b/ruby/spec/jam_ruby/models/email_batch_spec.rb @@ -217,5 +217,255 @@ describe EmailBatch do loops_bunch_of_users(batchp, users) end end + + describe 'client_run_notgear' do + # before { pending } + let(:batchp) { + FactoryGirl.create(:email_batch_progression, :sub_type => :client_run_notgear) + } + let(:user_) { FactoryGirl.create(:user, :first_ran_client_at => Time.now) } + let(:date_in_past) { Time.now - (2 * batchp.days_past_for_trigger_index(2)).days } + let(:user_existing) { + FactoryGirl.create(:user, + :created_at => date_in_past, + :first_ran_client_at => date_in_past) + } + after(:each) do + batchp.clear_batch_sets! + Timecop.return + end + it 'sends one email' do + pending + sends_one_email(user_existing, batchp) + end + it 'handles new users' do + handles_new_users(batchp, user_) + end + it 'handles existing users' do + handles_existing_users(batchp, user_existing) + end + it 'skips some days' do + skips_some_days(batchp, user_) + end + it 'loops bunch of users' do + users = [] + 20.times { |nn| users << FactoryGirl.create(:user, :first_ran_client_at => Time.now) } + loops_bunch_of_users(batchp, users) + end + end + + describe 'gear_notsess' do + # before { pending } + let(:batchp) { + FactoryGirl.create(:email_batch_progression, :sub_type => :gear_notsess) + } + let(:user_) { FactoryGirl.create(:user, :first_certified_gear_at => Time.now) } + let(:date_in_past) { Time.now - (2 * batchp.days_past_for_trigger_index(2)).days } + let(:user_existing) { + FactoryGirl.create(:user, + :created_at => date_in_past, + :first_certified_gear_at => date_in_past) + } + after(:each) do + batchp.clear_batch_sets! + Timecop.return + end + it 'sends one email' do + pending + sends_one_email(user_existing, batchp) + end + it 'handles new users' do + handles_new_users(batchp, user_) + end + it 'handles existing users' do + handles_existing_users(batchp, user_existing) + end + it 'skips some days' do + skips_some_days(batchp, user_) + end + it 'loops bunch of users' do + users = [] + 20.times { |nn| users << FactoryGirl.create(:user, :first_certified_gear_at => Time.now) } + loops_bunch_of_users(batchp, users) + end + end + + describe 'sess_notgood' do + # before { pending } + let(:batchp) { + FactoryGirl.create(:email_batch_progression, :sub_type => :sess_notgood) + } + let(:user_) { FactoryGirl.create(:user, :first_real_music_session_at => Time.now) } + let(:date_in_past) { Time.now - (2 * batchp.days_past_for_trigger_index(2)).days } + let(:user_existing) { + FactoryGirl.create(:user, + :created_at => date_in_past, + :first_real_music_session_at => date_in_past) + } + after(:each) do + batchp.clear_batch_sets! + Timecop.return + end + it 'sends one email' do + pending + sends_one_email(user_existing, batchp) + end + it 'handles new users' do + handles_new_users(batchp, user_) + end + it 'handles existing users' do + handles_existing_users(batchp, user_existing) + end + it 'skips some days' do + skips_some_days(batchp, user_) + end + it 'loops bunch of users' do + users = [] + 20.times { |nn| users << FactoryGirl.create(:user, :first_real_music_session_at => Time.now) } + loops_bunch_of_users(batchp, users) + end + end + + describe 'sess_notrecord' do + # before { pending } + let(:batchp) { + FactoryGirl.create(:email_batch_progression, :sub_type => :sess_notrecord) + } + let(:user_) { FactoryGirl.create(:user, :first_real_music_session_at => Time.now) } + let(:date_in_past) { Time.now - (2 * batchp.days_past_for_trigger_index(2)).days } + let(:user_existing) { + FactoryGirl.create(:user, + :created_at => date_in_past, + :first_real_music_session_at => date_in_past) + } + after(:each) do + batchp.clear_batch_sets! + Timecop.return + end + it 'sends one email' do + pending + sends_one_email(user_existing, batchp) + end + it 'handles new users' do + handles_new_users(batchp, user_) + end + it 'handles existing users' do + handles_existing_users(batchp, user_existing) + end + it 'skips some days' do + skips_some_days(batchp, user_) + end + it 'loops bunch of users' do + users = [] + 20.times { |nn| users << FactoryGirl.create(:user, :first_real_music_session_at => Time.now) } + loops_bunch_of_users(batchp, users) + end + end + + describe 'reg_notinvite' do + # before { pending } + let(:batchp) { + FactoryGirl.create(:email_batch_progression, :sub_type => :reg_notinvite) + } + let(:user_) { FactoryGirl.create(:user) } + let(:date_in_past) { Time.now - (2 * batchp.days_past_for_trigger_index(2)).days } + let(:user_existing) { + FactoryGirl.create(:user, + :created_at => date_in_past) + } + after(:each) do + batchp.clear_batch_sets! + Timecop.return + end + it 'sends one email' do + pending + sends_one_email(user_existing, batchp) + end + it 'handles new users' do + handles_new_users(batchp, user_) + end + it 'handles existing users' do + handles_existing_users(batchp, user_existing) + end + it 'skips some days' do + skips_some_days(batchp, user_) + end + it 'loops bunch of users' do + users = [] + 20.times { |nn| users << FactoryGirl.create(:user) } + loops_bunch_of_users(batchp, users) + end + end + + describe 'reg_notconnect' do + # before { pending } + let(:batchp) { + FactoryGirl.create(:email_batch_progression, :sub_type => :reg_notconnect) + } + let(:user_) { FactoryGirl.create(:user) } + let(:date_in_past) { Time.now - (2 * batchp.days_past_for_trigger_index(2)).days } + let(:user_existing) { + FactoryGirl.create(:user, + :created_at => date_in_past) + } + after(:each) do + batchp.clear_batch_sets! + Timecop.return + end + it 'sends one email' do + pending + sends_one_email(user_existing, batchp) + end + it 'handles new users' do + handles_new_users(batchp, user_) + end + it 'handles existing users' do + handles_existing_users(batchp, user_existing) + end + it 'skips some days' do + skips_some_days(batchp, user_) + end + it 'loops bunch of users' do + users = [] + 20.times { |nn| users << FactoryGirl.create(:user) } + loops_bunch_of_users(batchp, users) + end + end + + describe 'reg_notlike' do + # before { pending } + let(:batchp) { + FactoryGirl.create(:email_batch_progression, :sub_type => :reg_notlike) + } + let(:user_) { FactoryGirl.create(:user) } + let(:date_in_past) { Time.now - (2 * batchp.days_past_for_trigger_index(2)).days } + let(:user_existing) { + FactoryGirl.create(:user, + :created_at => date_in_past) + } + after(:each) do + batchp.clear_batch_sets! + Timecop.return + end + it 'sends one email' do + pending + sends_one_email(user_existing, batchp) + end + it 'handles new users' do + handles_new_users(batchp, user_) + end + it 'handles existing users' do + handles_existing_users(batchp, user_existing) + end + it 'skips some days' do + skips_some_days(batchp, user_) + end + it 'loops bunch of users' do + users = [] + 20.times { |nn| users << FactoryGirl.create(:user) } + loops_bunch_of_users(batchp, users) + end + end + end end