Running Ruby/Rails Specs with database inserts from non-default spec sub-directory

Hi everyone!

I have a question on how to setup my tests a bit differently than the
defaults.

By default, Rails with RSpec installed provides you with directories
such as spec/models, spec/controllers, etc.

When i use before(:each), I notice that Rails properly cleans out the
database in these specs automatically.

However, I created a new sub-directory called spec/queries. My
intention was to put all of my query-related tests here so that the
database setup code didn't run with the model validation and business
logic tests (for speed and organization reasons). I will have a lot of
complex queries that will need to be tested against a mini-database...
so this seems like the right thing to do (or is there a better
solution?)

When I put these tests in spec/queries folder and run the tests
multiple times, Rails complains that data is not unique and so on...
so I am guessing that the data is not getting cleaned out now? Yes, I
am using factory girl with sequences, so this is probably a database
cleaning problem. I didn't have it before when these same tests were
in 'specs/models'.

1. Do I need to manually clean out the data since I moved the specs
into it's own spec/squeries subdirectory?

2. Is there any way to include spec/queries to the list of directories
that get auto-cleaned, much like spec/models does?

Thanks

Hi everyone!

I have a question on how to setup my tests a bit differently than the

defaults.

By default, Rails with RSpec installed provides you with directories

such as spec/models, spec/controllers, etc.

When i use before(:each), I notice that Rails properly cleans out the

database in these specs automatically.

However, I created a new sub-directory called spec/queries. My

intention was to put all of my query-related tests here so that the

database setup code didn’t run with the model validation and business

logic tests (for speed and organization reasons). I will have a lot of

complex queries that will need to be tested against a mini-database…

so this seems like the right thing to do (or is there a better

solution?)

When I put these tests in spec/queries folder and run the tests

multiple times, Rails complains that data is not unique and so on…

so I am guessing that the data is not getting cleaned out now? Yes, I

am using factory girl with sequences, so this is probably a database

cleaning problem. I didn’t have it before when these same tests were

in ‘specs/models’.

  1. Do I need to manually clean out the data since I moved the specs

into it’s own spec/squeries subdirectory?

  1. Is there any way to include spec/queries to the list of directories

that get auto-cleaned, much like spec/models does?

There is a gem called database_cleaner which might help in your case to run before your test/suite.

There is a gem called database_cleaner which might help in your case to run
before your test/suite.

Well, I'm looking into that now... and it mostly works (But not
quite... it seems like there are some records hanging around still).

Why do I not need the database cleaner for the model tests... but I do
for this new spec/queries directory? Can I simply tell rails to treat
this directory the same as it treats spec/models? The tests work in
that folder.