Megan,

A factory instance is only and ever one object (though if there is an
association, you can use an after(:create) to build out multiple *associated
objects*, yes).

If you just need multiple objects like it sounds like you do, that has to
happen outside the context of your factory girl *definitions*, such as
using a method to go through and build them or what not. In which case the
factory definition is pretty simple, because your model/field is simple.

Sequences within factory girl can assist in ensuring different instantiated
factories have different values in a sequential manner, but that still does
not create multiple objects for you (or ensure that any given number of
objects you create necessarily starts with a certain value - sequences are
incremented any time the factory is created in your test runtime!).

So I would do something like this:

FactoryGirl.define do
  factory :calendar do
    date { 1.day.ago } # Or whatever you want the "default" for this to be
if otherwise unspecified
  end
end

Then to get the objects:

(1..10).map {|n| FactoryGirl.build(:calendar, date: n.days.ago) }.reverse

This of course can be wrapped in a helper method for your tests if you're
using it enough.




On Mon, Aug 18, 2014 at 11:22 AM, Megan Byrne <[email protected]>
wrote:

> Hello all,
>
> I'm relatively new to testing and this has been tripping me up for a bit.
>
> I'm working in a code base that contains a Calendar Model (only contains a
> date field) which is used to help find other data from models with an SQL
> join for relevant date-ranges.
>
> I need to create a FactoryGirl factory which will be about 10 days worth
> of sequential dates (10 days back from whatever today's date is) so that I
> can use that to help test a method on another model which needs to join
> with the Calendar dates in order to find what it needs.
>
> So, the problem is that I cannot seem to figure out how to create a
> factory that loops through a set range of things.  Using sequence doesn't
> seem to work with a range and the blocks I've been using are just plain
> wrong.  Please help.
>
> I've been doing things like:
>
>
> FactoryGirl.define
>   factory :calander do
>     factory :dates do |d|
>       10.times do
>         d = 10
>         date {d.days.ago}
>         d -= 1
>       end
>     end
>   end
> end
>
> but this is clearly wrong...I guess I'm very confused about FactoryGirl in
> general
>
> Any help is greatly appreciated,
>
> Megan
>
> --
> --
> SD Ruby mailing list
> [email protected]
> http://groups.google.com/group/sdruby
> ---
> You received this message because you are subscribed to the Google Groups
> "SD Ruby" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
SD Ruby mailing list
[email protected]
http://groups.google.com/group/sdruby
--- 
You received this message because you are subscribed to the Google Groups "SD 
Ruby" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to