Testowanie usuwania przy zależności have_many

Witam wszystkich,
mam aplikację, w której jest sobie ticket, który ma_wiele wiadomości. Usuwając ticket, naturalnie powinny się usunąć wszystkie jego wiadomości. Niestety tego nie robiły. Problem prosty do naprawienia, ale za nic nie potrafię napisać do tego testu… Jak sprawdzić, czy usunięte zostały obiekty, do których odwoływałem się przez usunięty obiekt?
Pozdrawiam i z góry dzięki za pomoc,
Yax

ja bym napisał to w ten sposób (używając shouldy):

should_have_many :messages, :dependent => :destroy context 'when destroying ticket' do setup do @ticket = Ticket.last @ticket.destroy end should_change 'Ticket.count', :by => -1 should_change 'Message.count', :by => -1 end
zakładając ofc, że dany ticket miał przypisaną jedną wiadomość.

Na przykład tak:

[code=“Ruby”]# app/models/ticket.rb
class Ticket < ActiveRecord::Base
has_many :messages, :dependend => :destroy
end

spec/models/ticket_spec.rb

describe Ticket do
it “should delete associated messages after deleting ticket” do
@ticket = Factory(:ticket)
@message = Factory(:message, :ticket => @ticket)
@ticket.destroy
lambda do
@message.reload
end.should raise(ActiveRecord::RecordNotFound)
end
end[/code]

Dziękuję za odpowiedzi :slight_smile: Ja w końcu zrobiłem to tak:

context "on DELETE to #destroy" do setup do @all_messages_qty = Message.count @ticket_messages_qty = Ticket.find(:first).messages.count delete :destroy, :id => Ticket.find(:first).to_param end should_change("the number of tickets", :by => -1) { Ticket.count } should_redirect_to("index") { tickets_url } should_set_the_flash_to /destroyed/ should "destroy its messages" do assert_equal @all_messages_qty-@ticket_messages_qty, Message.count end end