VRFS-1664 added looping test

This commit is contained in:
Jonathan Kolyer 2014-06-05 15:42:23 +00:00
parent abc1044431
commit e669205c64
2 changed files with 34 additions and 3 deletions

View File

@ -20,7 +20,9 @@ module JamRuby
ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS #{TMP_NEW}")
sql =<<SQL
SELECT
users.id AS new_user_id, users.last_jam_locidispid AS last_jam_locidispid
users.id AS new_user_id,
users.last_jam_locidispid AS last_jam_locidispid,
users.created_at AS new_created_at
INTO TEMP TABLE #{TMP_NEW}
FROM users
WHERE
@ -68,7 +70,7 @@ SQL
# load email receivers into tmp table
self._fetch_eligible_receivers
countsql = "SELECT DISTINCT COUNT(receiver_id) AS num FROM #{TMP_PAIRS} GROUP BY receiver_id"
countsql = "SELECT COUNT(DISTINCT receiver_id) AS num FROM #{TMP_PAIRS}"
rr = ActiveRecord::Base.connection.execute(countsql)
num_pair = 0 < rr.count ? rr[0]['num'].to_i : 0
@ -78,7 +80,6 @@ SQL
sql =<<SQL
SELECT DISTINCT receiver_id
FROM #{TMP_PAIRS}
GROUP BY receiver_id
ORDER BY receiver_id ASC
LIMIT #{per_page}
OFFSET #{offset}

View File

@ -68,6 +68,7 @@ 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]
@ -76,12 +77,14 @@ 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)
@ -93,5 +96,32 @@ describe EmailBatchNewMusician do
expect(new_musicians.count).to eq(4)
end
it 'handles large batches' do
dd = Time.now - (EmailBatchNewMusician::SINCE_DAYS.days + 14.day)
20.downto(1) do |nn|
FactoryGirl.create(:user, :last_jam_locidispid => 1, :last_jam_addr => 1,
:created_at => dd)
end
10.downto(1) do |nn|
FactoryGirl.create(:user, :last_jam_locidispid => 3, :last_jam_addr => 3)
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}"}
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)
end
end
end