diff --git a/ruby/lib/jam_ruby/models/email_batch_new_musician.rb b/ruby/lib/jam_ruby/models/email_batch_new_musician.rb index 2ae5c4e73..0fe70134e 100644 --- a/ruby/lib/jam_ruby/models/email_batch_new_musician.rb +++ b/ruby/lib/jam_ruby/models/email_batch_new_musician.rb @@ -9,6 +9,7 @@ module JamRuby VAR_MUSICIAN_TABLE = "@MUSICIAN_TABLE" TMP_NEW = 'tmp_new_musicians' + TMP_RECEIVE = 'tmp_receivers' TMP_PAIRS = 'tmp_receivers_new_musicians' def self.subject @@ -26,14 +27,33 @@ SELECT INTO TEMP TABLE #{TMP_NEW} FROM users WHERE - musician = 't' AND - last_jam_locidispid IS NOT NULL AND + users.musician = 't' AND + users.last_jam_locidispid IS NOT NULL AND users.created_at > '#{time_since_last_batch(SINCE_DAYS)}' SQL ActiveRecord::Base.connection.execute(sql) end + # inserts eligible sessions to temp table def _fetch_eligible_receivers + ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS #{TMP_RECEIVE}") + sql =< Time.now - (EmailBatchNewMusician::SINCE_DAYS.days + 1.day), + :created_at => receiver_date, :last_jam_locidispid => 1, :last_jam_addr => 1 ) } let (:receiver2) { FactoryGirl.create(:user, - :created_at => Time.now - (EmailBatchNewMusician::SINCE_DAYS.days + 1.day), + :created_at => receiver_date, :last_jam_locidispid => 3, :last_jam_addr => 3 ) @@ -68,7 +70,6 @@ describe EmailBatchNewMusician do end it 'sets up data properly' do - pending results = new_musician_batch.fetch_recipients expect(results.count).to eq(1) user, new_musicians = results[0] @@ -77,14 +78,12 @@ describe EmailBatchNewMusician do end it 'sends email' do - pending ebatch = new_musician_batch ebatch.deliver_batch expect(UserMailer.deliveries.length).to eq(1) end it 'handles multiple receivers' do - pending JamRuby::Score.createx(1, 'a', 1, 3, 'a', 3, 10) JamRuby::Score.createx(1, 'a', 1, 4, 'a', 4, 10) JamRuby::Score.createx(2, 'a', 2, 4, 'a', 4, 10) @@ -97,30 +96,26 @@ describe EmailBatchNewMusician do end it 'handles large batches' do - dd = Time.now - (EmailBatchNewMusician::SINCE_DAYS.days + 14.day) + dd = receiver_date + 1.day 20.downto(1) do |nn| - FactoryGirl.create(:user, :last_jam_locidispid => 1, :last_jam_addr => 1, + FactoryGirl.create(:user, :last_jam_locidispid => 5, :last_jam_addr => 5, :created_at => dd) end 10.downto(1) do |nn| - FactoryGirl.create(:user, :last_jam_locidispid => 3, :last_jam_addr => 3) + FactoryGirl.create(:user, :last_jam_locidispid => 6, :last_jam_addr => 6) end - JamRuby::Score.createx(1, 'a', 1, 3, 'a', 3, 10) - num = 0 - # User.where(["created_at < ?",dd]).order('created_at DESC').all.each {|uu| puts "#{uu.id}; #{uu.created_at}"} + JamRuby::Score.delete_all + JamRuby::Score.createx(5, 'a', 5, 6, 'a', 6, 10) + JamRuby::Score.createx(5, 'a', 5, 7, 'a', 7, Score::MAX_YELLOW_LATENCY + 1) + FactoryGirl.create(:user, :last_jam_locidispid => 8, :last_jam_addr => 8, :created_at => dd) + FactoryGirl.create(:user, :last_jam_locidispid => 7, :last_jam_addr => 7) + receivers = [] new_musician_batch.fetch_recipients do |uu, newm| - num += 1 receivers << uu - # puts "#{uu.id}; #{uu.created_at}; " - # binding.pry expect(newm.count).to eq(10) end - dd += 1.day - # receivers.each_with_index {|rr,idx| puts "#{idx}; #{rr.created_at}; #{rr.id}"} - receivers.uniq! - expect(receivers.count).to eq(User.where(["created_at <= ?",dd]).count) - expect(num).to eq(User.where(["created_at <= ?",dd]).count) + expect(receivers.count).to eq(User.where(["created_at <= ? AND last_jam_addr = ?",dd,5]).count) end end