I can't directly answer why it's not tearing down your test database, but I've had a lot of luck using https://github.com/bmabey/database_cleaner to ensure a clean slate between each test - and it's quick about it! It starts a transaction at the start of a test, and rolls back when the test is over
-Ian On May 9, 11:43 pm, Chris Corbyn <[email protected]> wrote: > Hi All, > > I'm not sure what I'm missing, but I had a project that started with > ActiveRecord, which I then subsequently swapped to use DataMapper, by adding > the gem and only requiring selected parts of rails into my application.rb. > > I have these included in application.rb: > > require "action_controller/railtie" > require "action_mailer/railtie" > require "rails/test_unit/railtie" > > When I run my unit tests, any data inserted into the database during the test > is left there, dirtying the state for the next test. I can't see what I've > missed, comparing my project with a blank one created using: > > rails new datamapper_project -mhttp://datamapper.org/templates/rails.rb > > Can anyone shed any light on this? I had disabled fixtures (because I don't > use them), but this should affect it. Oddly, when I put "fixtures :all" back > in the test_helper.rb, the test runner crashes with: > > /home/ccorbyn/projects/flippa-rails/test/test_helper.rb:6:in > `<class:TestCase>': undefined method `fixtures' for > ActiveSupport::TestCase:Class (NoMethodError) > from /home/ccorbyn/projects/flippa-rails/test/test_helper.rb:5:in > `<top (required)>' > from test/unit/user_test.rb:1:in `require' > from test/unit/user_test.rb:1:in `<top (required)>' > from > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake/rake_test_load > er.rb:5:in `load' > from > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake/rake_test_load > er.rb:5:in `block in <main>' > from > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake/rake_test_load > er.rb:5:in `each' > from > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake/rake_test_load > er.rb:5:in `<main>' > > Surely projects without AR still have their test databases torn down after > each test, right? > > class ActiveSupport::TestCase > fixtures :all > end > > Here's a little test showing the issue: > > class UserTest < ActiveSupport::TestCase > test "user should be created" do > user = User.new > user.username = "testing" > user.full_name = "Test User" > assert user.save, "User should be saved" > end > > test "no users should exist by default" do > assert_equal 0, User.count, "No users should exist by default" > end > end > > Which fails with: > > 1) Failure: > test_no_users_should_exist_by_default(UserTest) [test/unit/user_test.rb:12]: > No users should exist by default. > <0> expected but was > <69>. > > 2) Error: > test_user_should_be_created(UserTest): > DataObjects::IntegrityError: Duplicate entry 'testing' for key 2 > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-do-adapter-1.1.0/lib/dm-do-adap > ter/adapter.rb:114:in `execute_non_query' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-do-adapter-1.1.0/lib/dm-do-adap > ter/adapter.rb:114:in `block (2 levels) in create' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-do-adapter-1.1.0/lib/dm-do-adap > ter/adapter.rb:276:in `with_connection' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-do-adapter-1.1.0/lib/dm-do-adap > ter/adapter.rb:113:in `block in create' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-do-adapter-1.1.0/lib/dm-do-adap > ter/adapter.rb:85:in `each' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-do-adapter-1.1.0/lib/dm-do-adap > ter/adapter.rb:85:in `create' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/reposito > ry.rb:146:in `create' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/resource > /state/transient.rb:61:in `create_resource' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/resource > /state/transient.rb:25:in `commit' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/resource > .rb:957:in `_persist' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/resource > .rb:971:in `block in create_with_hooks' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/resource > .rb:968:in `catch' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/resource > .rb:968:in `create_with_hooks' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/resource > .rb:1022:in `save_self' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/resource > .rb:1007:in `block in _save' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/resource > .rb:1223:in `run_once' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/resource > .rb:1006:in `_save' > > /usr/local/rvm/gems/ruby-1.9.2-p180/gems/dm-core-1.1.0/lib/dm-core/resource > .rb:406:in `save' > test/unit/user_test.rb:8:in `block in <class:UserTest>' > > Something really weird is happening. That number <69> goes up by one every > time I run this test. > > Cheers, > > Chris -- You received this message because you are subscribed to the Google Groups "DataMapper" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
