для моего приложения Rails 4, я хочу проверить, что удаление объекта курса удаляет связанные объекты главы.как проверить каскадное удаление с помощью Rspec
Там, на моей модели курса я определил assiociation следующим образом:
has_many :chapters, dependent: :delete_all
Это прекрасно работает. Однако я не могу понять, как написать тест для этого каскадного удаления.
Мой Rspec тест выглядит следующим образом:
before do
@course = Fabricate(:course)
end
it "deletes associated chapters" do
set_current_admin
chapter1 = Fabricate(:chapter, course_id: @course_id)
delete :destroy, id: @course.id
expect(Chapter.count).to eq(0)
end
Я бы ожидать Chapter.all быть 0, но когда я запускаю этот тест, я получаю этот результат:
1) Admin::CoursesController DELETE #destroy deletes associated chapters
Failure/Error: expect(Chapter.all).to eq(0)
expected: 0
got: #<ActiveRecord::Relation [#<Chapter id: 709, title: "omnis corrupti eos et aperiam", description: "Alias sunt tempore aut deserunt. Optio ea assumenda...", course_id: nil, created_at: "2013-11-01 07:10:28", updated_at: "2013-11-01 07:10:28", tagline: "Omnis nemo praesentium corporis. Doloremque dolorib...", badge_image: nil>]>
(compared using ==)
# ./spec/controllers/admin/courses_controller_spec.rb:181:in `block (3 levels) in <top (required)>'
Как я могу сделать этот тест проходит?
Спасибо за вашу помощь,
Энтони
Я добавлю некоторые объяснения в ответ – gotva
спасибо за помощь gotva. Теперь я использую Chapter.count, но мой тест по-прежнему терпит неудачу, заявив, что он получил 0, но проверен 1 – Toontje
вы могли бы обновить свой код в вопросе – gotva