[rspec-users] Specifying certain tables NOT to be cleared each example?

Andrew Selder aselder at mac.com
Wed May 21 22:49:57 EDT 2008

Is it possible to specify that certain tables not be cleared on each  

I've inherited a project where a good amount of enumerated data is  
stored in the database (US States, statuses, about 15-20 tables worth.  
Over all, it's a reasonable decision that leads to solid production  
code (acts_as_enumerated is good). This data is read-only and  
relatively static; any changes to these tables are done via migrations.

The problem comes when I'm writing my tests. Obviously all these  
tables get wiped with each example. Yes, I could specify these as  
fixtures, but I really don't want to have to specify 15-20 fixtures on  
every example. Yes, I could mock/stub all the values, except that I  
use many of these values at class definition time, which means that  
errors are thrown before I can even mock/stub.

For instance, I have a statement like this.

  named_scope :open, :conditions => ["lead_status_id IN (?)", %w{New  
Incubating Client UAG}.collect{|x| LeadStatus[x].id}]

Which loads the named_scope using the string version of the  
enumeration for clarity's sake. It works great, except for testing.

Does anybody see anyway around this other than creating a fixture file  
for each of these tables and loading all the fixtures on each describe  
block. Not only does this make for ugly code, but I'm sure it takes a  
good chunk of time to setup and teardown each of the tables each  

It would be wonderful if there was some option to specify tables that  
behave like this, that should be loaded at the beginning of the test  
run, and (optionally) trashed at the end of the run. Or even better,  
specify that the test script shouldn't touch (build or teardown) these  
tables at all, and let their migrated state remain.



More information about the rspec-users mailing list