VRFS-1665 added large batch test
This commit is contained in:
parent
0aa98146fe
commit
18167e898d
|
|
@ -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 =<<SQL
|
||||
SELECT DISTINCT COUNT(receiver_id) AS num
|
||||
FROM #{TMP_MATCH}
|
||||
GROUP BY receiver_id
|
||||
SQL
|
||||
sql = "SELECT COUNT(DISTINCT receiver_id) AS num FROM #{TMP_MATCH}"
|
||||
rr = ActiveRecord::Base.connection.execute(sql)
|
||||
return 0 < rr.count ? rr[0]['num'].to_i : 0
|
||||
else
|
||||
sql =<<SQL
|
||||
SELECT DISTINCT receiver_id
|
||||
FROM #{TMP_MATCH}
|
||||
GROUP BY receiver_id
|
||||
ORDER BY receiver_id ASC
|
||||
LIMIT #{@per_page}
|
||||
OFFSET #{offset}
|
||||
|
|
@ -134,14 +129,12 @@ SQL
|
|||
|
||||
def deliver_batch_sets!
|
||||
self.opt_in_count = 0
|
||||
sent = 0
|
||||
self.fetch_recipients do |receiver, sessions_and_latency|
|
||||
self.opt_in_count += 1
|
||||
sent += 1
|
||||
bset = EmailBatchSet.scheduled_session_set(self, receiver, sessions_and_latency)
|
||||
UserMailer.scheduled_session_daily(receiver, sessions_and_latency).deliver
|
||||
end
|
||||
self.sent_count = sent
|
||||
self.sent_count = self.opt_in_count
|
||||
self.save
|
||||
self.did_batch_run!
|
||||
end
|
||||
|
|
|
|||
|
|
@ -20,21 +20,11 @@ describe EmailBatchScheduledSessions do
|
|||
let (:bass) { FactoryGirl.create(:instrument, :description => '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
|
||||
|
|
|
|||
Loading…
Reference in New Issue