VRFS-1664 enhancing tests

This commit is contained in:
Jonathan Kolyer 2014-06-09 05:12:29 +00:00
parent c66da4d945
commit c0287cc224
2 changed files with 86 additions and 23 deletions

View File

@ -29,7 +29,8 @@ FROM users
WHERE
users.musician = 't' AND
users.last_jam_locidispid IS NOT NULL AND
users.created_at > '#{time_since_last_batch(SINCE_DAYS)}'
users.created_at > '#{time_since_last_batch(SINCE_DAYS)}' AND
users.created_at <= '#{self.created_at}'
SQL
ActiveRecord::Base.connection.execute(sql)
end

View File

@ -13,9 +13,14 @@ describe EmailBatchNewMusician do
describe 'daily scheduled' do
# before { pending }
let (:new_musician_batch) { FactoryGirl.create(:email_batch_new_musician) }
let (:batch_created_at) {
Time.now - 1.day
# FactoryGirl.create(:email_batch_new_musician, :created_at => Time.now - 1.day)
}
let (:receiver_date) { Time.now - (EmailBatchNewMusician::SINCE_DAYS.days + 1.day) }
let (:receiver_date) {
batch_created_at - (EmailBatchNewMusician::SINCE_DAYS.days + 1.day)
}
let (:receiver1) {
FactoryGirl.create(:user,
@ -32,45 +37,101 @@ 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, :created_at => batch_created_at - 1.hour) }
let (:guitarist) { FactoryGirl.create(:user, :last_jam_locidispid => 1, :created_at => batch_created_at - 1.hour) }
let (:bassist) { FactoryGirl.create(:user, :last_jam_locidispid => 1, :created_at => batch_created_at - 1.hour) }
let (:vocalist) { FactoryGirl.create(:user, :last_jam_locidispid => 1, :created_at => batch_created_at - 1.hour) }
let (:loser) { FactoryGirl.create(:user, :last_jam_locidispid => 2, :created_at => batch_created_at - 1.hour) }
let (:drummer3) { FactoryGirl.create(:user, :last_jam_locidispid => 3, :created_at => batch_created_at - 1.hour) }
let (:guitarist3) { FactoryGirl.create(:user, :last_jam_locidispid => 3, :created_at => batch_created_at - 1.hour) }
let (:bassist3) { FactoryGirl.create(:user, :last_jam_locidispid => 3, :created_at => batch_created_at - 1.hour) }
let (:vocalist3) { FactoryGirl.create(:user, :last_jam_locidispid => 3, :created_at => batch_created_at - 1.hour) }
before(:each) do
drummer; guitarist; bassist; vocalist; loser
drummer3; guitarist3; bassist3; vocalist3
receiver1; receiver2
new_musician_batch.reset!
EmailBatchNewMusician.delete_all
JamRuby::Score.delete_all
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
it 'sets up data properly' do
results = new_musician_batch.fetch_recipients
expect(results.count).to eq(1)
ebatch0 = FactoryGirl.create(:email_batch_new_musician,
:created_at => batch_created_at)
results = ebatch0.fetch_recipients
num = User.where(:last_jam_locidispid => 1)
.where("created_at < ?",ebatch0.time_since_last_batch(EmailBatchNewMusician::SINCE_DAYS))
.count
expect(num).to be > 0
expect(results.count).to eq(num)
user, new_musicians = results[0]
expect(user.id).to eq(receiver1.id)
expect(new_musicians.count).to eq(4)
num = User.where(:last_jam_locidispid => 1)
.where("created_at >= ?",ebatch0.time_since_last_batch(EmailBatchNewMusician::SINCE_DAYS))
.count
expect(num).to be > 0
expect(new_musicians.count).to eq(num)
end
it 'sends email' do
new_musician_batch.deliver_batch
expect(UserMailer.deliveries.length).to eq(1)
end
ebatch0 = FactoryGirl.create(:email_batch_new_musician,
:created_at => batch_created_at)
ebatch0.deliver_batch
num = User.where(:last_jam_locidispid => 1)
.where("created_at < ?",ebatch0.time_since_last_batch(EmailBatchNewMusician::SINCE_DAYS))
.count
expect(num).to be > 0
expect(UserMailer.deliveries.length).to eq(num)
it 'sends email periodically' do
EmailBatchNewMusician.send_new_musician_batch
expect(UserMailer.deliveries.length).to eq(1)
ebatch1 = FactoryGirl.create(:email_batch_new_musician,
:created_at => ebatch0.created_at + 1.day)
# new musicians
FactoryGirl.create(:user,
:last_jam_locidispid => 5,
:created_at => ebatch0.created_at + 1.minute)
FactoryGirl.create(:user,
:last_jam_locidispid => 5,
:created_at => ebatch1.created_at - 1.minute)
JamRuby::Score.createx(1, 'a', 1, 5, 'a', 5, 10)
# decoy
JamRuby::Score.createx(1, 'a', 1, 3, 'a', 3, Score::MAX_YELLOW_LATENCY + 1)
FactoryGirl.create(:user,
:last_jam_locidispid => 2,
:created_at => ebatch1.created_at - 1.minute)
FactoryGirl.create(:user,
:last_jam_locidispid => 3,
:created_at => ebatch1.created_at - 1.minute)
# all 1's receive emails
num = User.where(:last_jam_locidispid => 1)
.where("created_at <= ?", ebatch1.time_since_last_batch(EmailBatchNewMusician::SINCE_DAYS))
.count
expect(num).to be > 0
results = ebatch1.fetch_recipients
expect(results.count).to eq(num)
# all 5's are new
newm = User.where(:last_jam_locidispid => 5)
.where("created_at > ?", ebatch1.time_since_last_batch(EmailBatchNewMusician::SINCE_DAYS))
.where("created_at <= ?", ebatch1.created_at)
.count
expect(newm).to be > 0
expect(results[0][1].count).to eq(newm)
UserMailer.deliveries.clear
ebatch1.deliver_batch
expect(UserMailer.deliveries.length).to eq(num)
# EmailBatchNewMusician.send_new_musician_batch
# expect(UserMailer.deliveries.length).to eq(cc)
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)
@ -83,6 +144,7 @@ describe EmailBatchNewMusician do
end
it 'handles large batches' do
pending
dd = receiver_date + 1.day
20.downto(1) do |nn|
FactoryGirl.create(:user, :last_jam_locidispid => 5, :last_jam_addr => 5, :created_at => dd)
@ -97,7 +159,7 @@ describe EmailBatchNewMusician do
FactoryGirl.create(:user, :last_jam_locidispid => 7, :last_jam_addr => 7)
receivers = []
new_musician_batch.fetch_recipients do |uu, newm|
new_musician_batch.fetch_recipients(3) do |uu, newm|
receivers << uu
expect(newm.count).to eq(10)
end