Hi. I am a new Rails developer. So far my experiences with the framework has been very positive, and I'm excited to become a part of Rails dev community.
I've started working on my first Rails application, and ran into something that confused me regarding how db migrations are applied to test databases. What I am trying to do is create a static lookup table for certain parameters in my database. To do this, I created two migrations:
create_car_table.rb populate_car_table.rb
where the populate migration simply adds an array of values to the rows in the database. These migrations work and the database is populated as I expect.
So my next development activity was to write a simple unit test for this lookup table - one that verified things such as the number of cars in the table, the number of cars of a certain color, etc. I went and ran:
rake test:units
And my tests fail. When I examine the test database, I see the cars table created, but not populated (i.e., it appears that the create migration was executed, but not the populate).
Setting RAILS_ENV to test and running the migration populates the test database, but doesn't solve my test issue, as when I run rake test:units, it appears to overwrite what I've done. I ran:
rake test:units --trace
And it I see something like this:
** Invoke test:units (first_time) ** Invoke db:test:prepare (first_time) ** Invoke environment (first_time) ** Execute environment ** Invoke db:abort_if_pending_migrations (first_time) ** Invoke environment ** Execute db:abort_if_pending_migrations ** Execute db:test:prepare ** Invoke db:test:clone (first_time) ** Invoke db:schema:dump (first_time) ** Invoke environment ** Execute db:schema:dump ** Invoke db:test:purge (first_time) ** Invoke environment ** Execute db:test:purge ** Execute db:test:clone ** Invoke db:schema:load (first_time) ** Invoke environment ** Execute db:schema:load ** Execute test:units
I assume these commands are undoing the migrations I ran on the test database (based on the first_time indicators as well as the clone/ purge).
So my questions are - what is the right recipe for creating and testing lookup tables in Rails? Should I be using fixtures for this, or is there something simple I am missing with how I should run and test my migrations using the test database?
Thanks for any help.