From 0aa98146fe6102084a392428f704e86587329cad Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Fri, 6 Jun 2014 03:56:32 +0000 Subject: [PATCH 1/5] VRFS-1664 reformatting code --- .../models/email_batch_spec_new_musicians.rb | 40 +++++-------------- 1 file changed, 11 insertions(+), 29 deletions(-) diff --git a/ruby/spec/jam_ruby/models/email_batch_spec_new_musicians.rb b/ruby/spec/jam_ruby/models/email_batch_spec_new_musicians.rb index 715c6966d..86584d669 100644 --- a/ruby/spec/jam_ruby/models/email_batch_spec_new_musicians.rb +++ b/ruby/spec/jam_ruby/models/email_batch_spec_new_musicians.rb @@ -32,33 +32,16 @@ describe EmailBatchNewMusician do ) } - let (:drummer) { FactoryGirl.create(:user, - :last_jam_locidispid => 1, - :last_jam_addr => 1) } - let (:guitarist) { FactoryGirl.create(:user, - :last_jam_locidispid => 1, - :last_jam_addr => 1) } - let (:bassist) { FactoryGirl.create(:user, - :last_jam_locidispid => 1, - :last_jam_addr => 1) } - let (:vocalist) { FactoryGirl.create(:user, - :last_jam_locidispid => 1, - :last_jam_addr => 1) } - let (:loser) { FactoryGirl.create(:user, - :last_jam_locidispid => 2, - :last_jam_addr => 2) } - let (:drummer3) { FactoryGirl.create(:user, - :last_jam_locidispid => 3, - :last_jam_addr => 3) } - let (:guitarist3) { FactoryGirl.create(:user, - :last_jam_locidispid => 3, - :last_jam_addr => 3) } - let (:bassist3) { FactoryGirl.create(:user, - :last_jam_locidispid => 3, - :last_jam_addr => 3) } - let (:vocalist3) { FactoryGirl.create(:user, - :last_jam_locidispid => 3, - :last_jam_addr => 3) } + let (:drummer) { FactoryGirl.create(:user, :last_jam_locidispid => 1, :last_jam_addr => 1) } + let (:guitarist) { FactoryGirl.create(:user, :last_jam_locidispid => 1, :last_jam_addr => 1) } + let (:bassist) { FactoryGirl.create(:user, :last_jam_locidispid => 1, :last_jam_addr => 1) } + let (:vocalist) { FactoryGirl.create(:user, :last_jam_locidispid => 1, :last_jam_addr => 1) } + let (:loser) { FactoryGirl.create(:user, :last_jam_locidispid => 2, :last_jam_addr => 2) } + let (:drummer3) { FactoryGirl.create(:user, :last_jam_locidispid => 3, :last_jam_addr => 3) } + let (:guitarist3) { FactoryGirl.create(:user, :last_jam_locidispid => 3, :last_jam_addr => 3) } + let (:bassist3) { FactoryGirl.create(:user, :last_jam_locidispid => 3, :last_jam_addr => 3) } + let (:vocalist3) { FactoryGirl.create(:user, :last_jam_locidispid => 3, :last_jam_addr => 3) } + before(:each) do drummer; guitarist; bassist; vocalist; loser drummer3; guitarist3; bassist3; vocalist3 @@ -98,8 +81,7 @@ describe EmailBatchNewMusician do it 'handles large batches' do dd = receiver_date + 1.day 20.downto(1) do |nn| - FactoryGirl.create(:user, :last_jam_locidispid => 5, :last_jam_addr => 5, - :created_at => dd) + 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 => 6, :last_jam_addr => 6) From 18167e898d39cc38b81419fc77b9302ca2e8534f Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Fri, 6 Jun 2014 05:31:53 +0000 Subject: [PATCH 2/5] VRFS-1665 added large batch test --- .../models/email_batch_scheduled_sessions.rb | 13 +--- .../email_batch_spec_scheduled_session.rb | 70 ++++++++++++------- 2 files changed, 48 insertions(+), 35 deletions(-) diff --git a/ruby/lib/jam_ruby/models/email_batch_scheduled_sessions.rb b/ruby/lib/jam_ruby/models/email_batch_scheduled_sessions.rb index d9c8c915e..34c5ac3a1 100644 --- a/ruby/lib/jam_ruby/models/email_batch_scheduled_sessions.rb +++ b/ruby/lib/jam_ruby/models/email_batch_scheduled_sessions.rb @@ -48,7 +48,7 @@ SELECT INTO TEMP TABLE #{TMP_RECIP} FROM users INNER JOIN musicians_instruments AS mi ON mi.user_id = users.id -JOIN #{TMP_SESS} ON #{TMP_SESS}.instrument_id = mi.instrument_id +INNER JOIN #{TMP_SESS} ON #{TMP_SESS}.instrument_id = mi.instrument_id WHERE users.musician = 't' AND users.subscribe_email = 't' @@ -81,18 +81,13 @@ SQL # select recipients whose score is below minimum threshold def _select_scored_recipients(offset=0) if 0 > offset - sql =< 'bass') } let (:vocals) { FactoryGirl.create(:instrument, :description => 'vocal') } - let (:drummer) { FactoryGirl.create(:user, - :last_jam_locidispid => 1, - :last_jam_addr => 1) } - let (:guitarist) { FactoryGirl.create(:user, - :last_jam_locidispid => 1, - :last_jam_addr => 1) } - let (:bassist) { FactoryGirl.create(:user, - :last_jam_locidispid => 1, - :last_jam_addr => 1) } - let (:vocalist) { FactoryGirl.create(:user, - :last_jam_locidispid => 1, - :last_jam_addr => 1) } - let (:loser) { FactoryGirl.create(:user, - :last_jam_locidispid => 2, - :last_jam_addr => 2) } + let (:drummer) { FactoryGirl.create(:user, :last_jam_locidispid => 1, :last_jam_addr => 1) } + let (:guitarist) { FactoryGirl.create(:user, :last_jam_locidispid => 1, :last_jam_addr => 1) } + let (:bassist) { FactoryGirl.create(:user, :last_jam_locidispid => 1, :last_jam_addr => 1) } + let (:vocalist) { FactoryGirl.create(:user, :last_jam_locidispid => 1, :last_jam_addr => 1) } + let (:loser) { FactoryGirl.create(:user, :last_jam_locidispid => 2, :last_jam_addr => 2) } let (:session1) do FactoryGirl.create(:music_session, @@ -57,6 +47,7 @@ describe EmailBatchScheduledSessions do MusicianInstrument.delete_all RsvpSlot.delete_all JamRuby::Score.delete_all + scheduled_batch.reset! drummer.musician_instruments << FactoryGirl.build(:musician_instrument, user: drummer, instrument: drums, proficiency_level: 2) drummer.musician_instruments << FactoryGirl.build(:musician_instrument, user: drummer, instrument: guitar, proficiency_level: 2) @@ -75,7 +66,6 @@ describe EmailBatchScheduledSessions do FactoryGirl.create(:rsvp_slot, :instrument => drums, :music_session => session1) FactoryGirl.create(:rsvp_slot, :instrument => guitar, :music_session => session1) FactoryGirl.create(:rsvp_slot, :instrument => bass, :music_session => session1) - FactoryGirl.create(:rsvp_slot, :instrument => drums, :music_session => session2) FactoryGirl.create(:rsvp_slot, :instrument => guitar, :music_session => session2) FactoryGirl.create(:rsvp_slot, :instrument => bass, :music_session => session2) @@ -84,24 +74,54 @@ describe EmailBatchScheduledSessions do # oo = FactoryGirl.create(:rsvp_request, :user => vocalist, :rsvp_slot => oo) # oo.rsvp_request_slot.update_attributes(chosen: true) - JamRuby::Score.createx(1, 'a', 1, 1, 'a', 1, 10) - JamRuby::Score.createx(1, 'a', 1, 2, 'a', 2, Score::MAX_YELLOW_LATENCY + 1) - end - - before(:each) do end it 'sets up data properly' do + JamRuby::Score.createx(1, 'a', 1, 1, 'a', 1, 10) + JamRuby::Score.createx(1, 'a', 1, 2, 'a', 2, Score::MAX_YELLOW_LATENCY + 1) + expect(drummer.instruments.include?(drums)).to eq(true) expect(drummer.instruments.include?(guitar)).to eq(true) obj = scheduled_batch.fetch_recipients expect(obj.count).to eq(2) + + scheduled_batch.deliver_batch + expect(UserMailer.deliveries.length).to eq(2) end - it 'sends email' do - ebatch = scheduled_batch - ebatch.deliver_batch - expect(UserMailer.deliveries.length).to eq(3) + it 'handles large batches' do + creators = [] + 8.downto(1) do |nn| + creators << uu = FactoryGirl.create(:user, :last_jam_locidispid => 5, :last_jam_addr => 5) + msess = FactoryGirl.create(:music_session, + :creator => uu, + :scheduled_start => Time.now() + 2.days, + :musician_access => true, + :approval_required => false, + :created_at => Time.now - 1.hour) + FactoryGirl.create(:rsvp_slot, :instrument => drums, :music_session => msess) + FactoryGirl.create(:rsvp_slot, :instrument => guitar, :music_session => msess) + FactoryGirl.create(:rsvp_slot, :instrument => bass, :music_session => msess) + end + instruments = [drums, guitar, bass] + 4.downto(1) do |nn| + uu = FactoryGirl.create(:user, :last_jam_locidispid => 6, :last_jam_addr => 6) + uu.musician_instruments << FactoryGirl.build(:musician_instrument, + user: uu, + instrument: instruments.sample, + proficiency_level: 2) + end + 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) + FactoryGirl.create(:user, :last_jam_locidispid => 7, :last_jam_addr => 7) + + receivers = [] + scheduled_batch.fetch_recipients(3) do |receiver, sessions| + receivers << receiver + expect(sessions.count).to eq(8) + end + expect(receivers.count).to eq(4) end end From 98ede13fbc74cafbd7d31a2b945f6213d104919e Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Fri, 6 Jun 2014 06:08:32 +0000 Subject: [PATCH 3/5] VRFS-1664 fixed typo --- ruby/lib/jam_ruby/models/email_batch_new_musician.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0fe70134e..9d33bf45e 100644 --- a/ruby/lib/jam_ruby/models/email_batch_new_musician.rb +++ b/ruby/lib/jam_ruby/models/email_batch_new_musician.rb @@ -126,7 +126,7 @@ SQL def self.send_new_musician_batch oo = self.create - oo..deliver_batch + oo.deliver_batch oo end From eee0281c379a109fa3e92a7abdf580bd006994ea Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Fri, 6 Jun 2014 06:08:53 +0000 Subject: [PATCH 4/5] VRFS-1665 fixed typo --- ruby/lib/jam_ruby/models/email_batch_scheduled_sessions.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/lib/jam_ruby/models/email_batch_scheduled_sessions.rb b/ruby/lib/jam_ruby/models/email_batch_scheduled_sessions.rb index 34c5ac3a1..8ef39a14c 100644 --- a/ruby/lib/jam_ruby/models/email_batch_scheduled_sessions.rb +++ b/ruby/lib/jam_ruby/models/email_batch_scheduled_sessions.rb @@ -141,7 +141,7 @@ SQL def self.send_daily_session_batch oo = self.create - oo..deliver_batch + oo.deliver_batch oo end From 2932d02894dfa89b8b27c79dbd66fb149ac816c4 Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Fri, 6 Jun 2014 06:09:35 +0000 Subject: [PATCH 5/5] VRFS-1664 added periodical test --- .../jam_ruby/models/email_batch_spec_new_musicians.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ruby/spec/jam_ruby/models/email_batch_spec_new_musicians.rb b/ruby/spec/jam_ruby/models/email_batch_spec_new_musicians.rb index 86584d669..7d84c9594 100644 --- a/ruby/spec/jam_ruby/models/email_batch_spec_new_musicians.rb +++ b/ruby/spec/jam_ruby/models/email_batch_spec_new_musicians.rb @@ -61,8 +61,12 @@ describe EmailBatchNewMusician do end it 'sends email' do - ebatch = new_musician_batch - ebatch.deliver_batch + new_musician_batch.deliver_batch + expect(UserMailer.deliveries.length).to eq(1) + end + + it 'sends email periodically' do + EmailBatchNewMusician.send_new_musician_batch expect(UserMailer.deliveries.length).to eq(1) end