I'm not sure I understand. This is all one scenario so why would database
cleaner  delete my record in the middle of my scenario? or am I missing
something?

I create my record at the start of the scenario then run the method that
should check for this record but the record but it not there after that
method checks for the record. This should be in the same transaction right?
Even if I place debugger anywhere in the step definitions I should still
have one record right?


On Wed, Feb 12, 2014 at 8:43 AM, jsnark <s...@monmouth.com> wrote:

>
>
> On Tuesday, February 11, 2014 3:43:40 PM UTC-5, Vell wrote:
>>
>> Hello all,
>>
>> I am trying to understand when I try to run a test in cucumber what I am
>> missing that it is failing. I am using FactoryGirl to create my records and
>> using cucumber to test my logic however I know that I am doing something
>> wrong in my testing I just can't seem to figure out what. Here is what I
>> have:
>>
>> Feature:
>>
>> Feature: All features related to staff info
>>   Scenario: notification for empty shirt size
>>     Given there is at least 1 staff info record
>>     When the shirt size field is empty
>>     And the shirt size check is run
>>     Then the system should send an email notification
>>
>> Steps:
>>
>> Given(/^there is at least (\d+) staff info record$/) do |arg1|
>>   assert_difference('StaffInfo.count', 1) do
>>     @staff_info = FactoryGirl.create :staff_info
>>   end
>> end
>>
>> When(/^the shirt size field is empty$/) do
>>   assert @staff_info.update_attribute(:shirt_size, nil)
>> end
>>
>> When(/^the shirt size check is run$/) do
>>   StaffInfo.check_empty_shirt_fields
>> end
>>
>> Then(/^the system should send an email notification$/) do
>>   pending # express the regexp above with the code you wish you had
>> end
>>
>> Model:
>>
>> class StaffInfo < ActiveRecord::Base
>>   belongs_to :person
>>   scope :empty_shirt_fields, -> { where('shirt_size in (?)', [nil, '']) }
>>
>>   def self.check_empty_shirt_fields
>>     staff_with_missing_shirt_sizes = StaffInfo.empty_shirt_fields
>>     debugger
>>     send_empty_shirt_size_notification staff_with_missing_shirt_sizes if
>> staff_with_missing_shirt_sizes.size >  0
>>   end
>>
>>   def send_empty_shirt_size_notification(staff_records)
>>     Mailer.missing_shirt_size(staff_records).deliver
>>   end
>> end
>>
>> What is happening is, when I hit the 3rd test I did a check to see if the
>> record was present (StaffInfo.count) and it was. But after running
>> StaffInfo.check_empty_shirt_fields, I did a check for the record and it
>> was gone. I am not understanding how my record could have disappeared when
>> I all my method was doing was checking for any records with a missing field.
>>
>> Anyone have any ideas?
>>
>
> The default behavior of cucumber is to run each scenario in a transaction
> and then do a rollback when the scenario completes.  The behavior is
> specified by the DatabaseCleaner.strategy in the env.rb file/
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/rubyonrails-talk/U7nmztmWmzA/unsubscribe
> .
> To unsubscribe from this group and all its topics, send an email to
> rubyonrails-talk+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/f1a540c9-e0db-41bb-8430-41863b7eae72%40googlegroups.com
> .
>
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CABO-7pVQDu-Y4E631G87VwkLYmSS1m-EOtALttK8xR3zaH5Zmg%40mail.gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to