[rspec-users] Dealing with dependent data

Scott Taylor mailing_lists at railsnewbie.com
Wed Jun 25 22:07:39 EDT 2008


On Jun 25, 2008, at 9:38 PM, Mikel Lindsaar wrote:

> On Thu, Jun 26, 2008 at 4:37 AM, Christopher Bailey
> <chris at cobaltedge.com> wrote:
>> If there's already been a thread on this, let me know (and if you  
>> can,
>> point me to it)...
>
> I asked something similar about a week or so ago, you can see it here:
>
> http://www.ruby-forum.com/topic/156392
>
> It is on 'reusing story specs'
>
> But I have done some more work since then...
>
>> In building my stories, I often need to setup a bunch of data where
>> you have multiple levels of models that depend on each other.  For
>
>> Scenario: view doctors
>> Given: existing locations
>> And: existing organizations
>> And: existing doctors
>
> You can use plain text stories and use multiple steps_for to get a
> similar effect.
>
> But in this case, on that set of stories, it would make sense to
> reduce that Given block down to:
>
> # viewing doctors story file...
> Scenario: view doctors
>  Given: existing doctors in organizations that have a location
>  When...
>
> And then I would use some helpers or fixture loading to handle your
> data loading...
>
> # spec helper file...
> def build_valid_doctor(params)
>  location = Location.create(:blah...)
>  org = Organization.create(:location => location)
>  Doctor.create({:organization => org}.merge(params))
> end
>
> # steps file....
> steps_for :viewing_doctors do
>
>  Given "existing doctors in organizations that have a location"
>    build_valid_doctor(:surname => 'Hyde')
>    build_valid_doctor(:surname => 'Jeckle')
>  end
>
> end
>
>
> Of course you can make those factory methods do all sorts of things...


It really seems you are asking two questions: One about reusability,  
and one about setting up data.

I can't add anything to the first, but factories are definitely the  
way to go regarding the second issue (setting up the data).  Check out  
this post by Dan Manges (and look at the fixture options at the end of  
the post):

http://www.dcmanges.com/blog/38

Scott

>
>
> Hope that helps
>
> Mikel
>
> --
> http://lindsaar.net/
> Rails, RSpec, Puppet andLife blog....
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users



More information about the rspec-users mailing list