From 0946f6d4bb266f0087d8e4a96528146d1c9ed8fe Mon Sep 17 00:00:00 2001 From: Nate Smith Date: Thu, 27 Jan 2011 16:25:31 -0500 Subject: [PATCH] Sequences without blocks return sequential numbers --- lib/factory_girl/sequence.rb | 2 +- spec/acceptance/sequence_spec.rb | 14 ++++++++++- spec/factory_girl/sequence_spec.rb | 40 ++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/lib/factory_girl/sequence.rb b/lib/factory_girl/sequence.rb index bd12fdb8a..da177e5a4 100644 --- a/lib/factory_girl/sequence.rb +++ b/lib/factory_girl/sequence.rb @@ -14,7 +14,7 @@ def initialize(value = 1, &proc) #:nodoc: # Returns the next value for this sequence def next - @proc.call(@value) + @proc ? @proc.call(@value) : @value ensure @value = @value.next end diff --git a/spec/acceptance/sequence_spec.rb b/spec/acceptance/sequence_spec.rb index e3196ff87..d21274847 100644 --- a/spec/acceptance/sequence_spec.rb +++ b/spec/acceptance/sequence_spec.rb @@ -16,5 +16,17 @@ another_value.should =~ /^somebody\d+@example\.com$/ first_value.should_not == another_value end -end + + it "generates sequential numbers if no block is given" do + FactoryGirl.define do + sequence :order + end + + first_value = Factory.next(:order) + another_value = Factory.next(:order) + first_value.should == 1 + another_value.should == 2 + first_value.should_not == another_value + end +end diff --git a/spec/factory_girl/sequence_spec.rb b/spec/factory_girl/sequence_spec.rb index 892b7f145..6486c8aa7 100644 --- a/spec/factory_girl/sequence_spec.rb +++ b/spec/factory_girl/sequence_spec.rb @@ -40,4 +40,44 @@ end end end + + describe "a basic sequence without a block" do + before do + @sequence = FactoryGirl::Sequence.new + end + + it "should start with a value of 1" do + @sequence.next.should == 1 + end + + describe "after being called" do + before do + @sequence.next + end + + it "should use the next value" do + @sequence.next.should == 2 + end + end + end + + describe "a custom sequence without a block" do + before do + @sequence = FactoryGirl::Sequence.new("A") + end + + it "should start with a value of A" do + @sequence.next.should == "A" + end + + describe "after being called" do + before do + @sequence.next + end + + it "should use the next value" do + @sequence.next.should == "B" + end + end + end end