I'm assuming RSpec 1.1.3+, but here's how I might write this example:

describe NotesController do
  it "renders 'notes/new' when an empty note is submitted" do
    Note.stub!(:new).and_return(stub("note"))
    organization = stub_model(Organization, :notes => stub("notes",
:<< => false))
    assigns[:organization] = organization

    post :create, "organization_id" => organization.to_param,
"new_note" => { "body" => "" }

    response.should render_template("notes/new")
  end
end

I'm favoring the use of stub_model and stubs instead of mock_model
(and mocks) because we're not setting any expectations on the note or
the organization. Rather, we're just setting them up to deliver values
that are either simply required (as in Note.new returning something
non-nil) or what we want (the addition of the note to the organization
to fail).

I've also eliminated the idea of having existing notes on the
organization. It's not central to what's being spec'd, so it's out.

Furthermore, I made the submitted note's body empty because that's
what was in the original description of the it block. That those two
didn't match bothered me.

Finally, I simplified the description of the it block to what I
thought the essence of your example was; I hope that I'm at least
close. :-)

Please let the list know if this helped or if you already revisited
the problem and solved it. I think we're interested in what ends up
working for you.

Regards,
Craig
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to