views:

40

answers:

0

Hi there! I'm creating an application in RoR and I'm implementing unit testing in all my models.

When I run every test on his own (by running ruby test/unit/some_test.rb) all tests are successful.

But when I run all tests together (by running rake test:units) some tables from both databases (development e test) are deleted.

I'm using raw SQL (mysql) do create tables because I need composite primary keys and physical constraints so I figured it would be the best. Maybe this be the cause?

All my tests are in this form:

require File.dirname(FILE) + '/../test_helper' require File.dirname(FILE) + '/../../app/models/order'

class OrderTestCase < Test::Unit::TestCase

def setup

@order = Order.new(
    :user_id => 1,
    :total => 10.23,
    :date => Date.today,
    :status => 'processing',
    :date_concluded => Date.today,
    :user_address_user_id => 3,
    :user_address_address_id => 5,
    :creation_date => Date.today,
    :update_date => Date.today
  )

end

################ Happy Path

def test_happy_path

assert @order.valid?, @order.errors.full_messages

end ...

The errors I get when running the tests are something like this:

3) Error: test_empty_is_primary(AddressTestCase): ActiveRecord::StatementInvalid: Mysql::Error: Table 'shopshop_enterprise_test.addresses' doesn't exist: SHOW FIELDS FROM addresses /test/unit/address_test.rb:9:in new' /test/unit/address_test.rb:9:insetup'

Any guesses? Thanks!

PS: When using postgres as the database engine, everything works fine with rake test:units! (of course, with the correct changes so the sql statements can work with postgres)