次のコードがあり、私が合格できないとテストしました。コードは、24時間以上前に完了したすべての予約を自動ロックする必要があります。Rails Rspecテストがアプリケーションで動作するときに失敗します
私がテストに入れて、Booking.auto_lock_guestsの最初の行を実行すると、何も起こりません。私はbooking_7と入力して、Booking.auto_lock_guestsと入力した後、それはtrueにロックされます。これは、予約が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
私は 'Booking.auto_lock_guests'を呼び出すときに両方の予約が作成されていないことを確信しているので、これがどのように機能するのか疑問に思っています。 – Magnuss