Yeah, that worked for me, thanks. And for whatever reason nesting was part of the problem, but if I put it all in one top-level describe with the examples below it worked fine.
FH On Wed, May 6, 2009 at 2:42 PM, Nicholas Van Weerdenburg <vanwe...@gmail.com> wrote: > The rails code is pretty straightforward: > def uses_transaction(*methods) > �...@uses_transaction = [] unless defined?(@uses_transaction) > �...@uses_transaction.concat methods.map(&:to_s) > end > def uses_transaction?(method) > �...@uses_transaction = [] unless defined?(@uses_transaction) > �...@uses_transaction.include?(method.to_s) > end > end > def run_in_transaction? > use_transactional_fixtures && > !self.class.uses_transaction?(method_name) > end > Works for me in my tests. > uses_transaction "it should do this" > it "should do this" do > puts "runs in transaction=#{self.run_in_transaction?}" > end > runs as expected, providing false when the uses_transaction is set, and true > otherwise (assuming config.use_transactional_fixtures = true). > Regards, > Nick > On Wed, May 6, 2009 at 12:43 PM, Francis Hwang <s...@fhwang.net> wrote: >> >> On Wed, May 6, 2009 at 9:47 AM, Nicholas Van Weerdenburg >> <vanwe...@gmail.com> wrote: >> > As far as I can tell, RSpec simply uses inherited TestCase capabilities >> > for >> > transactions, including use_transactional_fixtures (it's config setting >> > is >> > simply passed on) and likely uses_transaction. >> > I'm guessing you can do something like: >> > >> > uses_transaction :create >> > it "should save message" do >> > ... >> > end >> > >> > At least it gives no exception for me. >> > The TestCase logic is pretty simple- it skips transactional fixtures if >> > the >> > method is in it's array, so I imagine it works. >> > If not, this shoulda ticket talks about the same need, with a patch that >> > integrates it into shoulda contexts. That might give some clues. >> > https://thoughtbot.lighthouseapp.com/projects/5807-shoulda/tickets/97 >> >> Any thoughts on what uses_transaction wants as an argument? I can't >> help but feel like I've tried 10 combinations of ways to do this, and >> there's some 11th way that will be easy but I haven't thought to try. >> >> For context, my code doesn't even use transactions; it's using a 2nd >> DB connection to a slave DB, which will be different in some envs and >> not others. This seems to get tripped up by transactions since the >> master connection makes a change to the DB and the slave connection >> needs to see it right away. (Yes I know in production there are >> latency issues, that's acceptable in this case.) >> >> > BTW- I happened to be watching your RubyConf2008 Testing Heresies talk >> > yesterday. Good talk. >> >> Thanks! >> >> Francis >> _______________________________________________ >> rspec-users mailing list >> rspec-users@rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users > > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users