You should be able to do an assert_select looking for whatever the <%=
errors_for :maintenance_report %> generates for the error you are
expecting.  Or have I missed a subtlety of your question?

Colin

2009/5/21 Phoenix Rising <[email protected]>

>
> The title of this post may be somewhat misleading; I am indeed UNIT
> testing this, and it works fine, however I'm also functional testing a
> POST to an action that is responsible for creating a new ActiveRecord
> object that's associated with the "parent" via has_many :through.
>
> class Report < ActiveRecord::Base
>  # ...
>  has_many :report_notifiers
>  has_many :notifiers, :through => :report_notifiers
>  # ...
> end
>
> class ReportNotifier < ActiveRecord::Base
>  # ...
>  belongs_to :report
>  # ...
> end
>
> So, creating a new report with a new notifier would be simple:
> @r = Report.new
> @r.notifiers << Notifier.create(:label => "something", :email =>
> "[email protected]")
>
> But what happens when a user submits invalid e-mail address?  Well, of
> course, the validation fails.  But how do I go about testing for the
> presence of that validation failure message in my functional test?
>
> Here's my existing functional test:
> --------------------
>  def test_edit_with_invalid_notifiers
>    m = Factory(:maintenance_report) # I dig factory_girl, great
> plugin
>
>    post :edit, {:m => m, :id => m.id, :notifiers => [1, 2, 3, '', 0,
> 'asdfasf', "\n\n;';'''';UPDATE notifiers SET label=\"hacked\""],
>      :new_notifiers => "not a valid email!asdfasdfasf afd asdfasf 2
> w...@a asdf...\n\n\n\[email protected]"}
>
>    # ...now what?
>
>  end
> ---------------------
>
> As you can see, my test gives the controller action invalid data,
> which will trigger an error when the validation is attempted.  But,
> given that the Notifier class, which contains the validation,
> belongs_to the Report class, which is what I'm creating a new one of,
> how do I test to see if we get any errors?
>
> i.e. in a template I'd just have:
> <%= errors_for :maintenance_report %>
>
> ...which would theoretically contain a bullet point saying something
> about "invalid e-mail address".  But how do I test that?
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to