Transaction not rolled back in Functional Test

Using rails 2.3 and MySQL 5.

I have code in a controller that is something like

begin   User.transaction do     user_object.save

    do something that might raise an exeception   end rescue   Log the error   give the user the form to try again end

It works perfectly when the functionality is executed from the browser post. The user is not in the db when the exception is raised.

However, when I run my functional test this the I do a user.find_by_name after the post is executed and it comes back with the user (should come back nil).

I see the exception logged properly but the transaction just is not rolled back.

Is this a known issue? Have something to do with the transaction created to reset fixture data?

Thanks in advance

However, when I run my functional test this the I do a user.find_by_name after the post is executed and it comes back with the user (should come back nil).

I see the exception logged properly but the transaction just is not rolled back.

Is this a known issue? Have something to do with the transaction created to reset fixture data?

Tests are special, because each test already runs within a transaction. In rails 2.3 Active Record should be using savepoints as a substitute for actual nested transactions - do your logs show that happening?

Fred

Frederick Cheung wrote:

Delete the log file then run just that test. Then you will see what happened.

Colin

Colin Law wrote: