Тестирование в Rails всегда было чем-то вроде загадки, которую я стараюсь избегать, если это возможно, но я собираю производственное приложение, за которое люди будут платить, поэтому мне действительно нужно протестировать. Эта проблема сводит меня с ума, потому что тест не пройден, но когда я выполняю те же команды в консоли (в режиме тестирования и разработки), он работает нормально.
user_test.rb
test "should update holidays booked after create"
user = users(:robin)
assert_equal user.holidays_booked_this_year, 4 # this passes
absence = user.absences.create(:from => "2011-12-02", :to => "2011-12-03", :category_id => 1, :employee_notes => "Secret") # this works
assert_equal user.holidays_booked_this_year, 5 # fails
end
absence.rb
after_create :update_holidays_booked
def update_holidays_booked
user = self.user
user.holidays_booked_this_year += self.days_used # the days used attribute is calculated using a before_create callback on the absence
user.save
end
Я только думаю, что это связано с обновлением модели User посредством обратного вызова для модели Absence, но, как я уже сказал, это работает в консоли.
Любой совет будет оценен.
Спасибо
Robin