I'm having trouble working out how to test a method that contains a loop. I'm new to rspec so not sure what the best way is to tackle this.
class Company < ActiveRecord::Base def self.sync_with_basecamp companies = basecamp_fetch("companies") companies.each do |c| company = self.find_or_initialize_by_name_and_postcode(c.name, c.zip) company.county = c.state company.city = c.city company.save end end end I started by checking that the number of companies in my mock companies array was saved: it "should write all records from array to the database" do lambda { Company.sync_with_basecamp }.should change(Company, :count).by(37) end But I'm having trouble figuring out how to check individual records. I can pull the first record from the mock array: it "should populate name" do @company.first.name.should eql("The Media Collective") end But I can't check that this has been applied to the method because rspec doesn't know about the save loop. it "should populate name" do @company.name.should eql("The Media Collective") end Would appreciate some advice on how to tackle this please from someone more familiar with rspec than me. _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users