You need to do that manually. All that fixtures and sweeping stuff is
built into rails for ActiveRecord only. The dm-sweatshop gem is what I
use, different from fixtures but I never used fixtures anyway.

I use this method: https://gist.github.com/964844   but as you said,
it won't work with nested transactions.

You can use the database_cleaner gem as Ian mentioned, you don't have
to use transactions with it. Or you can do DataMapper.auto_migrate! in
your setup method. Not sure why it isn't working for you, make sure
you followed the setup stuff in the dm-rails readme.

There is no rake db:test:automigrate but you can just use env
variables like normal: RAILS_ENV=test rake db:automigrate (etc)

On May 10, 7:10 am, Chris Corbyn <[email protected]> wrote:
> So, manually wiping my test database now just means that the tests fail 
> because the tables don't exist.  Calling DataMapper.auto_migrate! in my setup 
> doesn't seem to do anything.  I Googling for "DataMapper Rails unit testing" 
> doesn't seem to turn up anything useful.  There's no section in the 
> documentation that talks about testing.  Would anybody mind sharing their 
> approach to writing unit/functional tests for their Rails 3 applications that 
> use DataMapper?  I'm guessing this just isn't accounted for in the dm-rails 
> project?  Ian, how is your test schema kept up-to-date... do you just use 
> "rake db:automigrate" when you've modified your schema?
>
> There only seems to be a rake task to nuke my development (and as a 
> side-effect my test) database... not one to just reload the test DB.
>
> El 10/05/2011, a las 16:49, Ian MacLeod escribió:
>
>
>
> > I can't directly answer why it's not tearing down your test database,
> > but I've had a lot of luck usinghttps://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 
> > athttp://groups.google.com/group/datamapper?hl=en.

-- 
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.

Reply via email to