VRFS-1664 enhancing tests
This commit is contained in:
parent
c66da4d945
commit
c0287cc224
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue