【发布时间】:2017-10-10 19:32:13
【问题描述】:
我有以下代码和测试,我似乎无法通过。该代码应自动锁定所有已在 24 小时前完成的预订。
当我在测试中插入并运行 Booking.auto_lock_guests 的第一行时,没有任何反应。当我键入 booking_7 并在键入 Booking.auto_lock_guests 之后,它会更改为 true。这是否与 let 的设置方式有关,它没有出现在 Booking.all 中?还是我写测试的方式?
任何帮助将不胜感激。
def self.auto_lock_guests
bookings = Booking.where(guests_completed: true, locked: false)
bookings.each do |booking|
next unless booking.guests_completed_at <= 1.day.ago
booking.locked = true
booking.save
end
end
context 'auto_lock_guests' do
let(:booking_6) { FactoryGirl.create(:booking, date: Date.today - 5.day, guests_completed: true, guests_completed_at: DateTime.now, locked: false )}
let(:booking_7) { FactoryGirl.create(:booking, date: Date.today - 5.day, guests_completed: true, guests_completed_at: DateTime.now - 3.day, locked: false )}
before do
Booking.auto_lock_guests
end
it 'should only lock bookings with a guests_completed date older than a day ago' do
expect(booking_7.locked).to eq(true)
expect(booking_6.locked).to eq(false)
end
end
【问题讨论】:
标签: ruby-on-rails ruby rspec