Re: [rspec-users] Testing Rails Associations

2007-07-06 Thread David Chelimsky
On 7/3/07, Daniel N [EMAIL PROTECTED] wrote:
 Hi,

  I'm very new to rspec, so if this is not the right forum please let me
 know.

  I'm starting to spec my models first in an existing rails app, porting from
 a mix of Test::Unit, and simply_bdd amongst others.

  I'm at the point where I want to test that certain associations are
 present.  What I'm not sure of is should I test the association or the
 method and return object.

  That is, if I wanted to test a has_many should I:

  Confirm the methods exist, and that the return an array etc

  OR

  Check that the model has the named has_many association through it's
 reflections.

  On one hand the second one looks like it will be a bit more robust, since
 if there is a has_many relationship, then all the associated methods may be
 used througout the app.  This would put testing in the one place.

  On the other hand, this would be really testing the implementation of the
 model rather than it's behaviour.   The behaviour is to call
 @article.comments and have an array of comments returned.

  Any thoughts?

I think the jury is still out on this one. Both approaches present
problems, and no better approaches have been proposed. I'd say try it
both ways and report back on experiences.

David

  Cheers
  Daniel


 ___
 rspec-users mailing list
 rspec-users@rubyforge.org
 http://rubyforge.org/mailman/listinfo/rspec-users

___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users


Re: [rspec-users] Testing Rails Associations

2007-07-06 Thread Daniel N
On 7/6/07, Daniel N [EMAIL PROTECTED] wrote:



 On 7/6/07, David Chelimsky [EMAIL PROTECTED] wrote:
  On 7/3/07, Daniel N [EMAIL PROTECTED] wrote:
   Hi,
  
I'm very new to rspec, so if this is not the right forum please let me
   know.
  
I'm starting to spec my models first in an existing rails app, porting
 from
   a mix of Test::Unit, and simply_bdd amongst others.
  
I'm at the point where I want to test that certain associations are
   present.  What I'm not sure of is should I test the association or the
   method and return object.
  
That is, if I wanted to test a has_many should I:
  
Confirm the methods exist, and that the return an array etc
  
OR
  
Check that the model has the named has_many association through it's
   reflections.
  
On one hand the second one looks like it will be a bit more robust,
 since
   if there is a has_many relationship, then all the associated methods may
 be
   used througout the app.  This would put testing in the one place.
  
On the other hand, this would be really testing the implementation of
 the
   model rather than it's behaviour.   The behaviour is to call
   @article.comments and have an array of comments returned.
  
Any thoughts?
 
  I think the jury is still out on this one. Both approaches present
  problems, and no better approaches have been proposed. I'd say try it
  both ways and report back on experiences.
 
  David
 
Cheers
Daniel
  

 I went with the second way, testing the association through reflections.
 The reason I did this is that by testing that there is a has_* or belongs_to
 you are really testing the availablity of all the assoicated methods.  Which
 you are then free to use throughout your app.

 If you go the other way, you are not in fact testing if a model has_many
 since this implies that all has_many methods will be included, not just
 returning and setting an Array.

 If your interested I've put up the module that I am using to provide these
 and a couple of other methods on pastie.  This is my first go so please
 don't expect anything spectacular.

 http://pastie.caboo.se/76462

 Cheers
 Daniel


Wow I should really have checked that more thoroughly.  I found many
mistakes in that.

Here is one I've fixed up.

http://pastie.caboo.se/76470

Daniel
___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users