On Tuesday, 11 February 2014 21:43:40 UTC+1, 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? >
Vell, One way to be able to find out what is happening is: a) tag your scenario with @pause, that will pause after each step. b) Open a terminal and have a look at the test log file: tail -f log/test.log That way you can see what is happening in the test database at each step, and when records are created, and/or the database is cleared. P.S. It would also be a better idea to post your question in the cucumber email list if you still have problems https://groups.google.com/forum/#!forum/cukes -- 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/c52be53c-b79a-4309-a3ec-0b8337f6fcfe%40googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.