Thanks for your reply Colin. In theory, there should be some way I can test for the presence or absence of errors on something like: @report.notifiers.errors.on (something?)
The thing is, since the post creates a new record for the associated model, I'm not quite sure how to "access" that. On May 21, 1:21 am, Colin Law <[email protected]> wrote: > 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 -~----------~----~----~----~------~----~------~--~---

